YeaLow
๐Ÿ” 1์žฅ SQL ๊ธฐ๋ณธ ๐Ÿ”


๐ŸŽˆSQL ๋ฌธ์žฅ ์ข…๋ฅ˜๐ŸŽˆ

๋ช…๋ น์–ด ์ข…๋ฅ˜ ๋ช…๋ น์–ด ์„ค๋ช…
๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML)

SELECT
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋“ค์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด.
RETRIEVE๋ผ๊ณ ๋„ ํ•จ.
INSERT
UPDATE
DELETE
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด ํ…Œ์ด๋ธ”์— ๋“ค์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋ณ€ํ˜•์„ ๊ฐ€ํ•˜๋Š” ์ข…๋ฅ˜์˜ ๋ช…๋ น์–ด.
 
๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL)
CREATE
ALTER
DROP
RENAME
ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด.
์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๊ทธ๋ฆฌ๊ณ  ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด.
 
๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL)
GRANT
REVOKE
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒํ•œ์„ ์ฃผ๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ๋ช…๋ น์–ด.
 
ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด(TCL)
COMMIT
ROLLBACK
๋…ผ๋ฆฌ์ ์ธ ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋ฌถ์–ด์„œ DML์— ์˜ํ•ด ์กฐ์ž‘๋œ ๊ฒฐ๊ณผ๋ฅผ ์ž‘์—…๋‹จ์œ„(ํŠธ๋žœ์žญ์…˜) ๋ณ„๋กœ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋งํ•จ.
 

๐ŸŽˆDML๐ŸŽˆ

โ€‹

๋น„์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด (Nonprocedural DML) : ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์Šจ(What) ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ์ง€๋งŒ์„ ๋ช…์„ธํ•จ. - As-Is

์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด (Procedural DML) : ์–ด๋–ป๊ฒŒ(How) ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…์„ธํ•จ. - To-Be

์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด์˜ ์˜ˆ ( PL/SQL(์˜ค๋ผํด) , T-SQL(SQL Server) ๋“ฑ )

โ€‹

ํ˜ธ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ ์†์— ์‚ฝ์ž…๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” DML ๋ช…๋ น์–ด๋“ค์„ ๋ฐ์ดํ„ฐ ๋ถ€์†์–ด(Data Sub Language)๋ผ๊ณ  ํ•จ.


๐Ÿ“ŒPK ์ง€์ •ํ•˜๋Š” ALTER TABLE ๋ฌธ์žฅ

 

ALTER TABLE table_name ADD [CONSTRAINT constraint_name] PRIMARY KEY (column_name);

PK = UNIQUE & NOT NULL์˜ ํŠน์ง•.

UNIQUE - ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์—†์ง€๋งŒ NULL ์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•จ.


๐Ÿ“Œ์™ธ๋ž˜ํ‚ค (FK, FOREIGN KEY)

- ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์„ค์ • ๊ฐ€๋Šฅ

- NULL๊ฐ’ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

- ํ•œ ํ…Œ์ด๋ธ” ๋‚ด์— ์—ฌ๋Ÿฌ๊ฐœ ์กด์žฌ ๊ฐ€๋Šฅ

- ์™ธ๋ž˜ํ‚ค ๊ฐ’์€ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ


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

 

#Oracle
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY
(์ปฌ๋Ÿผ๋ช…1 ๋ฐ์ดํ„ฐ์œ ํ˜• [DEFAULT ์‹] [NOT NULL ๋ถ„๋ฅ˜],
์ปฌ๋Ÿผ๋ช…2 ๋ฐ์ดํ„ฐ์œ ํ˜• [DEFAULT ์‹] [NOT NULL ๋ถ„๋ฅ˜], ...);

 

