๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ž๊ฒฉ์ฆ/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

์ •์ฒ˜๊ธฐ ํ•„๊ธฐ ์š”์•ฝ - SQL ์‘์šฉ

SQL ๊ฐœ๋…

๊ตญ์ œ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด์ด๋ฉฐ ๋งŽ์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDB)๋ฅผ ์ง€์›ํ•˜๋Š” ์–ธ์–ด๋กœ ์ฑ„ํƒ

 

SQL์˜ ๋ถ„๋ฅ˜

- DDL (Data Define Language, ๋ฐ์ดํ„ฐ ์ •์˜์–ด)

์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ํ…Œ์ด๋ธ”, ๋ทฐ,  ์ธ๋ฑ์Šค๋ฅผ ์ •์˜, ๋ณ€๊ฒฝ, ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด, update delete ์—†๋Š” ๊ฒƒ์— ์œ ์˜ !

CREATE : ์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ํ…Œ์ด๋ธ”, ๋ทฐ, ์ธ๋ฑ์Šค๋ฅผ ์ •์˜

ALTER : ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋ณ€๊ฒฝ

DROP : ์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ํ…Œ์ด๋ธ”, ๋ทฐ, ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œ

- DML (Data Manipulation Language, ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)

์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

SELECT : ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํŠœํ”Œ ๊ฒ€์ƒ‰

INSERT : ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํŠœํ”Œ ์‚ฝ์ž…

DELETE : ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํŠœํ”Œ ์‚ญ์ œ

UPDATE : ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํŠœํ”Œ์˜ ๋‚ด์šฉ ๋ณ€๊ฒฝ

- DCL (Data Control Language, ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)

๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ, ํšŒ๋ณต, ๋ณ‘ํ–‰ ์ˆ˜ํ–‰ ์ œ์–ด ๋“ฑ์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด

COMMIT : ๋ช…๋ น์— ์˜ํ•ด ์ˆ˜ํ–‰๋œ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ๋กœ ์ €์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘ ์ž‘์—…์ด ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ ค์คŒ

ROLLBACK : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘ ์ž‘์—…์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์›๋ž˜์˜ ์ƒํƒœ๋กœ ๋ณต๊ตฌ

GRANT : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๋ถ€์—ฌ

 

 

DDL

DDL(๋ฐ์ดํ„ฐ ์ •์˜์–ด)๋Š” DB ๊ตฌ์กฐ, ๋ฐ์ดํ„ฐ ํ˜•์‹, ์ ‘๊ทผ ๋ฐฉ์‹ ๋“ฑ DB๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด

DDL์˜ ์ข…๋ฅ˜์—๋Š” CREATE, ALTER, DROP ์ด ์žˆ์Œ

 

CREATE

- CREATE

์Šคํ‚ค๋งˆ(๋ฐ์ดํŠธ๋ฒ ์ด์Šค ๊ตฌ์กฐ์™€ ์ œ์•ฝ ์กฐ๊ฑด์— ๊ด€ํ•œ ์ „๋ฐ˜์ ์ธ ๋ช…์„ธ๋ฅผ ๊ธฐ์ˆ ํ•œ ๊ฒƒ)๋ฅผ ์ •์˜

CREATE SCHEMA ์Šคํ‚ค๋งˆ๋ช… AUTHORIZATION ์‚ฌ์šฉ์ž_id;

์†Œ์œ ๊ถŒ์ž์˜ ์‚ฌ์šฉ์ž ID๊ฐ€ '๊น€์ด๋ฐ•'์ด๊ณ  ์Šคํ‚ค๋งˆ '์„ฑ์ '์„ ์ •์˜ํ•˜๋Š” SQL๋ฌธ

CREATE SCHEMA ์„ฑ์  AUTHORIZATION ๊น€์ด๋ฐ•;

 

- CREATE DOMIN

๋„๋ฉ”์ธ์„ ์ •์˜

(๋Œ€๊ด„ํ˜ธ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ)

CREATE DOMAIN ๋„๋ฉ”์ธ๋ช… [AS] ๋ฐ์ดํ„ฐ_ํƒ€์ž…
[DEFAULT ๊ธฐ๋ณธ๊ฐ’]
[CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… CHECK (๋ฒ”์œ„๊ฐ’)];

