๋ฐ˜์‘ํ˜•

๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๊ณผ ์‹ค์Šต(2ํŒ)" ์„ ์ด์šฉํ•œ
์‹ ์ธ์ˆ˜ ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค

 

 

1. SQL ๊ฐœ์š”

 

SQL ๊ธฐ๋Šฅ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

 

  • ๋ฐ์ดํ„ฐ ์ •์˜์–ด (DDL)

    • ํ…Œ์ด๋ธ”์ด๋‚˜ ๊ด€๊ณ„์˜ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

    • CREATE, ALTER, DROP ๋ฌธ ๋“ฑ์ด ์žˆ์Œ

  • ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด (DML)

    • ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

    • SELECT, INSERT, DELETE, UPDATE ๋ฌธ ๋“ฑ์ด ์žˆ์Œ

    • SELECT ๋ฌธ์€ ํŠน๋ณ„ํžˆ ์งˆ์˜์–ด(query)๋ผ๊ณ  ํ•จ

  • ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด (DCL)

    • ๋ฐ์ดํ„ฐ์˜ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

    • GRANT, REVOKE ๋ฌธ ๋“ฑ์ด ์žˆ์Œ

 

 

 

2. ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด - ๊ฒ€์ƒ‰

 

SELECT ๋ฌธ

 

 

 

์ด๊ฒƒ์ €๊ฒƒ ๋งŽ์•„์„œ ์–ด๋ ค์›Œ๋ณด์ด์ง€๋งŒ ๊ฒฐ๊ตญ

 

SELECT ์†์„ฑ ์ด๋ฆ„

FROM ํ…Œ์ด๋ธ” ์ด๋ฆ„

WHERE ๊ฒ€์ƒ‰ ์กฐ๊ฑด

 

์ด๋Ÿฐ์‹์œผ๋กœ ํ‚ค์›Œ๋“œ ๋’ค์— ํ˜•์‹์— ๋งž์ถฐ ์†์„ฑ, ํ…Œ์ด๋ธ”, ์กฐ๊ฑด ๋“ฑ์„ ์ง‘์–ด ๋„ฃ์œผ๋ฉด ๋จ!

 

SELECT/FROM

 

Book์ด๋ผ๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋“  ์ถœํŒ์‚ฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ์œผ๋ฉด

 

 

SELECT publisher
FROM Book;

 

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค

 

SELECT DISTINCT publisher
FROM Book;

 

๋งŒ์•ฝ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์œผ๋ฉด DISTINCT๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค!

 

 

WHERE ์กฐ๊ฑด

 

 

๋‚˜๋จธ์ง€๋Š” ๋ณด๋ฉด ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๊ณ  ํŒจํ„ด ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด๋ฉด

 

๋งŒ์•ฝ ๋„์„œ์ด๋ฆ„์— '์ถ•๊ตฌ'๊ฐ€ ํฌํ•จ๋œ ์ถœํŒ์‚ฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

 

 

SELECT bookname, publisher
FROM Book
WHERE bookname LIKE '%์ถ•๊ตฌ%';

 

์ด๋Ÿฐ์‹์œผ๋กœ ์™€์ผ๋“œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ LIKE๋ฅผ ์ ์šฉ์‹œํ‚ค๋ฉด ๋จ

 

 

 

๋งŒ์•ฝ ๋„์„œ์ด๋ฆ„์˜ ์™ผ์ชฝ ๋‘ ๋ฒˆ์งธ ์œ„์น˜์— '๊ตฌ'๋ผ๋Š” ๋ฌธ์ž์—ด์„ ๊ฐ–๋Š” ๋„์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

 

 

SELECT *
FROM Book
WHERE bookname LIKE '_๊ตฌ%';

 

์™€์ผ๋“œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

 

ORDER BY

 

ORDER BY๋Š” ์ •๋ ฌ์— ๊ด€ํ•œ ํ‚ค์›Œ๋“œ๋กœ ์˜ˆ์‹œ ํ•˜๋‚˜๋ฅผ ๋ณด๋ฉด ๋ฐ”๋กœ ์ดํ•ด๊ฐ€ ๋ ํ…๋ฐ

 

๋„์„œ๋ฅผ ๊ฐ€๊ฒฉ์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๊ฒ€์ƒ‰ํ• ๊ฑด๋ฐ ๋งŒ์•ฝ ๊ฐ€๊ฒฉ์ด ๊ฐ™๋‹ค๋ฉด ์ถœํŒ์‚ฌ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

 

 

SELECT *
FROM Book
ORDER BY price DESC, publisher ASC;

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค

(ORDER BY์˜ ๊ธฐ๋ณธ๊ฐ’์€ ASC(์˜ค๋ฆ„์ฐจ์ˆœ)์œผ๋กœ ๋˜์–ด์žˆ์Œ!)

 

์ง‘๊ณ„ ํ•จ์ˆ˜์™€ GROUP BY

 

์ง‘๊ณ„ ํ•จ์ˆ˜(Aggregate Function)

 

 

๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ•œ ๋„์„œ์˜ ์ด ํŒ๋งค์•ก์„ ๊ตฌํ•˜๋ ค๋ฉด

 

SELECT SUM(saleprice)
FROM Orders;

 

์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค

 

 

SELECT SUM(saleprice) AS ์ด๋งค์ถœ
FROM Orders;

 

=> ์˜๋ฏธ ์žˆ๋Š” ์—ด ์ด๋ฆ„์„ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์†์„ฑ์ด๋ฆ„์˜ ๋ณ„์นญ์„ ์ง€์นญํ•˜๋Š” AS ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ด ์ด๋ฆ„์„ ๋ถ€์—ฌํ•œ๋‹ค

 

GROUP BY ์ ˆ

 

๊ณ ๊ฐ๋ณ„๋กœ ์ฃผ๋ฌธํ•œ ๋„์„œ์˜ ์ด ์ˆ˜๋Ÿ‰๊ณผ ์ด ํŒ๋งค์•ก์„ ๊ตฌํ•˜๋ ค๋ฉด

 

 

SELECT custid, COUNT(*) AS ๋„์„œ์ˆ˜๋Ÿ‰, SUM(saleprice) AS ์ด์•ก
FROM Orders
GROUP BY custid;

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค

 

  • HAVING ์ ˆ (WHERE์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ˆœ์„œ ์กฐ์‹ฌ!)

 

 

๋‘ ๊ฐœ ์ด์ƒ ํ…Œ์ด๋ธ”์—์„œ SQL ์งˆ์˜

 

์กฐ์ธ(Join)

 

Customer ํ…Œ์ด๋ธ”์„ Orders ํ…Œ์ด๋ธ”๊ณผ ์กฐ๊ฑด ์—†์ด ์—ฐ๊ฒฐ

 

=> ๊ณ ๊ฐ์ด ๋‹ค์„ฏ ๋ช…์ด๊ณ  ์ฃผ๋ฌธ์ด ์—ด ๊ฐœ์ด๋ฉด 5 x 10 ํ•ด์„œ ์ „์ฒด ํˆฌํ”Œ์˜ ๊ฐœ์ˆ˜๋Š” 50๊ฐœ๊ฐ€ ๋œ๋‹ค

 

 

 

 

 

๋ถ€์†์งˆ์˜(Subquery) : SQL๋ฌธ ๋‚ด์— ๋˜ ๋‹ค๋ฅธ SQL๋ฌธ

 

 

์ƒ๊ด€ ๋ถ€์†์งˆ์˜(correlated subquery)๋Š” ์ƒ์œ„ ๋ถ€์†์งˆ์˜์˜ ํˆฌํ”Œ์„ ์ด์šฉํ•˜์—ฌ ํ•˜์œ„ ๋ถ€์†์งˆ์˜๋ฅผ ๊ณ„์‚ฐํ•จ

 

=> ์ฆ‰, ์ƒ์œ„ ๋ถ€์†์งˆ์˜์™€ ํ•˜์œ„ ๋ถ€์†์งˆ์˜๊ฐ€ ๋…๋ฆฝ์ ์ด์ง€ ์•Š๊ณ  ์„œ๋กœ ๊ด€๋ จ์„ ๋งบ๊ณ  ์žˆ์Œ

 

 

 

์ง‘ํ•ฉ์—ฐ์‚ฐ(Set Operation)

 

ํ•ฉ์ง‘ํ•ฉ UNION, ์ฐจ์ง‘ํ•ฉ EXCEPT, ๊ต์ง‘ํ•ฉ INTERSECT

=> Oracle์€ ์ฐจ์ง‘ํ•ฉ์„ MINUS๋กœ ํ•˜์ง€๋งŒ, SQL ํ‘œ์ค€์—์„œ๋Š” EXCEPT๋ฅผ ์‚ฌ์šฉ!

 

 

๋„์„œ๋ฅผ ์ฃผ๋ฌธํ•˜์ง€ ์•Š์€ ๊ณ ๊ฐ์˜ ์ด๋ฆ„์„ ๋ณด์ด๋ ค๋ฉด

 

{๋„์„œ๋ฅผ ์ฃผ๋ฌธํ•˜์ง€ ์•Š์€ ๊ณ ๊ฐ} = {๋ชจ๋“  ๊ณ ๊ฐ} - {๋„์„œ๋ฅผ ์ฃผ๋ฌธํ•œ ๊ณ ๊ฐ}

 

 

