์ž๊ฒฉ์ฆ/SQLD

[SQLD] 3. SQL ๊ธฐ๋ณธ - 1

hello_u 2023. 3. 14. 16:16



SQL ๋ฌธ์žฅ๋“ค์˜ ์ข…๋ฅ˜


๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML) : SELECT , INSERT , UPDATE , DELETE

๋น„์ ˆ์ฐจ์  : ๋ฌด์Šจ(what) ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š”์ง€๋งŒ ๋ช…์„ธ
์ ˆ์ฐจ์  : ์–ด๋–ป๊ฒŒ(how) ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…์„ธ

๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL) : CREATE , ALTER , DROP , RENAME

๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL) : GRANT , REVOKE

ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด(TCL) : COMMIT , ROLLBACK



PRIMARY KEY ์„ค์ •

CREATE ๋ฌธ

 

ALTER ๋ฌธ



ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ •์˜ ๋ณ€๊ฒฝ (ALTER)


[Oracle]
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ( ์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• NOT NULL )

[SQL Server]
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ALTER COLUMN ์ปฌ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• NOT NULL;

SQLServer ์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ๋™์‹œ์— ์ˆ˜์ •ํ•˜๋Š” ๊ตฌ๋ฌธ ์ง€์› X
๊ด„ํ˜ธ ์‚ฌ์šฉ X
NOT NULL ์ง€์ •ํ•ด์ค˜์•ผํ•จ


ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์‚ญ์ œ (ALTER DROP)


ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์ปฌ๋Ÿผ๋ช…

ALTER TABLE EMP DROP COLIMN COMM;


ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œ (DELETE)


DELETE : ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด




foreign key ๋กœ ๋ฌถ์—ฌ ์žˆ์„ ๊ฒฝ์šฐ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€์šฐ๋ฉด ์ •๋ณด๊ฐ€ ๊ผฌ์ด๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ

์—ฐ๊ฒฐ๋œ ์ž์‹ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ์ง€์šฐ๊ณ  ๋‚˜๋ฉด ๋ถ€๋ชจ ์ชฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ


ON DELETE CASCADE


foreign key ๋กœ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋“ค์ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ

๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—์„œ row๋ฅผ ์‚ญ์ œํ•  ๊ฒฝ์šฐ ์—ฐ๊ฒฐ๋œ ์ž์‹ํ…Œ์ด๋ธ”์˜ row ๊ฐ€ ํ•จ๊ป˜ ์‚ญ์ œ

์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ง€์šธ ์ˆ˜ ์žˆ์Œ



ON DELETE SET NULL


๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด , ์ฐธ์กฐ๋ฅผ ํ•˜๋˜ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์ด null ๋กœ ์„ธํŒ…

REFERENCES ๊ณ ๊ฐ (๊ณ ๊ฐID) ON DELETE SET NULL;

๊ณ ๊ฐ ํ…Œ์ด๋ธ”์˜ ๊ณ ๊ฐID ‘0002’๋ฅผ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•  ๋•Œ
SQL ์ œ์•ฝ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ณ ๊ฐ ID๋ฅผ NULL ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ,
์ฃผ๋ฌธ ํ…Œ์ด๋ธ” ๊ณ ๊ฐ ID ์ปฌ๋Ÿผ์˜ NOT NULL ์ œ์•ฝ์กฐ๊ฑด์— ์˜ํ•ด ์‹คํŒจํ•œ๋‹ค.


ON DELETE RESTRICT


์ž์‹ ํ…Œ์ด๋ธ”์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ , ๋ฐ์ดํ„ฐ ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค.

๋ถ€๋ชจ ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ , ์ž์‹ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ


์ œ์•ฝ์กฐ๊ฑด์˜ ์ข…๋ฅ˜(CONSTRAINT)


NOT NULL : null ๊ฐ’ ์ž…๋ ฅ ๊ธˆ์ง€
UNIQUE : ์ค‘๋ณต๊ฐ’ ์ž…๋ ฅ ๊ธˆ์ง€ , null ๊ฐ€๋Šฅ
PRIMARY KEY : not null + unique
FOREIGN KEY : ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์กฐํšŒ
CHECK : ์กฐ๊ฑด์œผ๋กœ ์„ค์ •๋œ ๊ฐ’๋งŒ ์ž…๋ ฅ ํ—ˆ์šฉ


์ธ๋ฑ์Šค ์ƒ์„ฑ (CREATE INDEX)


CREATE INDEX ์ธ๋ฑ์Šค๋ช… ON ํ…Œ์ด๋ธ”๋ช… (์ปฌ๋Ÿผ๋ช…)

CREATE INDEX IDX_EMP_01 ON EMP (JOIN_DATE);


๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ (COUNT)


COUNT : ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ

NULL ์ธ ๋ฐ์ดํ„ฐ๋Š” ์ œ์™ธํ•˜๊ณ  ๊ณ„์‚ฐํ•œ๋‹ค.

์ „์ฒด ํ–‰ ๊ฐฏ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ
SELECT COUNT(*) FROM ํ…Œ์ด๋ธ”;

์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ
SLECET COUNT(์ปฌ๋Ÿผ) FROM ํ…Œ์ด๋ธ”;


ํ…Œ์ด๋ธ”๋ช… ๋ณ€๊ฒฝ (RENAME)


RENAME old_name TO new_name ;

ALTER TABLE old_name RENAME new_name;

RENAME ์€ ๋‹ค์ˆ˜์˜ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ์Œ



ํ…Œ์ด๋ธ”์— ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€ (INSERT)


ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€

INSERT INTO ํ…Œ์ด๋ธ”์ด๋ฆ„(ํ•„๋“œ1,ํ•„๋“œ2,ํ•„๋“œ3) VALUES(๋ฐ์ดํ„ฐ๊ฐ’1,๋ฐ์ดํ„ฐ๊ฐ’2,๋ฐ์ดํ„ฐ๊ฐ’3)

ํ•„๋“œ ์ด๋ฆ„ ์ƒ๋žต ๊ฐ€๋Šฅ - ์Šคํ‚ค๋งˆ์™€ ๊ฐ™์€ ์ˆœ์„œ๋Œ€๋กœ ์ž๋™ ๋Œ€์ž…


์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ • ( UPDATE SET)


UPDATE ํ…Œ์ด๋ธ”๋ช… SET ์—ด = ๋ณ€๊ฒฝํ•  ๊ฐ’ WHERE ์กฐ๊ฑด

UPDATE BOARD SET USE_YN = ‘N’ WHERE BOARD_ID = ‘1’;

์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์—ด ์ „์ฒด๊ฐ€ ๋ณ€๊ฒฝํ•  ๊ฐ’์œผ๋กœ UPDATE ๋œ๋‹ค.


WHERE ์ ˆ์˜ IN ์‚ฌ์šฉ๋ฒ•

WHERE ์ผ์น˜ํ•˜๊ธธ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ๋ช… IN ( ์กฐ๊ฑด1, ์กฐ๊ฑด2, ์กฐ๊ฑด3 .. )

OR์กฐ๊ฑด์œผ๋กœ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค.


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

SELECT ์ปฌ๋Ÿผ๋ช…1 , ์ปฌ๋Ÿผ๋ช…2 FROM ํ…Œ์ด๋ธ”๋ช…


as๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ„์นญ ์‚ฌ์šฉํ•˜๊ธฐ


SELECT empName as ์‚ฌ์›์ด๋ฆ„ , job as ์ง๊ธ‰ , salary as ์›”๊ธ‰ FROM emplyee;

as๋Š” ์ƒ๋žต๊ฐ€๋Šฅ


* ์• ์Šคํ„ฐ๋ฆฌ์Šคํฌ(*)


SELECT * FROM ํ…Œ์ด๋ธ”๋ช…

๋ชจ๋“  ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

SELECT * FROM employee;
employee ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์นผ๋Ÿผ์— ๋Œ€ํ•œ ๊ฐ’์„  ์ถœ๋ ฅํ•œ๋‹ค.


DISTINCT

์ค‘๋ณต๋œ ๊ฒฝ์šฐ 1๊ฑด๋งŒ ์ถœ๋ ฅ



ํ…Œ์ด๋ธ” ์‚ญ์ œ (DROP TABLE)


ํ…Œ์ด๋ธ” ์ž์ฒด ์‚ญ์ œ ๋ช…๋ น์–ด

ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ๋ชจ๋‘ ์ง€์›Œ์ง€๋ฉฐ , ์ธ๋ฑ์Šค๋„ ์‚ญ์ œ๋จ

DROP TABLE ํ…Œ์ด๋ธ”๋ช…;


ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์ „๋ถ€ ์‚ญ์ œ (TRUNCATE)

ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋˜์ง€๋งŒ ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ์ง€์›Œ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ TRUNCATE ๋œ๋‹ค.

TRUNCATE TABLE ํ…Œ์ด๋ธ”๋ช…;



TRUNCATE ๋ช…๋ น์–ด๋Š” UNDO๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผ ๋ฐ์ดํ„ฐ๋Ÿ‰ ์‚ญ์ œ์‹œ DELETE ๋ณด๋‹ค ๋น ๋ฅด๋‹ค. 

 

DROP , TRUNCATE - Auto Commit

 

DELETE - ์‚ฌ์šฉ์ž Commit / Commit ์ด์ „์— Rollback ๊ฐ€๋Šฅ 


TRUNCATE ๊ณผ DROP ์€ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๋Š”๋‹ค .