[ 2๊ณผ๋ชฉ SQL ๊ธฐ๋ณธ ๋ฐ ํ์ฉ ]
2-1 SQL ๊ธฐ๋ณธ
DCL : ์ปจํธ๋กค = ๊ถํ
DDL : Definition ์ ์์ด. ๋ฐ์ดํฐ ๊ตฌ์กฐ(ํ ์ด๋ธ ์ด๋ฆ, ๊ตฌ์กฐ ์์ฑ, ํ ์ด๋ธ ์ญ์ ) ์ ์
DML : Manipulation ๋ฐ์ดํฐ ์กฐ์(์๋ก์ดํ ์ถ๊ฐ, ์์ , ์ญ์ ๋ฑ) + ์กฐํ
TCL : Transaction ์ปจํธ๋กค(DML ์กฐ์๊ฒฐ๊ณผ ์์ ๋จ์๋ณ๋ก ์ ์ด)
PL/SQL, T-SQL : ์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด, ์์ธํ ๋ช ์ธํ๋ ์ธ์ด
๋ฐ์ดํฐ ๋ถ์์ด : ํธ์คํธ ํ๋ก๊ทธ๋จ ์์ ์ฝ์ ๋์ด ์ฌ์ฉํ๋ DML ๋ช ๋ น์ด๋ค
๋ฐ์ด๋ธ ์ปฌ๋ผ ์ ์ ๋ณ๊ฒฝ : Oracle-ALTER TABLE + MODIFY ... SQL Server-ALTER TABLE + ALTER ...
SQL Server : ์ฌ๋ฌ ์ปฌ๋ผ ๋์ ์์ ์ง์X. ๊ดํธ์ฌ์ฉX, NOT NULL ๋ช ์ ์ํ๋ฉด NULL
NULL : Order By ์ ์์ Oracle์๊ฒ๋ ์ ์ผ ํฐ ๊ฐ, SQL Server์์ ์ผ ์์ ๊ฐ, ๋ชจ๋ฅด๋ ๊ฐ, ๊ฐ์ ๋ถ์ฌ, NULL๊ณผ์ ๋ชจ๋ ๋น๊ต๋ unknown(IS NULL์ ์ธ)
NULL์ 0 ์๋๋ค. ๊ณต๋ฐฑ๋ฌธ์ ์๋๋ค.
์ ๋ํฌ ์ ์ฝ์กฐ๊ฑด : NULL์ ๋ ฅO
ํ ์ด๋ธ์ ๋ถํ์ํ ์นผ๋ผ ์ญ์ : ALTER TABLE ํ ์ด๋ธ์ด๋ฆ DROP COLUMN ์ญ์ ํ ์ปฌ๋ผ๋ช ;
ํ ์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ : RENAME A TO B;
Dependent : PK๊ฐ ์๋ ๊ฒฝ์ฐ ์์ ํ ์ด๋ธ ๋ฐ์ดํฐ ์ ๋ ฅ์ ํ์ฉํ์ง ์๋(๋ง๋) ์ฐธ์กฐ ๋์ = ๋ถ๋ชจ์ PK๊ฐ ์กด์ฌํ ๋๋ง ์์ ์ ๋ ฅ ํ์ฉ
Automatic : ๋ถ๋ชจ์ PK์์ผ๋ฉด PK์์ฑํ๊ณ ์์๋ฐ์ดํฐ ์ ๋ ฅ
Cascade : ๋ถ๋ชจ ์ญ์ ์ ์์ ๊ฐ์ด ์ญ์
Restrict : ์์์ PK์์ด ๊ฒฝ์ฐ๋ง ๋ง์คํฐ ์ญ์ ํ์ฉ
INSERT ๋ฌธ์ฅ : ํน์ ์ฝ์ ์ปฌ๋ผ ๋ช ์ํ์ง ์์์ ๊ฒฝ์ฐ ๋ชจ๋ ์ปฌ๋ผ์ ์ฝ์ ํด์ผํจ
INSERT INTO VALUES / UPDATE SET
๋ฐ์ดํฐ ์ญ์ ์ ๋ก๊ทธ ์ฌ๋ถ : ๋ก๊ทธ ๋จ๊น(DELETE), ๋ก๊ทธ ์๋จ๊น(TRUNCATE, DROP)
๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์ฑ์ ๋ฐ๋ฅธ ๋ฌธ์ ์ : Dirty Read(๋ค๋ฅธ ํธ๋์ ์ ์ด ์์ ํ ์์ง ์ปค๋ฐ ์๋ ๋ฐ์ดํฐ ์ฝ์), Non-Repeatable Read(๋ค๋ฅธ ํธ๋ ์ญ์ ์ ์ํ ๋ณ๊ฒฝ์ผ๋ก ๊ฐ์ ์ฟผ๋ฆฌ์ ์ํ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง), Pantom Read(๊ฐ์ ์ฟผ๋ฆฌ์ ์ํ๊ฒฐ๊ณผ ์ ์ฒซ๋ฒ์งธ ์ฟผ๋ฆฌ์ ์๋ ๊ฒฐ๊ณผ๊ฐ ๋๋ฒ์งธ ์ฟผ๋ฆฌ์ ๋์ด)
DDL ๋ฌธ์ฅ ์ํ ํ : Oracle(์๋ ์ปค๋ฐO), SQL Server(์๋ ์ปค๋ฐX)
Oracle์ DDL ๋ฌธ์ฅ ์ํ ํ ๋ด๋ถ์ ์ผ๋ก ํธ๋์ญ์
์ข
๋ฃ์ํด / SQL Server์์๋ DDL ๋ฌธ์ฅ๋ ํธ๋์ ์
์ ํฌํจํจ
ROLLBACK์ ์ต์ด์ ํธ๋์ญ์ ์์ ๊น์ง ์ํ๋จ. ์ธ์ด๋ธ ํฌ์ธํธ๋ฅผ ์ธ๊ธํ์ง ์์ผ๋ฉด, ํธ๋์ญ์ ์ด ์์๋ ์ดํ์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์ํจ
INSERT INTO ํ ์ด๋ธ๋ช (์ปฌ๋ผ๋ช ) VALUES (''); -> Oracle์ NULL์ ๋ ฅ, SQL Server์ ํด๋น ์ปฌ๋ผ์ ๋น ๋ฌธ์์ด('')์ ์ฝ์
- ๋ด์ฅ ํจ์
- ๋ค์คํ ํจ์
- ์ง๊ณํ ํจ์
- ์๋์ฐํจ์
- ๊ทธ๋ฃนํจ์
- ๋จ์ผํ ํจ์
- ๋ค์คํ ํจ์
- ์ฌ์ฉ์ ์ ์ํจ์
๋ค์คํ ํจ์, ๋จ์ผํ ํจ์๋ ๋จ์ผ๊ฐ ๋ฐํ
A ↓ A ๋ก ์ปค์๊ฐ 3์งธ ์ค๊น์ง ๊ฐ์๋ค๋ฉด ๋ผ์ธ์ 3...!
SELECT
CASE WHEN ID= 'A' THEN 'B'
ELSE ID
END AS ID_reault
FROM your_table;
CASE WHEN ID = 'A' THEN 'B' // ID ์ปฌ๋ผ์ ๊ฐ์ด 'A'์ผ ๊ฒฝ์ฐ, 'B'๋ฅผ ๋ฐํํฉ๋๋ค.
ELSE ID // ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, ID ์ปฌ๋ผ์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
END AS ID_result // ๊ฒฐ๊ณผ๋ ID_result๋ผ๋ ์ด๋ฆ์ ์๋ก์ด ์ปฌ๋ผ์ผ๋ก ํ์๋ฉ๋๋ค
CASE WHEN Location = 'A' THEN 'B' (๊ฐ์) CASE Location WHEN 'A' THEN 'B'
ELSE :CASE ํํ์์์ ์ ์๋ WHEN ์กฐ๊ฑด๋ค ์ค ์ด๋ ๊ฒ์๋ ํด๋นํ์ง ์์ ๋ ๋ฐํํ ๊ฐ์ ์ง์ . ์์ผ๋ฉด NULL๋ฐํ
END : CASE ํํ์์ ๋์ ๋ํ๋
[ NULL ํจ์ ]
NVL(์1, ์2) / ISNULL(์1, ์2) : ์1์ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ. ์1 ๊ฒฐ๊ณผ๊ฐ์ด NULL์ด๋ฉด ์2 ๊ฐ ์ถ๋ ฅ <- ์1์ด NULL์ผ๋๋ฅผ ๋๋นํ๋ ๊ฒ
NULLIF(์1, ์2) : ์1==์2์ด๋ฉด NULL, ๊ฐ์ง ์์ผ๋ฉด ์1 ๋ฆฌํด <- ์ฃผ๋ก ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๋ฅผ NULL๋ก ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉ
Coalesce(์1, ์2, ์3 ...) : ์์์๋ถํฐ NULL์ด ์๋๊ฐ ์ถ๋ ฅ. ๋ชจ๋ NULL์ด๋ฉด NULL ๋ฆฌํด. coales ceCOUNT(*) ๋นผ๊ณ NULL์ ์ธํ๊ณ ๊ณ์ฐํจ
Order By ์ ์์ ์ปฌ๋ผ๋ช ๋์ Alias๋ ์ปฌ๋ผ์์ ์ ์ ํผ์ฉ ๊ฐ๋ฅ
SQL Server์ TOP N ์ง์๋ฌธ : WITH TIES(ํจ๊ป ์ถ๋ ฅ๋๋ ์ต์ ) ORDER BY(์ ๋ ฌ๊ธฐ์ค)
- Oracle ์กฐ์ธ : WHERE์ ์ JOIN์กฐ๊ฑด ๋ฃ์
- SQL Server ์กฐ์ธ : FROM์ ON์ ์ JOIN ์กฐ๊ฑด์ ๋ฃ์
DBMS ์ตํฐ๋ง์ด์ : FROM ์ ์ ๋์ด๋ ํ ์ด๋ธ์ด ์๋ฌด๋ฆฌ ๋ง์๋ ํญ์ 2๊ฐ์ ํ ์ด๋ธ์ ์ง์ง์ด์ JOIN ์ํํจ
'๐๏ธ ๊ธฐ์ ์ฌํ > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๊ธฐ] sqld 51ํ์ฐจ ์ํ ์์ ํ๊ธฐ (0) | 2023.11.18 |
---|---|
[SQLD๋ฒผ๋ฝ์น๊ธฐ] ์ถ๊ฐ ์ค๋ต๋ ธํธ (0) | 2023.11.17 |
[SQLD๋ฒผ๋ฝ์น๊ธฐ] SQL ์๊ฒฉ๊ฒ์ ์ค์ ๋ฌธ์ ์ค๋ต๋ ธํธ(2๊ณผ๋ชฉ-3) (2) | 2023.11.17 |
[SQLD๋ฒผ๋ฝ์น๊ธฐ] SQL ์๊ฒฉ๊ฒ์ ์ค์ ๋ฌธ์ ์ค๋ต๋ ธํธ(2๊ณผ๋ชฉ-2) (0) | 2023.11.17 |
[SQLD๋ฒผ๋ฝ์น๊ธฐ] SQL ์๊ฒฉ๊ฒ์ ์ค์ ๋ฌธ์ ์ค๋ต๋ ธํธ(1๊ณผ๋ชฉ) (1) | 2023.11.17 |