#SQL server
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ALTER COLUMN ์ปฌ๋Ÿผ๋ช…1 ๋ฐ์ดํ„ฐ์œ ํ˜• [DEFAULT ์‹] [NOT NULL ๋ถ„๋ฅ˜];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ALTER COLUMN ์ปฌ๋Ÿผ๋ช…2 ๋ฐ์ดํ„ฐ์œ ํ˜• [DEFAULT ์‹] [NOT NULL ๋ถ„๋ฅ˜];

SQLServer

โ€‹

- ๊ด„ํ˜ธ์‚ฌ์šฉ x

- ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ๋™์‹œ์— ์ˆ˜์ •ํ•˜๋Š” ๊ตฌ๋ฌธ ์ง€์› x

- NOT NULL ๊ตฌ๋ฌธ ์ง€์ •ํ•˜์ง€ ์•Š์„ ์‹œ ์ œ์•ฝ์กฐ๊ฑด Default๋Š” NULL


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

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

โ€‹

๐Ÿ“ŒRENAME

RENAME ๋ฐ”๊ฟ€ ํ…Œ์ด๋ธ”๋ช… TO ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ํ…Œ์ด๋ธ” ๋ช…โ€‹

๐Ÿ“Œ์ฐธ์กฐ๋™์ž‘(Referential Action)

โ€‹

1. Delete(Modify) Action

- โ€‹Cascadeโ€‹ : Master ์‚ญ์ œ ์‹œ Child ๊ฐ™์ด ์‚ญ์ œ

- Set Null : Master ์‚ญ์ œ ์‹œ Child ํ•ด๋‹น ํ•„๋“œ Null

- Set Default : Master ์‚ญ์ œ ์‹œ Child ํ•ด๋‹น ํ•„๋“œ Default ๊ฐ’์œผ๋กœ ์„ค์ •

- Restrict : Child ํ…Œ์ด๋ธ”์— PK ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๋งŒ Master ์‚ญ์ œ ํ—ˆ์šฉ

- No Action : ์ฐธ์กฐ๋ฌด๊ฒฐ์„ฑ์„ ์‚ญ์ œ / ์ˆ˜์ • ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์Œ

โ€‹

2. Insert Action

- Automatic : Master ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Master PK๋ฅผ ์ƒ์„ฑ ํ›„ Child ์ž…๋ ฅ

- Set Null : Master ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Child ์™ธ๋ถ€ํ‚ค๋ฅผ Null ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ

- Set Default : Master ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Child ์™ธ๋ถ€ํ‚ค๋ฅผ ์ง€์ •๋œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ž…๋ ฅ

- Dependent: Master ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์กด์žฌํ•  ๋•Œ๋งŒ Child ์ž…๋ ฅ ํ—ˆ์šฉ

- No Action : ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์ž…๋ ฅ ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์Œ


๐Ÿ“ŒTRUNCATE / DROP / DELETE

โ€‹

TRUNCATE - ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ์‚ญ์ œ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ๋“ค์–ด์žˆ๋˜ ๋ชจ๋“  ํ–‰๋“ค์ด ์ œ๊ฑฐ๋˜์–ด ์ €์žฅ ๊ณต๊ฐ„์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ œํ•จ

DROP - ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•จ

๐Ÿ‘‰ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š์Œ

โ€‹

DELETE - ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๊ฐ€๋Šฅ, ๋กœ๊ทธ๋ฅผ ๋‚จ๊น€. DELETE์— ์กฐ๊ฑด์ด ์—†์œผ๋ฉด TRUNCATE์™€ ๋™์ผํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ ๋˜๊ณ  ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ๋งŒ ๋‚จ์Œ


