[SQLD] SQL ๊ธฐ๋ณธ ์ •๋ฆฌ

๐Ÿ“Œ SQL ๋ฌธ์˜ ์ข…๋ฅ˜

โœ… DML ๋ฌธ (Data Manipulation Language, ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)

: ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘(์กฐํšŒ, ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ) ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ

- SELECT

- INSERT

- UPDATE

- DELETE

- MERGE

 

โœ… TCL ๋ฌธ (Transaction Control Language, ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด)

: DML ๋ฌธ์— ์˜ํ•œ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜๊ตฌํžˆ ๋ฐ˜์˜ํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜(Transaction)์„ ์ œ์–ดํ•˜๋Š” ๊ตฌ๋ฌธ

- COMMIT

- ROLLBACK

- SAVEPOINT

 

โœ… DDL ๋ฌธ (Data Definition Language, ๋ฐ์ดํ„ฐ ์ •์˜์–ด)

: ํ…Œ์ด๋ธ”, ์ธ๋ฑ์Šค์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ธŒ์ ํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜(์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œ) ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ

- CREATE

- ALTER

- DROP

- RENAME

- TRUNCATE

 

โœ… DCL ๋ฌธ (Data Control Language, ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)

: ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ

- GRANT

- REVOKE

 

*  ๋ฌด์กฐ๊ฑด CREATE ๋‚˜์˜จ๋‹ค๊ณ  ๋ฌดํ„ฑ๋Œ€๊ณ  DDL ๊ณ ๋ฅด๋ฉด ๋ฐ”๋ณด๋œ๋‹ค.( ๊ทธ๊ฒŒ ๋‚˜)

DCL์ด ์œ ์ €๋ฅผ ์ƒ์„ฑ๋ฐ ์‚ญ์ œํ•˜๊ณ  ๊ถŒํ•œ ๊ด€๋ฆฌ๊นŒ์ง€ ๊ฐ€๋Šฅํ•จ ;

 

๐Ÿ“Œ ์ผ๋ฐ˜ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž

- UNION (ํ•ฉ์ง‘ํ•ฉ) > UNION/UNION ALL ์—ฐ์‚ฐ์ž๋กœ ๊ตฌํ˜„

- INTERSECTION ( ๊ต์ง‘ํ•ฉ)  > INTERSECT ์—ฐ์‚ฐ์ž๋กœ ๊ตฌํ˜„

- DIFFERENCE ( ์ฐจ์ง‘ํ•ฉ ) > EXCEPT / MINUS ์—ฐ์‚ฐ์ž๋กœ ๊ตฌํ˜„

- PRODUCT ( ๊ณฑ์ง‘ํ•ฉ ) > ์กฐ์ธ ๋ฌธ๋ฒ• ์ค‘ CROSS JOIN ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌํ˜„

 

๐Ÿ“Œ ํ•จ์ˆ˜์ •๋ฆฌ

 

โœ… DECODE โ‰’ if-else ๋ฌธ

ex) DECODE(GENDER,'M','๋‚จ์ž','F','์—ฌ์ž,'๊ธฐํƒ€')

1๏ธโƒฃ if (GENDER == 'M') return '๋‚จ์ž';

2๏ธโƒฃ else if(GENDER =='F') return '์—ฌ์ž';

3๏ธโƒฃ else return '๊ธฐํƒ€';

๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

โš ๏ธ else ๊ตฌ๋ฌธ ์—†๋Š”๋ฐ ํ•ด๋‹น์‹œ, NULL ๋ฐ˜ํ™˜ํ•จ

 

โœ… IN(a,b) : a๋˜๋Š” b ์ธ ํ–‰ ์ถ”์ถœ

โœ… NOT IN(a,b) : a,b ์•„๋‹Œ ํ–‰ ์ถ”์ถœ

โœ… ANY(a,b) : a ์ด๊ฑฐ๋‚˜ b ์ด๊ฑฐ๋‚˜ ์ธ ํ–‰ ์ถ”์ถœ

โœ… BETWEEN(a,b) : a,b ์‚ฌ์ด์— ์žˆ๋Š” ํ–‰ ์ถ”์ถœ

โœ… SUBSTR (*์˜ค๋ผํด ์™ธ ๋‹ค๋ฅธ DB ์—์„œ๋Š” substring ์œผ๋กœ ํ†ต์šฉ๋จ)

ex) SUBSTR(str, n)

: str์—์„œ n ๋ฒˆ์งธ ์œ„์น˜์—์„œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฝ์–ด๋“ค์ž„. ์ด ํ”„๋กœ๊ทธ๋žจ์ด SQL Server์— ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์  ์œ ์˜

ex) SUBSTR(str, n, m)

: str์—์„œ n ๋ฒˆ์งธ ์œ„์น˜์—์„œ m ๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ฝ์–ด ๋“ค์ธ๋‹ค.

 

๐Ÿ“Œ ์กฐ์ธ(JOIN)

- ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐ / ๊ฒฐํ•ฉ ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ

- PK/FK ๊ฐ’์˜ ์—ฐ๊ด€์— ์˜ํ•ด JOIN ์„ฑ๋ฆฝ

