๐Ÿ“…2024. 01. 05 20์ผ์ฐจ


๐Ÿ“‚DBMS

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š”๊ฒŒ ์•„๋‹˜
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š”๊ฑฐ์ž„

ํ…Œ์ด๋ธ” -> ์—‘์…€์˜ sheet
๋ฐ์ดํ„ฐ -> ์—‘์…€ sheet์˜ ๋‚ด์šฉ๋“ค

์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค() ์ƒ์„ฑ ๋ฐ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค() ์„ ํƒ

CREATE TABLE article(
	title CHAR(100), # ํ•œ๊ธ€์€ 2~3๋ฐ”์ดํŠธ ๋จน์–ด์„œ 100๊ธ€์ž๊ฐ€ ๋‹ค ์•ˆ๋œ๋‹ค. ์•ŒํŒŒ๋ฒณ์€ 100๊ธ€์ž ๋‹ค ๋“ค์–ด๊ฐ.
	`body` TEXT
);
# ์ž˜ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
SHOW TABLES;

article ํ…Œ์ด๋ธ” ์ƒ์„ฑ(id, regDate, title, body)

CREATE TABLE article (
    id INT,
    regDate DATETIME,
    title VARCHAR(100),
    `body` TEXT
);

article ํ…Œ์ด๋ธ” ์กฐํšŒ(*)

SELECT *
FROM `article`;

article ํ…Œ์ด๋ธ”์— data insert

INSERT INTO article
SET regDate = NOW(),
title = '์ œ๋ชฉ',
`body` = '๋‚ด์šฉ';

id๊ฐ€ 0์ธ ๊ฒƒ ์ค‘์—์„œ 1๊ฐœ๋ฅผ id 1๋กœ ๋ฐ”๊พผ๋‹ค. WHEWE๋กœ ์–ด๋–ค ์ปฌ๋Ÿผ ์ˆ˜์ •ํ•  ์ง€ ์•Œ๋ ค์ค˜์•ผํ•จ.

UPDATE article
SET id = 1
WHERE id = 0
LIMIT 1;

article ํ…Œ์ด๋ธ” ๊ตฌ์กฐํ™•์ธ(desc)

DESC article;

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค() DELETE : ์‚ญ์ œ ์ „ ํ™•์ธ ํ›„ ์ง€์šฐ๋Š”๊ฒŒ ์•ˆ์ „

SELECT *
FROM article
WHERE id = 2;

DELETE 
FROM article
WHERE id = 2;

๐Ÿ“‚mysql ์ œ์•ฝ ์กฐ๊ฑด

NOT NULL

  • NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํ•„๋“œ๋Š” NULL ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.
    ์ฆ‰, ์ด ์ œ์•ฝ ์กฐ๊ฑด์ด ์„ค์ •๋œ ํ•„๋“œ๋Š” ๋ฌด์กฐ๊ฑด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ฌธ๋ฒ•
CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„
(    ํ•„๋“œ์ด๋ฆ„ ํ•„๋“œํƒ€์ž… NOT NULL,
	...
)
  • ex)
CREATE TABLE Test
(    
	ID INT NOT NULL,    
    Name VARCHAR(30),    
    ReserveDate DATE,    
    RoomNum INT
);

UNIQUE

  • UNIQUE ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํ•„๋“œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
    ์ฆ‰, ์ด ์ œ์•ฝ ์กฐ๊ฑด์ด ์„ค์ •๋œ ํ•„๋“œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ฌธ๋ฒ•
1. CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„(    
	ํ•„๋“œ๋ช… ํ•„๋“œํƒ€์ž… UNIQUE,    
    ...
 ) 
2. CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„(    
	ํ•„๋“œ์ด๋ฆ„ ํ•„๋“œํƒ€์ž…,    
    ...,    
    [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„] UNIQUE (ํ•„๋“œ์ด๋ฆ„))

-ex)

CREATE TABLE Test (    
	ID INT UNIQUE,    
    Name VARCHAR(30),    
    ReserveDate DATE,    
    RoomNum INT
);

PRIMARY KEY

  • PRIMARY KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํ•„๋“œ๋Š” NOT NULL๊ณผ UNIQUE ์ œ์•ฝ ์กฐ๊ฑด์˜ ํŠน์ง•์„ ๋ชจ๋‘ ๊ฐ€์ง„๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ด ์ œ์•ฝ์กฐ๊ฑด์ด ์„ค์ •๋œ ํ•„๋“œ๋Š” NULL ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ, ๋˜ํ•œ ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.
  • ์ด๋Ÿฌํ•œ PRIMARY KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ธฐ๋ณธ ํ‚ค๋ผ๊ณ  ํ•œ๋‹ค.
  • ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ฐพ๋„๋ก ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ๋ฌธ๋ฒ•
1. CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„(    
	ํ•„๋“œ์ด๋ฆ„ ํ•„๋“œํƒ€์ž… PRIMARY KEY,    
    ...
 ) 
2. CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„(    
	ํ•„๋“œ์ด๋ฆ„ ํ•„๋“œํƒ€์ž…,    
    ...,    
    [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„] PRIMARY KEY (ํ•„๋“œ์ด๋ฆ„)
 )

-ex)

CREATE TABLE Test (    
	ID INT PRIMARY KEY,    
    Name VARCHAR(30),    
    ReserveDate DATE,    
    RoomNum INT
);

FOREIGN KEY

  • FOREIGN KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•œ ํ•„๋“œ๋ฅผ ์™ธ๋ž˜ ํ‚ค๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ํ•œ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์™ธ๋ž˜ ํ‚ค๊ฐ€ ์„ค์ •๋œ ํ…Œ์ด๋ธ”์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ๊ธฐ์ค€์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•ด์„œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.
  • ์ฆ‰, FOREIGN KEY ์ œ์•ฝ ์กฐ๊ฑด์€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์˜์กดํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • FOREIGN KEY๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ๋Š” ๋ฐ˜๋“œ์‹œ UNIQUE๋‚˜ PRIMARY KEY๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ฌธ๋ฒ•
CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„(    
	ํ•„๋“œ์ด๋ฆ„ ํ•„๋“œํƒ€์ž…,    
    ...,    
    [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„]    FOREIGN KEY (ํ•„๋“œ์ด๋ฆ„)    REFERENCES ํ…Œ์ด๋ธ”์ด๋ฆ„ (ํ•„๋“œ์ด๋ฆ„)
)

-ex)

CREATE TABLE Test2(    
	ID INT,    
    ParentID INT,    
    FOREIGN KEY (ParentID)    
    REFERENCES Test1(ID) ON UPDATE CASCADE
);

DEFAULT

  • DEFAULT ์ œ์•ฝ ์กฐ๊ฑด์€ ํ•ด๋‹น ํ•„๋“œ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  • ๋งŒ์•ฝ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ํ•ด๋‹น ํ•„๋“œ ๊ฐ’์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด, ์ž๋™์œผ๋กœ ์„ค์ •๋œ ๊ธฐ๋ณธ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
  • ๋ฌธ๋ฒ•
CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„(    
	ํ•„๋“œ์ด๋ฆ„ ํ•„๋“œํƒ€์ž… DEFAULT ๊ธฐ๋ณธ๊ฐ’,    
    ...
)

-ex)

CREATE TABLE Test(    
	ID INT,    
    Name VARCHAR(30) DEFAULT 'Anonymous',    
    ReserveDate DATE,    
    RoomNum INT
);

๐Ÿ“‚JDBC

  • ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž๋ฐ” API์ด๋‹ค.

JDBC_AM ์‹œ์ž‘

๐Ÿ”“ JDBC ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCConnTest {
	public static void main(String[] args) {
		Connection conn = null;

		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://127.0.0.1:3306/JDBC_AM?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul&useOldAliasMetadataBehavior=true&zeroDateTimeNehavior=convertToNull";

			conn = DriverManager.getConnection(url, "root", "");
			System.out.println("์—ฐ๊ฒฐ ์„ฑ๊ณต!");

		} catch (ClassNotFoundException e) {
			System.out.println("๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ์‹คํŒจ");
		} catch (SQLException e) {
			System.out.println("์—๋Ÿฌ : " + e);
		} finally {
			try {
				if (conn != null && !conn.isClosed()) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}
}

๐Ÿ”” TODO

  • mysql ๋ฐ์ดํ„ฐ ํƒ€์ž…
  • mysql ์ œ์•ฝ์กฐ๊ฑด
  • JDBC ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋”ฐ๋ผํ•ด๋ณด๊ธฐ

๐Ÿ’ก ๋А๋‚€์ 

  • JDBC ์‚ฌ์šฉ๋ฒ•์„ ์ž˜ ์ตํ˜€์•ผ๋  ๊ฒƒ ๊ฐ™๋‹ค... ์•„์ง์€ ์–ด๋ ต๋‹ค... ์ฃผ๋ง๋™์•ˆ ๋ถ€์กฑํ•œ ๋‚ด์šฉ์„ ์ข€ ๋จธ๋ฆฌ์— ์ฑ„์›Œ๋ณด๋„๋ก ํ•˜์ž!

0๊ฐœ์˜ ๋Œ“๊ธ€