DROP
TRUNCATE
DELETE
DDL
DDL(์ผ๋ถ€ DML ์„ฑ๊ฒฉ ๊ฐ€์ง)
DML
Rollback ๋ถˆ๊ฐ€๋Šฅ
Commit ์ด์ „ Rollback ๊ฐ€๋Šฅ
Auto Commit
์‚ฌ์šฉ์ž Commit
ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ Storage๋ฅผ ๋ชจ๋‘ Release
ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ Storage์ค‘ ์ตœ์ดˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ํ• ๋‹น๋œ Storage๋งŒ ๋‚จ๊ธฐ๊ณ  Release
๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ Deleteํ•ด๋„ ์‚ฌ์šฉํ–ˆ๋˜ Storage๋Š” Release๋˜์ง€ ์•Š์Œ
ํ…Œ์ด๋ธ”์˜ ์ •์˜ ์ž์ฒด๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•จ
ํ…Œ์ด๋ธ”์„ ์ตœ์ดˆ ์ƒ์„ฑ๋œ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ฌ
๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œ
๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š์Œ
๋กœ๊ทธ๋ฅผ ๋‚จ๊น€

๐Ÿ“ŒSELECT [ALL/DISTINCT]

โ€‹

ALL - ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด๋„ ๋ชจ๋‘ ์ถœ๋ ฅ. Defualt๊ฐ’์ž„.

DISTINCT - ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ 1๊ฑด์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์„œ ์ถœ๋ ฅ.


๐Ÿ“ŒํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ(ACID)๐Ÿ“Œ

ํŠน์„ฑ
์„ค๋ช…
์›์ž์„ฑ
(Atomicity)
ํŠธ๋žœ์žญ์…˜์—์„œ ์ •์˜๋œ ์—ฐ์‚ฐ๋“ค์€ ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋“  ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•จ
(All or Nothing)
์ผ๊ด€์„ฑ
(Consistency)
ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰ ๋˜๊ธฐ ์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์šฉ์ด ์ž˜๋ชป ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด
ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋œ ์ดํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์— ์ž˜๋ชป์ด ์žˆ์œผ๋ฉด ์•ˆ๋จ
๊ณ ๋ฆฝ์„ฑ
(Isolation)
ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ๋จ
์ง€์†์„ฑ
(Durability)
ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ทธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ

๐Ÿ“ŒํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๊ฒฉ๋ฆฌ์„ฑ์ด ๋‚ฎ์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ 

โ€‹

  1. Dirty Read : ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์ง€๋งŒ ์•„์ง ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ.
  2. Non-Repeatable Read : ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘๋ฒˆ ์ˆ˜ํ–‰ ํ–ˆ๋Š”๋ฐ, ๊ทธ ์‚ฌ์ด์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ’์„ ์ˆ˜์ • ๋˜๋Š” ์‚ญ์ œํ•˜๋Š” ๋ฐ”๋žŒ์— ๋‘ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ
  3. Phantom Read : ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ, ์ฒซ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ์—†๋˜ ์œ ๋ น ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‘๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ

โ€‹

ORACLE์—์„œ๋Š” DDL ๋ฌธ์žฅ ์ˆ˜ํ–‰ ํ›„ ์ž๋™์œผ๋กœ COMMIT์„ ์ˆ˜ํ–‰ํ•จ

SQL Server์—์„œ๋Š” DDL ๋ฌธ์žฅ ์ˆ˜ํ–‰ ํ›„ COMMIT ์ˆ˜ํ–‰ X


๐Ÿ“ŒNULL

โ€‹

NULL์˜ ์—ฐ์‚ฐ

- NULL ๊ฐ’๊ณผ์˜ ์‚ฌ์น™์—ฐ์‚ฐ์€ NULL ๊ฐ’์„ ๋ฆฌํ„ด

- NULL ๊ฐ’๊ณผ์˜ ๋น„๊ต์—ฐ์‚ฐ์€ FALSE๋ฅผ ๋ฆฌํ„ด

- ํŠน์ • ๊ฐ’๋ณด๋‹ค ํฌ๋‹ค, ์ ๋‹ค๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์Œ

โ€‹

NULL ๊ฐ’์„ ์กฐ๊ฑด์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ IS NULL / IS NOT NULL์ด๋ž€ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

