๐ 1์ฅ SQL ๊ธฐ๋ณธ ๐
1. ๐SQL ๋ฌธ์ฅ ์ข ๋ฅ๐
๋ช ๋ น์ด ์ข ๋ฅ | ๋ช ๋ น์ด | ์ค๋ช |
๋ฐ์ดํฐ ์กฐ์์ด(DML) |
SELECT |
๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ค์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ๊ฒ์ํ๊ธฐ ์ํ ๋ช
๋ น์ด.
RETRIEVE๋ผ๊ณ ๋ ํจ.
|
INSERT
UPDATE
DELETE
|
๋ฐ์ดํฐ๋ฒ ์ด์ค์ด ํ
์ด๋ธ์ ๋ค์ด ์๋ ๋ฐ์ดํฐ์ ๋ณํ์ ๊ฐํ๋ ์ข
๋ฅ์ ๋ช
๋ น์ด.
|
|
๋ฐ์ดํฐ ์ ์์ด(DDL) |
CREATE
ALTER
DROP
RENAME
|
ํ
์ด๋ธ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ช
๋ น์ด.
์์ฑ, ๋ณ๊ฒฝ, ์ญ์ ๊ทธ๋ฆฌ๊ณ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ด๋ จ๋ ๋ช
๋ น์ด.
|
๋ฐ์ดํฐ ์ ์ด์ด(DCL) |
GRANT
REVOKE
|
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ณ ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ๋๋ก ๊ถํ์ ์ฃผ๊ณ ํ์ํ๋ ๋ช
๋ น์ด.
|
ํธ๋์ญ์ ์ ์ด์ด(TCL) |
COMMIT
ROLLBACK
|
๋
ผ๋ฆฌ์ ์ธ ์์
์ ๋จ์๋ฅผ ๋ฌถ์ด์ DML์ ์ํด ์กฐ์๋ ๊ฒฐ๊ณผ๋ฅผ ์์
๋จ์(ํธ๋์ญ์
) ๋ณ๋ก ์ ์ดํ๋ ๋ช
๋ น์ด๋ฅผ ๋งํจ.
|
2. ๐DML๐
โ
๋น์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด (Nonprocedural DML) : ์ฌ์ฉ์๊ฐ ๋ฌด์จ(What) ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ์ง๋ง์ ๋ช ์ธํจ. - As-Is
์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด (Procedural DML) : ์ด๋ป๊ฒ(How) ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํด์ผ ํ๋์ง ๋ช ์ธํจ. - To-Be
์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด์ ์ ( PL/SQL(์ค๋ผํด) , T-SQL(SQL Server) ๋ฑ )
โ
ํธ์คํธ ํ๋ก๊ทธ๋จ ์์ ์ฝ์ ๋์ด ์ฌ์ฉ๋๋ DML ๋ช ๋ น์ด๋ค์ ๋ฐ์ดํฐ ๋ถ์์ด(Data Sub Language)๋ผ๊ณ ํจ.
<sql />
ALTER TABLE table_name ADD [CONSTRAINT constraint_name] PRIMARY KEY (column_name);
PK = UNIQUE & NOT NULL์ ํน์ง.
UNIQUE - ํ ์ด๋ธ ๋ด์์ ์ค๋ณต๋๋ ๊ฐ์ด ์์ง๋ง NULL ์ ๋ ฅ์ด ๊ฐ๋ฅํจ.
4. ๐์ธ๋ํค (FK, FOREIGN KEY)
- ํ ์ด๋ธ ์์ฑ์ ์ค์ ๊ฐ๋ฅ
- NULL๊ฐ ๊ฐ์ง ์ ์์
- ํ ํ ์ด๋ธ ๋ด์ ์ฌ๋ฌ๊ฐ ์กด์ฌ ๊ฐ๋ฅ
- ์ธ๋ํค ๊ฐ์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ ๋ฐ์ ์ ์์
5. ๐ํ ์ด๋ธ ์ปฌ๋ผ์ ๋ํ ์ ์ ๋ณ๊ฒฝ
<sql />
#Oracle
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY
(์ปฌ๋ผ๋ช
1 ๋ฐ์ดํฐ์ ํ [DEFAULT ์] [NOT NULL ๋ถ๋ฅ],
์ปฌ๋ผ๋ช
2 ๋ฐ์ดํฐ์ ํ [DEFAULT ์] [NOT NULL ๋ถ๋ฅ], ...);
<sql />
#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
โ
7. ๐RENAME
<sql />
RENAME ๋ฐ๊ฟ ํ
์ด๋ธ๋ช
TO ๋ฐ๊พธ๊ณ ์ถ์ ํ
์ด๋ธ ๋ช
โ
8. ๐์ฐธ์กฐ๋์(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 : ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์๋ฐํ๋ ์ ๋ ฅ ์ก์ ์ ์ทจํ์ง ์์
9. ๐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๋์ง ์์
|
ํ
์ด๋ธ์ ์ ์ ์์ฒด๋ฅผ ์์ ํ ์ญ์ ํจ
|
ํ
์ด๋ธ์ ์ต์ด ์์ฑ๋ ์ด๊ธฐ ์ํ๋ก ๋ง๋ฌ
|
๋ฐ์ดํฐ๋ง ์ญ์
|
๋ก๊ทธ๋ฅผ ๋จ๊ธฐ์ง ์์
|
๋ก๊ทธ๋ฅผ ๋จ๊น
|
10. ๐SELECT [ALL/DISTINCT]
โ
ALL - ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๋ชจ๋ ์ถ๋ ฅ. Defualt๊ฐ์.
DISTINCT - ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ 1๊ฑด์ผ๋ก ์ฒ๋ฆฌํด์ ์ถ๋ ฅ.
ํน์ฑ
|
์ค๋ช
|
์์์ฑ
(Atomicity) |
ํธ๋์ญ์
์์ ์ ์๋ ์ฐ์ฐ๋ค์ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ ์๋๋ฉด ์ ํ ์คํ๋์ง ์์ ์ํ๋ก ๋จ์ ์์ด์ผ ํจ
(All or Nothing)
|
์ผ๊ด์ฑ
(Consistency) |
ํธ๋์ญ์
์ด ์คํ ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ฉ์ด ์๋ชป ๋์ง ์์๋ค๋ฉด
ํธ๋์ญ์
์ด ์คํ๋ ์ดํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๋ชป์ด ์์ผ๋ฉด ์๋จ
|
๊ณ ๋ฆฝ์ฑ
(Isolation) |
ํธ๋์ญ์
์ด ์คํ๋๋ ๋์ค์ ๋ค๋ฅธ ํธ๋์ญ์
์ ์ํฅ์ ๋ฐ์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์๋ ์๋จ
|
์ง์์ฑ
(Durability) |
ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด ๊ทธ ํธ๋์ญ์
์ด ๊ฐฑ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ
|
12. ๐ํธ๋์ญ์ ์ ๋ํ ๊ฒฉ๋ฆฌ์ฑ์ด ๋ฎ์ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์
โ
- Dirty Read : ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํด ์์ ๋์์ง๋ง ์์ง ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ.
- Non-Repeatable Read : ํ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋๋ฒ ์ํ ํ๋๋ฐ, ๊ทธ ์ฌ์ด์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ฐ์ ์์ ๋๋ ์ญ์ ํ๋ ๋ฐ๋์ ๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋ํ๋๋ ํ์
- Phantom Read : ํ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์ํํ๋๋ฐ, ์ฒซ๋ฒ์งธ ์ฟผ๋ฆฌ์์ ์๋ ์ ๋ น ๋ ์ฝ๋๊ฐ ๋๋ฒ์งธ ์ฟผ๋ฆฌ์์ ๋ํ๋๋ ํ์
โ
ORACLE์์๋ DDL ๋ฌธ์ฅ ์ํ ํ ์๋์ผ๋ก COMMIT์ ์ํํจ
SQL Server์์๋ DDL ๋ฌธ์ฅ ์ํ ํ COMMIT ์ํ X
13. ๐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๊ฐ์ ๊ฐ์ฅ ์์ ๊ฐ์ผ๋ก ๊ฐ์ฃผํ์ฌ ์ค๋ฆ์ฐจ์์์ ์ ๋ ฌํ์ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋จผ์ ๋ํ๋จ.
14. ๐ํจ์
- ์ฌ์ฉ์ ์ ์ ํจ์
- ๋ด์ฅํจ์
- ๋จ์ผํํจ์ : ์ถ์ถ๋๋ ๊ฐ ํ๋ง๋ค ์์ ์ ์ํ. ๊ฐ ํ๋ง๋ค ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ. SELECT, WHERE, ORDER BY, UPDATE์ SET์ ์ ์ฌ์ฉ๊ฐ๋ฅ
๋ฐ์ดํฐ ํ์ ๋ณ๊ฒฝ๊ฐ๋ฅ, ์ค์ฒฉํด์ ์ฌ์ฉ๊ฐ๋ฅ
- ๋ค์คํ ํจ์ : ์ฌ๋ฌ๊ฐ์ ํ์ด ์ ๋ ฅ๋์ด ํ๋์ ๊ฐ ๋ฐํ. ์ง๊ณํจ์/๊ทธ๋ฃนํจ์/์๋์ฐํจ์
15. ๐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'
16. ๐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
- FROM : ๋ฐ์ท ๋์ ํ ์ด๋ธ ์ฐธ์กฐ
- WHERE : ๋ฐ์ท ๋์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒ์ ์ ๊ฑฐ
- GROUP BY : ํ๋ค์ ์๊ทธ๋ฃนํ ํจ
- HAVING : ๊ทธ๋ฃนํ ๋ ๊ฐ์ ์กฐ๊ฑด์ ๋ง๋ ๊ฒ๋ง์ ์ถ๋ ฅ
- SELECT : ๋ฐ์ดํฐ ๊ฐ์ ์ถ๋ ฅ/๊ณ์ฐ
- ORDER BY : ๋ฐ์ดํฐ ์ ๋ ฌ
17. ๐SQL Server์ TOP(N) ์ง์๋ฌธ
โ
N์ ํด๋น ํ๋ ๊ฐ์ด ๋์ผํ ๊ฒฝ์ฐ ํจ๊ป ์ถ๋ ฅ๋๋๋ก ํ๋ WITH TIES ์ต์ ์ ORDER BY ์ ๊ณผ ํจ๊ป ์ฌ์ฉ
์์) SELECT TOP(2) WITH TIES ENAME, SAL FROM EMP ORDER BY SAL DESC;
18. ๐JOIN
โ
- ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ ๋ค์ ์ฐ๊ฒฐ๋๋ ๊ฒฐํฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ.
- ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ํ๋ค์ PK๋ FK๊ฐ์ ์ฐ๊ด์ ์ํด JOIN์ด ์ฑ๋ฆฝ. ํ์ง๋ง ์ด๋ค ๊ฒฝ์ฐ์๋ ์ด๋ฌํ PK, FK์ ๊ด๊ณ๊ฐ ์์ด๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ค์ ์ฐ๊ด๋ง์ผ๋ก JOIN์ด ์ฑ๋ฆฝ ๊ฐ๋ฅ.
- DBMS ์ตํฐ๋ง์ด์ ๋ FROM ์ ์ ๋์ด๋ ํ ์ด๋ธ๋ค์ ์์๋ก 2๊ฐ ์ ๋์ฉ ๋ฌถ์ด์ Join์ ์ํ
- EQUI JOIN์ ๊ด์ฌํ๋ ํ ์ด๋ธ ๊ฐ์ ์ปฌ๋ผ ๊ฐ๋ค์ด ์ ํํ๊ฒ ์ผ์นํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ
- ๋๋ถ๋ถ Non EQUI JOIN์ ์ํํ ์ ์์ง๋ง ๋๋ก๋ ์ค๊ณ์์ ์ด์ ๋ก ์ํ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ์์