์„ฑ๋ณ„์„ '๋‚จ' ๋˜๋Š” '์—ฌ'์™€ ๊ฐ™์ด ์ •ํ•ด์ง„ 1๊ฐœ ๋ฌธ์ž๋กœ ํ‘œํ˜„๋˜๋Š” ๋ชจ๋ฉ”์ธ GENDER๋ฅผ ์ •์˜ํ•˜๋Š” SQL๋ฌธ

CREATE DOMAIN [AS] CHAR(1)
DEFAULT '๋‚จ'
CONSTRAINT VALID-GENDER CHECK(VALUE IN('๋‚จ', '์—ฌ');

 

- CREATE TABLE

ํ…Œ์ด๋ธ”์„ ์ •์˜

CREATE TABLE ํ…Œ์ด๋ธ”๋ช…
(์†์„ฑ๋ช… ๋ฐ์ดํ„ฐ_ํƒ€์ž… [DEFAULT ๊ธฐ๋ณธ๊ฐ’] [NOT NULL],...
[, PRIMARAY KEY(๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…),...)]
[, UNIQUE(๋Œ€์ฒดํ‚ค_์†์„ฑ๋ช…),...)]
[, FOREIGN KEY(์™ธ๋ž˜ํ‚ค_์†์„ฑ๋ช…, ...)]
REFERENCES ์ฐธ์กฐํ…Œ์ด๋ธ”(๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…, ...)]
[ON DELETE ์˜ต์…˜]
[ON UPDATE ์˜ต์…˜]
[, CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…][CHECK(์กฐ๊ฑด์‹)]);

-> '์ด๋ฆ„', 'ํ•™๋ฒˆ', '์ „๊ณต', '์„ฑ๋ณ„', '์ƒ๋…„์›”์ผ'๋กœ ๊ตฌ์„ฑ๋œ ํ•™์ƒ ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•˜๋Š” SQL๋ฌธ

์ œ์•ฝ์กฐ๊ฑด

* '์ด๋ฆ„'์€ NULL ์ผ ์ˆ˜ ์—†์Œ

* 'ํ•™๋ฒˆ'์€ ๊ธฐ๋ณธํ‚ค

* '์ „๊ณต'์€ ํ•™๊ณผ ํ…Œ์ด๋ธ”์˜ 'ํ•™๊ณผ ์ฝ”๋“œ'๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉ

* ํ•™๊ณผ ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ๊ด€๋ จ๋œ ํŠœํ”Œ๋“ค์˜ ์ „๊ณต ๊ฐ’์„ NULL๋กœ ๋งŒ๋“ฆ

* ํ•™๊ณผ ํ…Œ์ด๋ธ”์—์„œ 'ํ•™๊ณผ ์ฝ”๋“œ'๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ „๊ณต ๊ฐ’๋„ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

* '์ƒ๋…„์›”์ผ'์€ 1980-01-01 ์ดํ›„์˜ ๋ฐ์ดํ„ฐ

* ์ œ์•ฝ ์กฐ๊ฑด์˜ ์ด๋ฆ„์€ '์ƒ๋…„์›”์ผ ์ œ์•ฝ'

* ๊ฐ ์†์„ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž„์€ ์ ๋‹นํ•˜๊ฒŒ ์ง€์ •

* '์„ฑ๋ณ„'์€ ๋„๋ฉ”์ธ GENDER ์‚ฌ์šฉ

CREATE TABLE ํ•™์ƒ
(์ด๋ฆ„ VARCHAR(15) NOT NULL,
ํ•™๋ฒˆ CHAR(8)
์ „๊ณต CHAR(5)
์„ฑ๋ณ„ GENDER
์ƒ๋…„์›”์ผ DATE
PRIMARAY KEY(ํ•™๋ฒˆ)
FOREIGN KEY(์ „๊ณต)
REFERENCES ํ•™๊ณผ(ํ•™๊ณผ์ฝ”๋“œ)
ON DELETE SET NULL
ON UPDATE CASCADE
CONSTRAINT ์ƒ๋…„์›”์ผ์ œ์•ฝ CHECK(์ƒ๋…„์›”์ผ >= '1980-01-01'));

 