โ€‹

NULL์˜ ํŠน์„ฑ

- NULL์€ ์•„์ง ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ’์œผ๋กœ 0๋˜๋Š” ๊ณต๋ฐฑ๊ณผ ๋‹ค๋ฆ„

- ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ NOT NULL๋˜๋Š” PRIMARY KEY๋กœ ์ •์˜๋˜์ง€ ์•Š์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ NULL๊ฐ’ ํฌํ•จ ๊ฐ€๋Šฅ

- NULL์„ ํฌํ•จํ•˜๋Š” ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ ๊ฐ’๋„ NULL

โ€‹

๋‹จ์ผํ–‰ NULL ๊ด€๋ จ ํ•จ์ˆ˜ ์ข…๋ฅ˜

์ผ๋ฐ˜ํ˜• ํ•จ์ˆ˜
ํ•จ์ˆ˜ ์„ค๋ช…
NVL(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2) - ORACLEํ•จ์ˆ˜
ISNULL(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2) - SQL Serverํ•จ์ˆ˜
ํ‘œํ˜„์‹1์˜ ๊ฒฐ๊ณผ๊ฐ’์ด NULL์ด๋ฉด ํ‘œํ˜„์‹2์˜ ๊ฐ’์„ ์ถœ๋ ฅ.
๋‹จ, ํ‘œํ˜„์‹1๊ณผ ํ‘œํ˜„์‹2์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ฐ™์•„์•ผ ํ•จ.
NULLIF(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2)
ํ‘œํ˜„์‹1์ด ํ‘œํ˜„์‹2์™€ ๊ฐ™์œผ๋ฉด NULL์„, ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ‘œํ˜„์‹1์„ ๋ฆฌํ„ด.
COALESCE(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2, ...)
์ž„์˜์˜ ๊ฐœ์ˆ˜ ํ‘œํ˜„์‹์—์„œ NULL์ด ์•„๋‹Œ ์ตœ์ดˆ์˜ ํ‘œํ˜„์‹์„ ๋‚˜ํƒ€๋ƒ„.
๋ชจ๋“  ํ‘œํ˜„์‹์ด NULL์ด๋ผ๋ฉด NULL์„ ๋ฆฌํ„ด.
์ง‘๊ณ„ํ•จ์ˆ˜ COUNT(ํ‘œํ˜„์‹), SUM, AVG๋Š” ํ‘œํ˜„์‹์˜ NULL๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•จ
๋‹จ, COUNT(*)์€ NULL๊ฐ’์„ ํฌํ•จํ•œ ํ–‰์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅ

์ง‘๊ณ„ํ•จ์ˆ˜ COUNT(ํ‘œํ˜„์‹), SUM, AVG๋Š” ํ‘œํ˜„์‹์˜ NULL๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•จ

๋‹จ, COUNT(*)์€ NULL๊ฐ’์„ ํฌํ•จํ•œ ํ–‰์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅ


ORACLE์—์„œ๋Š” ''์œผ๋กœ INSERTํ•˜๋Š” ๊ฒฝ์šฐ NULL๋กœ ์ž…๋ ฅ๋˜์ง€๋งŒ SQL Server๋Š” '' ๊ทธ๋Œ€๋กœ ์ž…๋ ฅ๋จ

๐Ÿ‘‰ ๋ฐ์ดํ„ฐ ์กฐํšŒ์‹œ ORACLE์—์„œ๋Š” ์ปฌ๋Ÿผ๋ช… IS NULL ์กฐ๊ฑด์œผ๋กœ ์กฐํšŒํ•˜๊ณ , SQL Server์—์„œ๋Š” ์ปฌ๋Ÿผ๋ช… = ''๋กœ ์กฐํšŒํ•ด์•ผํ•จ

โ€‹