- PK,FK ๊ด€๊ณ„๊ฐ€ ์—†์–ด๋„ ๋…ผ๋ฆฌ์ ์ธ ๊ฐ’๋“ค์˜ ์—ฐ๊ด€์œผ๋กœ JOIN ์„ฑ๋ฆฝ ๊ฐ€๋Šฅ 

- ํ•œ SQL์—์„œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, SQL์ด ์ฒ˜๋ฆฌํ•  ๋• ๋‘ ๊ฐœ์˜ ์ง‘ํ•ฉ ๊ฐ„์—์„œ๋งŒ JOIN ์„ ์ˆ˜ํ–‰ํ•จ 

โžก๏ธ ๊ทธ๋ž˜์„œ AND ๋กœ ๊ณ„์† ๋ฌถ์–ด์•ผ ํ•œ๋‹ค.

 

โœ… ๋“ฑ๊ฐ€ ์กฐ์ธ(equijoin) :  ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๋“ฑํ˜ธ(=)์ธ ์กฐ์ธ. ๊ฐ’์ด ๋™์ผํ•œ ๊ฒฝ์šฐ์—๋งŒ ํ–‰์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

- ๋‘ ํ…Œ์ด๋ธ”๊ฐ„ ์นผ๋Ÿผ ๊ฐ’๋“ค์ด ์„œ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•œ๋‹ค 

[ T1 ํ…Œ์ด๋ธ” ]

C1 C2
1 A
2 B
3 C

 [ T2 ํ…Œ์ด๋ธ” ]

C1 C2
1 1
1 2
3 1
3 2
4 1
	SELECT COUNT(*) AS R1
    	FROM T1,A T2,B
        WHERE B.C1=A.C1;

>>  T1 ๊ณผ T2 ํ…Œ์ด๋ธ”์€ c1 ์นผ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ธ.

์กฐ์ธ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๋“ฑํ˜ธ(=) ์ด๋ฏ€๋กœ ์–‘์ชฝ ํ…Œ์ด๋ธ”์˜ C1 ๊ฐ’์ด ๋™์ผํ•œ ๊ฒฝ์šฐ์—๋งŒ ํ–‰์ด ๋ฐ˜ํ™˜๋˜๋Š” ๋“ฑ๊ฐ€์กฐ์ธ(eqijoin) ์„ ์ˆ˜ํ–‰.

์กฐ์ธ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์œผ๋ฏ€๋กœ COUNT(*) ๊ฐ’์€ 4๋‹ค !

C1 C2 C1 C2
1 A 1 1
1 A 1 2
3 C 3 1
3 C 3 2

โœ… ๋น„๋“ฑ๊ฐ€ ์กฐ์ธ( nonequjoin ) : ๋“ฑํ˜ธ ์™ธ์˜ ๋‹ค๋ฅธ ์กฐ์ธ ์กฐ๊ฑด์ด ์žˆ๋Š” ์กฐ์ธ

- ๋Œ€๋ถ€๋ถ„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๋”ฐ๋ผ Non Equi JOIN์ด ๋ถˆ๊ฐ€ํ•œ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. 

์ฃผ๋ฌธ๋ฒˆํ˜ธ ๊ณ ๊ฐ๋ฒˆํ˜ธ ์ฃผ๋ฌธ์ผ์ž ์ฃผ๋ฌธ๊ธˆ์•ก
501 1 20190501 20000
612 1 20190523 5000
728 1 20200311 25000
904 1 20200715 10000
404 2 20191208 7000
603 2 20200428 6000
807 2 20200527 17000

 

SELECT MIN(์ฃผ๋ฌธํ•ฉ๊ณ„ ๊ธˆ์•ก) AS ์ตœ์ € ์ฃผ๋ฌธํ•ฉ๊ณ„๊ธˆ์•ก
	FROM (SELECT A.๊ณ ๊ฐ๋ฒˆํ˜ธ ,A.์ฃผ๋ฌธ์ผ์ž,SUM(B.์ฃผ๋ฌธ๊ธˆ์•ก) AS ์ฃผ๋ฌธํ•ฉ๊ณ„๊ธˆ์•ก
    		FROM ์ฃผ๋ฌธ A, ์ฃผ๋ฌธ B
            WHERE B.๊ณ ๊ฐ๋ฒˆํ˜ธ = A.๊ณ ๊ฐ๋ฒˆํ˜ธ
            AND B.์ฃผ๋ฌธ์ผ์ž <= A.์ฃผ๋ฌธ์ผ์ž
            GROUP BY A.๊ณ ๊ฐ๋ฒˆํ˜ธ, A.์ฃผ๋ฌธ์ผ์ž);

* FROM ์ ˆ์— ์ฃผ๋ฌธํ…Œ์ด๋ธ”์„ 2๋ฒˆ ๊ธฐ์ˆ ํ•˜์—ฌ ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•˜์˜€๋Š”๋ฐ, ์ด์ฒ˜๋Ÿผ ๊ฐ™์€ ํ…Œ์ด๋ธ” ๊ฐ„์— ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์…€ํ”„์กฐ์ธ(Self Join) ์ด๋ผ๊ณ  ํ•œ๋‹ค.