- CREATE VIEW

๋ทฐ(ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์œ ๋„๋˜๋Š” ์ด๋ฆ„์„ ๊ฐ–๋Š” ๊ฐ€์ƒ ํ…Œ์ด๋ธ”)๋ฅผ ์ •์˜

SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ๋กœ์จ ๋ทฐ๋ฅผ ์ƒ์„ฑ

CREATE VIEW ๋ทฐ๋ช… [(์†์„ฑ๋ช…[, ์†์„ฑ๋ช…, ...])]
AS SELECT๋ฌธ;

-> ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์—์„œ '์ฃผ์†Œ'๊ฐ€ 'ํฌ์ฒœ์‹œ'์ธ ๊ณ ๊ฐ๋“ค์˜ '์ด๋ฆ„'๊ณผ '์ „ํ™”๋ฒˆํ˜ธ'๋ฅผ 'ํฌํ„ด ๊ณ ๊ฐ'์ด๋ผ๋Š” ๋ทฐ๋กœ ์ •์˜ํ•˜๋Š” SQL๋ฌธ

CREATE VIEW ํฌ์ฒœ๊ณ ๊ฐ (์ด๋ฅผ, ์ „ํ™”๋ฒˆํ˜ธ)
AS SELECT ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ
FROM ๊ณ ๊ฐ
WHERE ์ฃผ์†Œ = 'ํฌ์ฒœ์‹œ';

 

- CREATE INDEX

์ธ๋ฑ์Šค(๊ฒ€์ƒ‰ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ๋ณด์กฐ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ)๋ฅผ ์ •์˜

ASC : ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’ / DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

CLUSTER : ์‚ฌ์šฉ ์‹œ ์ธ๋ฑ์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค๋กœ ์ง€์ •

ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค : ์ธ๋ฑ์Šค ํ‚ค์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹

CREATE [UNIQUE] INDEX ์ธ๋ฑ์Šค๋ช…
ON ํ…Œ์ด๋ธ”๋ช… (์†์„ฑ๋ช… [ASC[DESC][, ์†์„ฑ๋ช…[ASC | DESC]])
[CLUSTER];

->๊ณ ๊ฐ ํ…Œ์ด๋ธ”์—์„œ UNIQUE ํ•œ ํŠน์„ฑ์„ ๊ฐ–๋Š” '๊ณ ๊ฐ๋ฒˆํ˜ธ' ์†์„ฑ์— ๋Œ€ํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ '๊ณ ๊ฐ๋ฒˆํ˜ธ_idx'๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ •์˜ํ•˜๋Š” SQL๋ฌธ

CREATE UNIQUE INDEX ๊ณ ๊ฐ๋ฒˆํ˜ธ_idx
ON ๊ณ ๊ฐ (๊ณ ๊ฐ๋ฒˆํ˜ธ DESC);

 

ALTER

- ALTER TABLE

ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋ณ€๊ฒฝ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ์†์„ฑ๋ช…_๋ฐ์ดํ„ฐ_ํƒ€์ž… [DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ALTER ์†์„ฑ๋ช… [SET DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์†์„ฑ๋ช… [CASCADE];

-> ํ•™์ƒ ํ…Œ์ด๋ธ”์— ์ตœ๋Œ€ 3 ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜๋Š” 'ํ•™๋…„' ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” SQL๋ฌธ

ALTER TABLE ํ•™์ƒ ADD VARCHAR(10) NOT NULL;

 

DROP

์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”, ํŠœ ํ…Œ์ด๋ธ”, ์ธ๋ฑ์Šค, ์ œ์•ฝ ์กฐ๊ฑด๋“ค์„ ์ œ๊ฑฐํ•˜๋Š” ๋ช…๋ น๋ฌธ

DROP SCHEMA ์Šคํ‚ค๋งˆ๋ช… [CASCADE | RESTRICTED];
DROP DOMAIN ๋„๋ฉ”์ธ๋ช… [CASCADE | RESTRICTED];
DROP TABLE ํ…Œ์ด๋ธ”๋ช… [CASCADE | RESTRICTED];
DROP VIEW ๋ทฐ๋ช… [CASCADE | RESTRICTED];
DROP INDEX ์ธ๋ฑ์Šค๋ช… [CASCADE | RESTRICTED];
DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…

- CASCADE : ์ œ๊ฑฐํ•  ๋•Œ ์ฐธ์กฐ ๊ด€๊ณ„์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋กœ ์—ฐ์‡„ ์‚ญ์ œ

- RESTRICTED : ์ œ๊ฑฐํ•  ๋•Œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๋ฉด ์‚ญ์ œ๋ฅผ ์ทจ์†Œ

 

 

DCL

DCL(๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ, ํšŒ๋ณต, ๋ณ‘ํ–‰ ์ œ์–ด ๋“ฑ์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด

 

GRANT

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ ๋ถ€์—ฌ

 

REVOKE

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ ์ทจ์†Œ

 

COMMIT

ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚œ ํ›„ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜

 

ROLLBACK

COMMIT ๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ทจ์†Œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ์ด๋Š” ๋ช…๋ น

 

SAVEPOINT

ํŠธ๋žœ์žญ์…˜ ๋‚ด์— ROLLBACK ํ•  ์œ„์น˜์ธ ์ €์žฅ์ ์„ ์ €์žฅ

 

 

DML

DML (๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์งˆ์˜์–ด๋ฅผ ํ†ตํ•ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด

 

INSERT

- ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํŠœํ”Œ์„ ์‚ฝ์ž…

INSERT INTO ํ…Œ์ด๋ธ”๋ช…([์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ...]) VALUES (๋ฐ์ดํ„ฐ1, ๋ฐ์ดํ„ฐ2, ...);

- ์‚ฌ์› ํ…Œ์ด๋ธ”์— ์ง์›์„ ์‚ฝ์ž…ํ•˜๋Š” SQL๋ฌธ

INSERT INTO ์‚ฌ์›(์ด๋ฆ„, ๋ถ€์„œ) VALUES (ํ™๊ธธ๋™, ๊ฐœ๋ฐœ);

- ์‚ฌ์› ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ฐœ๋ฐœ์˜ ๋ชจ๋“  ํŠœํ”Œ์„ ๊ฐœ๋ฐœ ๋ถ€์› (์ด๋ฆ„, ์ƒ์ผ) ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•˜๋Š” SQL ๋ฌธ

INSERT INTO ๊ฐœ๋ฐœ๋ถ€์›(์ด๋ฆ„, ์ฃผ์†Œ) SELECT ์ด๋ฆ„, ์ฃผ์†Œ FROM ์‚ฌ์› WHERE ๋ถ€์„œ = "๊ฐœ๋ฐœ";

 

DELETE

- ํ…Œ์ด๋ธ”์˜ ํŠœํ”Œ ์ค‘ ํŠน์ • ํŠœํ”Œ์„ ์‚ญ์ œ

DELETE FROM ํ…Œ์ด๋ธ”๋ช… [WHERE ์กฐ๊ฑด];

- ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ํ™๊ธธ์ข…์˜ ๋ถ€์„œ๋ฅผ IT๋กœ ๋ณ€๊ฒฝํ•˜๋Š” SQL๋ฌธ

UPDATE ์‚ฌ์› SET ๋ถ€์„œ = "IT" WHERE ์ด๋ฆ„ = "ํ™๊ธธ๋™";

 

SELECT

ํ…Œ์ด๋ธ”์—์„œ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰

SELECT [PREDICATE][ํ…Œ์ด๋ธ”๋ช…]์†์„ฑ๋ช… [AS ๋ณ„์นญ][,[ํ…Œ์ด๋ธ”๋ช…]์†์„ฑ๋ช…, ...]
FROM ํ…Œ์ด๋ธ”๋ช…[, ํ…Œ์ด๋ธ”๋ช…, ...]
[, WINDOW ํ•จ์ˆ˜ OVER (PARITTON BY ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ... ORDER BY ์†์„ฑ๋ช…3, ์†์„ฑ๋ช…4, ...) [AS ๋ณ„์นญ]]
[WHERE ์กฐ๊ฑด]
[GROUP BY ์†์„ฑ๋ช…, ์†์„ฑ๋ช…, ...]
[HAVING ์กฐ๊ฑด]
[ORDER BY ์†์„ฑ๋ช… [ASC | DESC]];

ORDER BY

: ํŠน์ • ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฒ€์ƒ‰

- ASC : ์˜ค๋ฆ„์ฐจ์ˆœ

- DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ

 

WINDOW ํ•จ์ˆ˜

: GROUP BY ์ ˆ์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ์†์„ฑ์˜ ๊ฐ’์„ ์ง‘๊ณ„ํ•  ํ•จ์ˆ˜๋ฅผ ๊ธฐ์ˆ 

- PARTITON BY : WINDOW ํ•จ์ˆ˜๊ฐ€ ์ ์šฉ๋  ๋ฒ”์œ„๋กœ ์‚ฌ์šฉํ•  ์†์„ฑ์„ ์ง€์ •

- ORDER BY : PARTITION ์•ˆ์—์„œ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•  ์†์„ฑ์„ ์ง€์ •

- ROW_NUMBER() : ๊ฐ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ผ๋ จ๋ฒˆํ˜ธ ๋ฐ˜ํ™˜

- RANK() : ์ˆœ์œ„๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋˜ ๊ณต๋™ ์ˆœ์œ„๋ฅผ ๋ฐ˜์˜

- DENSE_RANK() : ์ˆœ์œ„๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋˜ ๊ณต๋™ ์ˆœ์œ„๋ฅผ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Œ

 

GROUP BY

: ํŠน์„ฑ ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉ, ๊ทธ๋ฃน ํ•จ์ˆ˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ

- COUNT (์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ํŠœํ”Œ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

- SUM (์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

- AVG (์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

- MAX (์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

- MIN (์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

- ROLLUP (์†์„ฑ๋ช…, ์†์„ฑ๋ช…,...) : ์ธ์ˆ˜๋กœ ์ฃผ์–ด์ง„ ์†์„ฑ์„ ๋Œ€์ƒ์œผ๋กœ ๊ทธ๋ฃน๋ณ„ ์†Œ๊ณ„๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

- CUBE (์†์„ฑ๋ช…, ์†์„ฑ๋ช…,...) : ์ธ์ˆ˜๋กœ ์ฃผ์–ด์ง„ ์†์„ฑ์„ ๋Œ€์ƒ์œผ๋กœ ๋ชจ๋“  ์กฐํ•ฉ์˜ ๊ทธ๋ฃน๋ณ„ ์†Œ๊ณ„๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

 

HAVING

: GROUP BY์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน์— ์กฐ๊ฑด์„ ์ง€์ •

 

SELECT ์˜ˆ์ œ

...

- ๊ธฐ๋ณธ ๊ฒ€์ƒ‰

์‚ฌ์› ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ํŠœํ”Œ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT * FROM ์‚ฌ์›;

 

- ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ฅผ ์ค‘๋ณต ์—†์ด ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT DISTINCT ๋ถ€์„œ FROM ์‚ฌ์›;

 

- ์กฐ๊ฑด ์ง€์ • ๊ฒ€์ƒ‰

์‚ฌ์› ํ…Œ์ด๋ธ” ๋ถ€์„œ๊ฐ€ ๊ฐœ๋ฐœ์ธ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT * FROM ์‚ฌ์› WHERE ๋ถ€์„œ = "๊ฐœ๋ฐœ";

 

- ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๊ฐ€ ๊ฐœ๋ฐœ ํ˜น์€ IT์ธ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT * FROM ์‚ฌ์› WHERE ๋ถ€์„œ = "๊ฐœ๋ฐœ" OR ๋ถ€์„œ = "IT";
SELECT * FROM ์‚ฌ์› WHERE ๋ถ€์„œ IN("๊ฐœ๋ฐœ", "IT");

 

- ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ๊น€ ์”จ์ธ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT * FROM ์‚ฌ์› WHERE ์ด๋ฆ„ LIKE "๊น€%";

 

- ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๊ฐ€ NULL์ธ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT * FROM ์‚ฌ์› WHERE ๋ถ€์„œ IS NULL;

 

- ์ •๋ ฌ ๊ฒ€์ƒ‰ : ORDER BY๋ฅผ ์ด์šฉํ•œ ๊ฒ€์ƒ‰

์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ์ด๋ฆ„์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT * FROM ์‚ฌ์› ORDER BY ์ด๋ฆ„ ASC;

 

- ํ•˜์œ„ ์งˆ์˜ : ์กฐ๊ฑด์ ˆ์— ๋‹ค์‹œ SELECT๋ฌธ์„ ๋„ฃ์–ด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์กฐ๊ฑด์œผ๋กœ ๊ฒ€์ƒ‰

์ทจ๋ฏธ ํ…Œ์ด๋ธ”์—์„œ ์ทจ๋ฏธํ™œ๋™์ด ์ถ•๊ตฌ์ธ ์‚ฌ์› ์ด๋ฆ„์˜ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT ์ด๋ฆ„ FROM ์‚ฌ์› WHERE ์ด๋ฆ„ = (SELECT ์ด๋ฆ„ FROM ์ทจ๋ฏธ WHERE ์ทจ๋ฏธํ™œ๋™ = "์ถ•๊ตฌ") 

 

- ๋ณต์ˆ˜ ํ…Œ์ด๋ธ” : ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ๋Œ€์ƒ์œผ๋กœ ๊ฒ€์ƒ‰

๊ฒฝ๋ ฅ์ด 10๋…„ ์ด์ƒ์ธ ์‚ฌ์›์˜ ์ด๋ฆ„, ๋ถ€์„œ, ์ทจ๋ฏธํ™œ๋™์„ ๊ฒ€์ƒ‰ํ•˜๋Š” SQL๋ฌธ

SELECT ์‚ฌ์›.์ด๋ฆ„, ์‚ฌ์›.๋ถ€์„œ
FROM ์‚ฌ์›, ์ทจ๋ฏธ
WHERE ์‚ฌ์›.๊ฒฝ๋ ฅ >= 10 AND ์‚ฌ์›.์ด๋ฆ„ = ์ทจ๋ฏธ.์ด๋ฆ„;

 

- WINDOW ํ•จ์ˆ˜ ์ด์šฉ

์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ ๋ณ„๋กœ ๊ฒฝ๋ ฅ์— ๋Œ€ํ•œ ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ๊ตฌํ•˜์—ฌ ํ™๊ธธ๋™์ด๋ผ๋Š” ์ด๋ฆ„์„ ๋ถ™์ด๋Š” SQL๋ฌธ

SELECT ๋ถ€์„œ, ๊ฒฝ๋ ฅ
ROW_NUMBER() OVER (PARTITION BY ๋ถ€์„œ ORDER BY ๊ฒฝ๋ ฅ DESC) AS ํ™๊ธธ๋™
FROM ์‚ฌ์›;

 

- GROUP BY  : ๊ทธ๋ฃน ์ง€์ • ๊ฒ€์ƒ‰

์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ณ„ ๊ฒฝ๋ ฅ์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” SQL๋ฌธ

SELECT ๋ถ€์„œ, AVG(๊ฒฝ๋ ฅ) AS ํ‰๊ท 
FROM ์‚ฌ์›
GROUP BY ๋ถ€์„œ;

 

- ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํ†ตํ•ฉ ์งˆ์˜

SELECT ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2,...
FROM ํ…Œ์ด๋ธ”๋ช…
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2,...
FROM ํ…Œ์ด๋ธ”๋ช…
[ORDER BY ์†์„ฑ๋ช… [ASC | DESC]];

 

- UNION : ๋‘ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ์ค‘๋ณต๋œ ํ–‰์€ ํ•œ ๋ฒˆ๋งŒ ์ถœ๋ ฅ

- UNION ALL : ๋‘ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ์ค‘๋ณต๋œ ํ–‰๋„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ

- INTERSECT : ๋‘ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ ์ค‘ ๊ณตํ†ต๋œ ํ–‰๋งŒ ์ถœ๋ ฅ

- EXCEPT : ์ฒซ ๋ฒˆ์งธ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ์—์„œ ๋‘ ๋ฒˆ์งธ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ œ์™ธํ•œ ํ–‰์„ ์ถœ๋ ฅ

 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•