ORACLE์—์„œ๋Š” NULL๊ฐ’์„ ๊ฐ€์žฅ ํฐ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ์—์„œ ์ •๋ ฌํ–ˆ์„ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜ํƒ€๋‚จ.

SQL Server์—์„œ๋Š” NULL๊ฐ’์„ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ์—์„œ ์ •๋ ฌํ–ˆ์„ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜ํƒ€๋‚จ.


๐Ÿ“Œํ•จ์ˆ˜

  1. ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜
  2. ๋‚ด์žฅํ•จ์ˆ˜

- ๋‹จ์ผํ–‰ํ•จ์ˆ˜ : ์ถ”์ถœ๋˜๋Š” ๊ฐ ํ–‰๋งˆ๋‹ค ์ž‘์—…์„ ์ˆ˜ํ–‰. ๊ฐ ํ–‰๋งˆ๋‹ค ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜. SELECT, WHERE, ORDER BY, UPDATE์˜ SET์ ˆ์— ์‚ฌ์šฉ๊ฐ€๋Šฅ

๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ๊ฐ€๋Šฅ, ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ

- ๋‹ค์ค‘ํ–‰ ํ•จ์ˆ˜ : ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ–‰์ด ์ž…๋ ฅ๋˜์–ด ํ•˜๋‚˜์˜ ๊ฐ’ ๋ฐ˜ํ™˜. ์ง‘๊ณ„ํ•จ์ˆ˜/๊ทธ๋ฃนํ•จ์ˆ˜/์œˆ๋„์šฐํ•จ์ˆ˜


๐Ÿ“ŒDATE ํƒ€์ž…

โ€‹

ORACLE์€ ์„ธ๊ธฐ, ๋…„, ์›”, ์ผ, ์‹œ, ๋ถ„, ์ดˆ ํ˜•์‹์˜ ๋‚ ์งœ๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์ˆซ์ž ํ˜•ํƒœ๋กœ ์ €์žฅ → ์—ฐ์‚ฐ๊ฐ€๋Šฅ

DATE + NUMBER , DATE - NUMBER : ์—ฌ๊ธฐ์„œ NUMBER์€ ์ผ์ˆ˜๋ฅผ ์˜๋ฏธํ•จ

โ€‹

1์ผ - SYSDATE + 1

1์‹œ๊ฐ„ - SYSDATE + 1/24

10๋ถ„ - SYSDATE + 1/24/6

1๋ถ„ - SYSDATE + 1/24/60


SEARCHED_CASE_EXPRESSION → SIMPLE_CASE_EXPRESSION ์˜ˆ์‹œ

CASE WHEN LOC='NEW YORK' THEN 'EAST' → CASE LOC WHEN 'NEW YORK' THEN 'EAST'


๐Ÿ“ŒSELECT ๋ฌธ์žฅ (GROUP ํ•จ์ˆ˜, GROUP BY์ ˆ, HAVING ์ ˆ, ORDER BY์ ˆ)

โ€‹

- SELECT์‹œ HAVING์ ˆ์—์„œ ๊ทธ๋ฃนํ•จ์ˆ˜์™€ ๊ด€๋ จ๋œ ์กฐ๊ฑด์ด๋ผ๋ฉด ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๋“  ์กฐ๊ฑด์œผ๋กœ ํ‘œํ˜„๋จ์— ์˜ค๋ฅ˜๊ฐ€ ์—†์Œ.

- SELECT์‹œ ๊ทธ๋ฃนํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ์ปฌ๋Ÿผ์€ GROUP BY์ ˆ์—์„œ ๋‚˜ํƒ€๋‚˜์•ผํ•จ.

HAVING์ ˆ์—์„œ ๊ทธ๋ฃนํ•จ์ˆ˜์— ๋Œ€ํ•œ ์กฐ๊ฑด์ด ์•„๋‹Œ ๊ฒฝ์šฐ GROUP BY์ ˆ์—์„œ ์‚ฌ์šฉ๋œ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์กฐ๊ฑด์ด ๋  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์—†์Œ.

