๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ/DBMS

SQL ์ œ์•ฝ์กฐ๊ฑด (PK, FK, Unique, Check, Default)

by HanaV 2023. 4. 10.
728x90

1. primary key ์ œ์•ฝ์กฐ๊ฑด

PK๋Š” ํ•œ ํ–‰์„์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ!

primary key๋Š” null๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ not null์„ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. 
๊ทธ๋ž˜์„œ ์–ด๋–ค db๋Š” not null์„ ์•ˆ์ ์–ด๋„ ๋‹น์—ฐํžˆ null๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์œผ๋‹ˆ not null๋กœ ์ธ์‹ํ•˜๋Š” ๊ฒŒ ์žˆ๊ณ , ๋ฌธ๋ฒ•์ƒ ์˜ค๋ฅ˜๋ผ๊ณ  ์ธ์‹ํ•˜๋Š” ๊ฒƒ๋„ ์žˆ์œผ๋‹ˆ ์“ฐ๋Š” ๊ฑธ ์Šต๊ด€ํ™”ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.


์„ค์ •๋ฐฉ๋ฒ• 1

CREATE TABLE member 
( mem_id  		CHAR(8) NOT NULL PRIMARY KEY,
  mem_name    	VARCHAR(10) NOT NULL, 
	.
    .
    .
);

์„ค์ •๋ฐฉ๋ฒ• 2

ALTER TABLE member
	ADD CONSTRAINT
    PRIMARY KEY (mem_id);

 

2. foreign key ์ œ์•ฝ์กฐ๊ฑด

FK๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์ฐธ์กฐํ•ด์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ(๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€)์„ ์œ ์ง€ํ•จ!

๋งˆ๋” ํ…Œ์ด๋ธ”์˜ ์—ด์ด PK ๋˜๋Š” Unique๊ฐ€ ์•„๋‹ˆ๋ฉด ์„ค์ •์ด ์•ˆ ๋œ๋‹ค. ๊ผญ PK ๋˜๋Š” Unique์ธ ์—ด์„ FK๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

์„ค์ •๋ฐฉ๋ฒ• 1

CREATE TABLE buy
(  num 		INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
   mem_id  	CHAR(8) NOT NULL, 
	.
    .
    .
   FOREIGN KEY (mem_id) REFERENCES member(mem_id)
);

์„ค์ •๋ฐฉ๋ฒ• 2

ALTER TABLE member
	ADD CONSTRAINT
    FOREIGN KEY (mem_id)
    REFERENCES member(mem_id);

 

3. unique ์ œ์•ฝ์กฐ๊ฑด

primary ํ‚ค์™€ ๋น„์Šทํ•˜์ง€๋งŒ null๊ฐ’์„ ํ—ˆ์šฉํ•œ๋‹ค. PK์™€ ๋™์ผํ•˜๊ฒŒ ์ค‘๋ณต๋„ ์•ˆ๋˜๊ณ  null๊ณผ not null์„ ์„ค์ •ํ•ด์„œ ๊ฐ€๋Šฅํ•˜๋‹ค.

์„ค์ •๋ฐฉ๋ฒ•

CREATE TABLE member 
( mem_id  		CHAR(8) NOT NULL PRIMARY KEY,
  mem_name    	VARCHAR(10) NOT NULL, 
	.
    .
  email         CHAR(30) UNIQUE
);

 

4. check ์ œ์•ฝ์กฐ๊ฑด

์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ฒ€ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์„ค์ •๋ฐฉ๋ฒ• 1

CREATE TABLE member 
( mem_id  		CHAR(8) NOT NULL PRIMARY KEY,
	.
	.
    .
  height         TINYINT UNSIGNED CHECK (height >= 100)
);

์„ค์ •๋ฐฉ๋ฒ• 2

ALTER TABLE member
	ADD CONSTRAINT
    CHECK (height >= 100);

 

5. default

๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์„ ๋•Œ ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋  ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•ด ๋†“๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์„ค์ •๋ฐฉ๋ฒ• 1

CREATE TABLE member 
( mem_id  		CHAR(8) NOT NULL PRIMARY KEY,
	.
	.
    .
  country       CHAR(30) DEFAULT "KOREA" 
);

์„ค์ •๋ฐฉ๋ฒ• 2

ALTER TABLE member
	ALTER COLUMN country SET DEFAULT 'KOREA';

 

 

 

728x90

"); wcs_do();