๊ตญ๋ฏผ๋ํ๊ต์์ "์ค๋ผํด๋ก ๋ฐฐ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ก ๊ณผ ์ค์ต(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๋ฌธ์ ํ ์ด๋ธ์ ์๋ ๊ธฐ์กด ํฌํ์ ์ญ์ ํ๋ ๋ช ๋ น์ด๋ค

'๐ซง Database > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Chapter 06. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2024.05.15 |
---|---|
Chapter 05. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ (1) | 2024.04.16 |
Chapter 04. SQL ๊ณ ๊ธ (1) | 2024.04.15 |
Chapter 02. ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ (1) | 2024.04.12 |
Chapter 01. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (2) | 2024.04.10 |
๊ตญ๋ฏผ๋ํ๊ต์์ "์ค๋ผํด๋ก ๋ฐฐ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ก ๊ณผ ์ค์ต(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๋ฌธ์ ํ ์ด๋ธ์ ์๋ ๊ธฐ์กด ํฌํ์ ์ญ์ ํ๋ ๋ช ๋ น์ด๋ค

'๐ซง Database > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Chapter 06. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2024.05.15 |
---|---|
Chapter 05. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ (1) | 2024.04.16 |
Chapter 04. SQL ๊ณ ๊ธ (1) | 2024.04.15 |
Chapter 02. ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ (1) | 2024.04.12 |
Chapter 01. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (2) | 2024.04.10 |