- ์ค‘์ฒฉ ๊ทธ๋ฃน ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ GROUP BY์ ˆ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•จ.

- ORDER BY์ ˆ์€ GROUP BY์ ˆ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ทธ ๊ธฐ์ค€์ด ๋˜๋Š” ์ปฌ๋Ÿผ๋“ค ๋˜๋Š” ๊ทธ๋ฃน ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ

- GROUP BY ์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์ด ๊ฐ–๋Š” ์ปฌ๋Ÿผ์ด๋ผ๋ฉด ์กฐํšŒ list๊ฐ€ ์•„๋‹ˆ์–ด๋„ ๊ฐ€๋Šฅ

โ€‹

SELECT ๋ฌธ์žฅ ์‹คํ–‰ ์ˆœ์„œ ๐Ÿ‘‰ FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

  1. FROM : ๋ฐœ์ทŒ ๋Œ€์ƒ ํ…Œ์ด๋ธ” ์ฐธ์กฐ
  2. WHERE : ๋ฐœ์ทŒ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์€ ์ œ๊ฑฐ
  3. GROUP BY : ํ–‰๋“ค์„ ์†Œ๊ทธ๋ฃนํ™” ํ•จ
  4. HAVING : ๊ทธ๋ฃนํ•‘ ๋œ ๊ฐ’์˜ ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒƒ๋งŒ์„ ์ถœ๋ ฅ
  5. SELECT : ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ถœ๋ ฅ/๊ณ„์‚ฐ
  6. ORDER BY : ๋ฐ์ดํ„ฐ ์ •๋ ฌ

๐Ÿ“ŒSQL Server์˜ TOP(N) ์งˆ์˜๋ฌธ

โ€‹

N์— ํ•ด๋‹น ํ•˜๋Š” ๊ฐ’์ด ๋™์ผํ•œ ๊ฒฝ์šฐ ํ•จ๊ป˜ ์ถœ๋ ฅ๋˜๋„๋ก ํ•˜๋Š” WITH TIES ์˜ต์…˜์„ ORDER BY ์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ

์˜ˆ์‹œ) SELECT TOP(2) WITH TIES ENAME, SAL FROM EMP ORDER BY SAL DESC;


๐Ÿ“ŒJOIN

โ€‹

  1. ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ” ๋“ค์„ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ.
  2. ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ํ–‰๋“ค์€ PK๋‚˜ FK๊ฐ’์˜ ์—ฐ๊ด€์— ์˜ํ•ด JOIN์ด ์„ฑ๋ฆฝ. ํ•˜์ง€๋งŒ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ด๋Ÿฌํ•œ PK, FK์˜ ๊ด€๊ณ„๊ฐ€ ์—†์–ด๋„ ๋…ผ๋ฆฌ์ ์ธ ๊ฐ’๋“ค์˜ ์—ฐ๊ด€๋งŒ์œผ๋กœ JOIN์ด ์„ฑ๋ฆฝ ๊ฐ€๋Šฅ.
  3. DBMS ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” FROM ์ ˆ์— ๋‚˜์—ด๋œ ํ…Œ์ด๋ธ”๋“ค์„ ์ž„์˜๋กœ 2๊ฐœ ์ •๋„์”ฉ ๋ฌถ์–ด์„œ Join์„ ์ˆ˜ํ–‰
  4. EQUI JOIN์€ ๊ด€์—ฌํ•˜๋Š” ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์ปฌ๋Ÿผ ๊ฐ’๋“ค์ด ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ
  5. ๋Œ€๋ถ€๋ถ„ Non EQUI JOIN์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋•Œ๋กœ๋Š” ์„ค๊ณ„์ƒ์˜ ์ด์œ ๋กœ ์ˆ˜ํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋„ ์žˆ์Œ
profile

YeaLow

@YeaLow

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!