SELECT name
FROM Customer
MINUS
SELECT name
FROM Customer
WHERE custid IN (SELECT custid
                 FROM Orders);

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค

 

 

EXISTS

 

์›๋ž˜ ๋‹จ์–ด์—์„œ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์กฐ๊ฑด์— ๋งž๋Š” ํŠœํ”Œ์ด ์กด์žฌํ•˜๋ฉด ๊ฒฐ๊ณผ์— ํฌํ•จ์‹œํ‚จ๋‹ค

=> ์ฆ‰, ๋ถ€์†์งˆ์˜๋ฌธ์˜ ์–ด๋–ค ํ–‰์ด ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋ฉด ์ฐธ์ž„

 

 

NOT EXISTS

 

๋ถ€์†์งˆ์˜๋ฌธ์˜ ๋ชจ๋“  ํ–‰์ด ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๋•Œ๋งŒ ์ฐธ์ž„

 

 

3. ๋ฐ์ดํ„ฐ ์ •์˜์–ด

 

CREATE ๋ฌธ

 

ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๊ณ , ์†์„ฑ๊ณผ ์†์„ฑ์—๊ด€ํ•œ ์ œ์•ฝ์„ ์ •์˜ํ•˜๋ฉฐ, ๊ธฐ๋ณธํ‚ค ๋ฐ ์™ธ๋ž˜ํ‚ค๋ฅผ ์ •์˜ํ•˜๋Š” ๋ช…๋ น

 

PRIMARY KEY๋Š” ๊ธฐ๋ณธํ‚ค๋ฅผ ์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ ,

 

FOREIGN KEY๋Š” ์™ธ๋ž˜ํ‚ค๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ,

 

ON UPDATE์™€ ON DELETE๋Š” ์™ธ๋ž˜ํ‚ค ์†์„ฑ์˜ ์ˆ˜์ •๊ณผ ํˆฌํ”Œ ์‚ญ์ œ ์‹œ ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค

 

 

 

 

์™ธ๋ž˜ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์„ ๋ช…์‹œํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”(๋ถ€๋ชจ ๋ฆด๋ ˆ์ด์…˜)์ด ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค์—ฌ์•ผ ํ•จ!

 

=> ์™ธ๋ž˜ํ‚ค ์ง€์ • ์‹œ ON DELETE ๋˜๋Š” ON UPDATE ์˜ต์…˜์€ ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ํˆฌํ”Œ์ด ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋  ๋•Œ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์„ ์ง€์ •ํ•จ (NO ACTION์€ ์–ด๋– ํ•œ ๋™์ž‘๋„ ์ทจํ•˜์ง€ ์•Š์Œ)

 

 

ALTER ๋ฌธ

 

ALTER๋ฌธ์€ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์˜ ์†์„ฑ๊ณผ ์†์„ฑ์— ๊ด€ํ•œ ์ œ์•ฝ์„ ๋ณ€๊ฒฝํ•˜๋ฉฐ, ๊ธฐ๋ณธํ‚ค ๋ฐ ์™ธ๋ž˜ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค

 

ADD, DROP์€ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ์‚ฌ์šฉ

 

MODIFY๋Š” ์†์„ฑ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ

 

=> ADD <์ œ์•ฝ์ด๋ฆ„>, DROP <์ œ์•ฝ์ด๋ฆ„>์€ ์ œ์•ฝ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ

 

 

 

 

DROP ๋ฌธ

 

DROP๋ฌธ์€ ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์ด๋‹ค

 

=> ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•˜๋ ค๋ฉด DELETE๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค

 

๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€

 

DROP TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„

 

์ด๋‹ค!

 

 

 

4. ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด - ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ

 

INSERT ๋ฌธ

 

INSERT๋ฌธ์€ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํˆฌํ”Œ์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค

 

 

INSERT INTO Book(bookid, bookname, publisher)
    VALUES(14, '์Šคํฌ์ธ  ์˜ํ•™', 'ํ•œ์†ฅ์˜ํ•™์„œ์ ');

 

๊ณผ ๊ฐ™์ด ๊ฐ€๊ฒฉ์„ ์ ์ง€์•Š์œผ๋ฉด NULL๋กœ ์ฑ„์›Œ์ง!

 

 

UPDATE ๋ฌธ

 

UPDATE๋ฌธ์€ ํŠน์ • ์†์„ฑ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค

 

 

 

DELETE ๋ฌธ

 

DELETE๋ฌธ์€ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ธฐ์กด ํˆฌํ”Œ์„ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์ด๋‹ค

 

 

๋ฐ˜์‘ํ˜•