header-img
Info :
๋ฐ€๋„
denseยน
์žฅ๋ž˜ํฌ๋ง : ๋‹จ์œ„ ๋ถ€ํ”ผ ๋‹น ์งˆ๋Ÿ‰์ด ๋ณด๋‹ค ๋นฝ๋นฝํ•œ ์‚ฌ๋žŒ ๋˜๊ธฐ
TOOLS/SQL 14
list_img
SQL: ์ ‘์ ์ด๋“  ์ฐจ์ด์ ์ด๋“  ๋ชจ์•„ ๋†”์•ผ ๋ณด์ธ๋‹ค, JOIN 1
2024.02.03
์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Join์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค. Join์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์—์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•ด ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ‚ค์›Œ๋“œ๋‹ค. ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„๋ฆฌํ•ด ๋ณด๊ด€ํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€ ๋‘ ํ…Œ์ด๋ธ” ์ด์ƒ์˜ ์ ‘์  ํ˜น์€ ์ฐจ์ด์ ์—์„œ ์œ ์˜๋ฏธํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋„์ถœํ•ด๋‚ด๋Š” ์ง‘ํ•ฉ์€ ๋—„๋ ˆ์•ผ ๋—„ ์ˆ˜ ์—†๋Š” ์‚ฌ์ด๋ผ ํ•˜๊ฒ ๋‹ค. Join์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ๊ฐ–๋‹ค ๋†“๊ณ  ๊ธฐ์ค€์ ๊ณผ ์ถœ๋ ฅ ๋ฒ”์œ„๋ฅผ ์–ด๋–ป๊ฒŒ ๋‘๋ƒ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ธ๋ถ„ํ™”๋˜์–ด ์žˆ๊ณ  ์ด๋Š” ์ง‘ํ•ฉ์˜ ๊ฐœ๋…๊ณผ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค. ๋‹ค๋งŒ ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ ๋“ฑ ์ผ๋ถ€ ์ง‘ํ•ฉ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์€ mySQL์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, exists ๊ตฌ๋ฌธ์œผ๋กœ ์ง์ ‘ ๋งŒ๋“ค์–ด ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฌธ๋ฒ•๋“ค์„ ์•„๋ž˜ ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋А์Šจํ•˜๊ฒŒ ํ†บ์•„๋ณผ ๊ฒƒ์ด๋‹ค. 1) Inne..
list_img
SQL: ํ•„์ˆ˜ ๋ฌธ๋ฒ• ๋ชจ์Œ ์‹œํŠธ 1
2024.01.30
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/ ํ…Œ์ด๋ธ” ๊ด€๋ จ ํ‚ค์›Œ๋“œ ์˜๋ฏธ ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ CREATE DATABASE [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„]; ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒํ•˜๊ธฐ SHOW DATABASES; ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ์„ ์–ธํ•˜๊ธฐ USE [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„]; ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ CREATE TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] ( [์ปฌ๋Ÿผ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…], [์ปฌ๋Ÿผ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…], ... ); ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] RENAME [์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ์ด๋ฆ„] ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ ์ถ”๊ฐ€ํ•˜๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] ADD COLUMN [์ปฌ๋Ÿผ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…]; ๊ธฐ์กด ์ปฌ๋Ÿผ ํƒ€์ž… ๋ณ€๊ฒฝํ•˜๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] MODIFY COLUMN [์ปฌ๋Ÿผ ์ด๋ฆ„] [์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํƒ€์ž…]; ๊ธฐ์กด ์ปฌ๋Ÿผ ์ด๋ฆ„..

 

 

 

 

 

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Join์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค. Join์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์—์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•ด ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ‚ค์›Œ๋“œ๋‹ค. ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„๋ฆฌํ•ด ๋ณด๊ด€ํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€ ๋‘ ํ…Œ์ด๋ธ” ์ด์ƒ์˜ ์ ‘์  ํ˜น์€ ์ฐจ์ด์ ์—์„œ ์œ ์˜๋ฏธํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋„์ถœํ•ด๋‚ด๋Š” ์ง‘ํ•ฉ์€ ๋—„๋ ˆ์•ผ ๋—„ ์ˆ˜ ์—†๋Š” ์‚ฌ์ด๋ผ ํ•˜๊ฒ ๋‹ค.

 

 

Join์˜ ์ข…๋ฅ˜. ์ถœ์ฒ˜// https://lyk00331.tistory.com/107

 

 

Join์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ๊ฐ–๋‹ค ๋†“๊ณ  ๊ธฐ์ค€์ ๊ณผ ์ถœ๋ ฅ ๋ฒ”์œ„๋ฅผ ์–ด๋–ป๊ฒŒ ๋‘๋ƒ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ธ๋ถ„ํ™”๋˜์–ด ์žˆ๊ณ  ์ด๋Š” ์ง‘ํ•ฉ์˜ ๊ฐœ๋…๊ณผ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค. ๋‹ค๋งŒ ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ ๋“ฑ ์ผ๋ถ€ ์ง‘ํ•ฉ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์€ mySQL์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, exists ๊ตฌ๋ฌธ์œผ๋กœ ์ง์ ‘ ๋งŒ๋“ค์–ด ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฌธ๋ฒ•๋“ค์„ ์•„๋ž˜ ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋А์Šจํ•˜๊ฒŒ ํ†บ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

 

 

1) Inner Join

2) (Left/ Right) Outer Join

3) intersect/ minus

 

 

์ถ”๊ฐ€๋กœ, ๋ฐ์ดํ„ฐ๋Š” ๊ธˆ์ผ์ž ๊ธฐ์ค€ 29cm์˜ ์‹ค์‹œ๊ฐ„ ๋ฒ ์ŠคํŠธ๋ฅผ ํฌ๋กค๋งํ•œ ๋’ค, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ตœ๋Œ€ํ•œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€๊ณตํ•ด ์˜ฌ๋ ธ๋‹ค. (ํ˜น์‹œ ๊ถ๊ธˆํ•˜์‹  ๋ถ„์ด ์žˆ์œผ์‹ค๊นŒ ํ•ด์„œ ๋ง๋ถ™์ด๋ฉด ํฌ๋กค๋ง์—๋Š” listly, ํฌ๋กค๋ง ํŒŒ์ผ์˜ sql์‹ ๊ฐ€๊ณต์—๋Š” tableconvert.com๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.) ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

select * from lrank;  *์ƒํ’ˆ์ฝ”๋“œ, ์ œํ’ˆ์˜ ์ •์ƒ๊ฐ€, ๋งค์ถœ ์ˆœ์œ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‹ค.
select * from linfo;  *์นดํ…Œ๊ณ ๋ฆฌ, ๋ธŒ๋žœ๋“œ, ์ƒํ’ˆ๋ช…, ์ข‹์•„์š” ์ˆ˜, ์ƒํ’ˆํ‰ ์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‹ค.

(์ƒํ’ˆ์ฝ”๋“œ์™€ ์ˆœ์œ„๋Š” ๋ถ„์„์„ ์œ„ํ•ด ๋‚ด๊ฐ€ ์ž„์˜๋กœ ๋ถ€์—ฌํ•œ ๊ฐ’์ด๋‹ค.)

 

 

lrank ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ.
linfo ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ.

 

 

 

 

 

1) Inner Join

 

Inner Join์€ ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ต์ง‘ํ•ฉ ๊ฐœ๋…์ด๋‹ค. (์Œ๋ฐฉ ๊ต์ง‘ํ•ฉ์€ ์•„๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐœ๋… ๊ด€๋ จํ•ด์„œ๋Š” 3) intersect ํŒŒํŠธ๋ฅผ ๋ณด๋ฉด ๋œ๋‹ค.) on์— ์ง€์ •ํ•ด ์ค€ ์ค‘์‹ฌ์ด ๋˜๋Š” ์ปฌ๋Ÿผ(Primary Key, PK: ๊ธฐ๋ณธํ‚ค) ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์ณ์„œ ๋ณด์—ฌ ์ค€๋‹ค. ๊ฐ€์žฅ ์ตœ์†Œ๊ฐ’์œผ๋กœ Inner Join์„ ์ ์šฉํ•ด ๋ณธ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜์˜ค๊ณ  ์ถœ๋ ฅ๊ฐ’์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

 

 

select * from linfo li
inner join lrank lr on li.์ƒํ’ˆ์ฝ”๋“œ = lr.์ƒํ’ˆ์ฝ”๋“œ;

 

 

 

 

๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ด ์ค„์—ˆ๋‹ค. ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ณผ๋ฅจ ์ฐจ์ด ๋•Œ๋ฌธ์ด๋‹ค. linfo๋Š” ์ „์ฒด ๋“ฑ๋ก ์ƒํ’ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‹ˆ ๋ณผ๋ฅจ์ด ํฌ์ง€๋งŒ lrank๋Š” ๊ฐœ์ค‘ ๋งค์ถœ ํƒ‘ ์‹์Šค๋งŒ ๋ฝ‘์€ ๊ฒƒ์ด๋‹ˆ ๊ทธ๋ ‡๋‹ค. ์ด๋ ‡๊ฒŒ ๋‘ ํ…Œ์ด๋ธ”์„ Inner Join ๋ฐฉ์‹์œผ๋กœ ์ •์ œํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด๋„ฃ์ง€ ๋ชป ํ•œ null ๊ฐ’์ด ๋น ์ง„ ์ƒํƒœ๋กœ ๋‚˜์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ์ •๋ณด๊ฐ’์„ ์ข€ ์ค„์—ฌ ์ค€๋‹ค๋ฉด ์ง๊ด€์ ์ธ ํ‘œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

 

 

select lr.์ˆœ์œ„, lr.์ƒํ’ˆ์ฝ”๋“œ, li.์นดํ…Œ๊ณ ๋ฆฌ, li.๋ธŒ๋žœ๋“œ๋ช…, li.์ƒํ’ˆ๋ช… from linfo li
inner join lrank lr on li.์ƒํ’ˆ์ฝ”๋“œ = lr.์ƒํ’ˆ์ฝ”๋“œ
order by lr.์ˆœ์œ„;

 

 

 

 

์ด๋ ‡๊ฒŒ ์žก์•„ ์ฃผ๋ฉด ๋’ค์ฃฝ๋ฐ•์ฃฝ์ด๋˜ ์ˆœ์œ„๊ฐ€ ์ผ๋ ฌ๋กœ ์ •๋ ฌ๋˜๊ณ  ์ƒํ’ˆ์ฝ”๋“œ, ์นดํ…Œ๊ณ ๋ฆฌ, ๋ธŒ๋žœ๋“œ๋ช…, ์ƒํ’ˆ๋ช…๊นŒ์ง€ ์ง๊ด€์ ์œผ๋กœ ๋ณด์ธ๋‹ค. 

 

 

๋˜ Inner Join์€ (mySQL์—์„œ) ๊ธฐ๋ณธ ์กฐ์ธ์ด๊ธฐ ๋•Œ๋ฌธ์— from์— ์ถ”๊ฐ€ ํ…Œ์ด๋ธ”์„ ๋„ฃ์–ด์ฃผ๊ณ  where ์ ˆ์— ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ํ˜•์‹์œผ๋กœ๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด.

 

 

select lr.์ˆœ์œ„, lr.์ƒํ’ˆ์ฝ”๋“œ, li.๋ธŒ๋žœ๋“œ๋ช…, li.์ƒํ’ˆ๋ช…, li.์ข‹์•„์š”, li.์ƒํ’ˆํ‰ 
from linfo li, lrank lr
where li.์ƒํ’ˆ์ฝ”๋“œ = lr.์ƒํ’ˆ์ฝ”๋“œ
order by lr.์ˆœ์œ„;

 

 

 

์ด๊ฒƒ๋„ ์œ„์™€ ๋™์ผํ•˜๊ฒŒ ์ถœ๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜ ์ค‘ ํŽธํ•œ ์ชฝ์„ ์ทจ์‚ฌ์„ ํƒํ•ด์„œ ์“ฐ๋ฉด ๋˜๊ฒ ๋‹ค. ๋˜, ํ•ด๋‹น ๋ฐฉ์‹์€ ์กฐ๊ฑด์„ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฑธ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ค‘ ์ƒํ’ˆํ‰์ด ์ ์€ ๊ฒƒ์€ ์‹ ์ƒํ’ˆ์ธ๋ฐ ๋งค์ถœ์ด ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ˆ ํ”„๋กœ๋ชจ์…˜ ๋“ฑ์œผ๋กœ ๋ฐ€์–ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿด ๋•Œ๋Š”,

 

 

select lr.์ˆœ์œ„, lr.์ƒํ’ˆ์ฝ”๋“œ, li.๋ธŒ๋žœ๋“œ๋ช…, li.์ƒํ’ˆ๋ช…, li.์ข‹์•„์š”, li.์ƒํ’ˆํ‰ 
from linfo li, lrank lr
where li.์ƒํ’ˆ์ฝ”๋“œ = lr.์ƒํ’ˆ์ฝ”๋“œ and li.์ƒํ’ˆํ‰ < 10
order by lr.์ˆœ์œ„;

 

 

 

 

ํ•ด๋‹น ๋ฐฉ์‹์œผ๋กœ ์ƒํ’ˆํ‰์ด ์ ์€ ๊ฑธ ๊ฑธ๋Ÿฌ์„œ ์œ ์˜๋ฏธํ•œ ํ‘œ๋ฅผ ๋งŒ๋“ค์–ด๋„ ์ข‹๊ฒ ๋‹ค.

 

 

 

 

 

 

2) (Left/ Right) Outer Join

 

Outer Join์—๋Š” ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ์ž ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์„ ์–ด๋””๋กœ ์žก๋А๋ƒ์— ๋”ฐ๋ผ ๊ฐ๊ฐ Left/ Right/ Full Outer Join์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์ด ์ค‘ ์„ฑ๋Šฅ ์ƒ ๊ฑฐ์˜ ์“ธ ์ผ์ด ์—†๋Š” Full Outer Join์„ ์ œํ•˜๊ณ  ์—ฌ๊ธฐ์„œ๋Š” Left์™€ Right Join๋งŒ ๋‹ค๋ฃฌ๋‹ค. ๋‘˜์€ ์„ฑ๋Šฅ ์ฐจ์ด ์—†์ด ์™„์ „ํžˆ ๋™์ผํ•ด์„œ, ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‘˜ ์ด์ƒ์ด ์ฟผ๋ฆฌ ์ž‘์—…ํ•  ๊ฒฝ์šฐ์—๋Š” ์™ผ์ชฝ์ด๋“  ์˜ค๋ฅธ์ชฝ์ด๋“  ํ•œ ์ชฝ์œผ๋กœ ํ†ต์ผํ•˜๊ธธ ๊ถŒํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ฐ€๋…์„ฑ์ด ์‹ฌํžˆ ์•ˆ ์ข‹๋‹ค๊ณ ......

 

 

Outer Join์€ ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์— ๋‚˜๋จธ์ง€ ํ•œ ํ…Œ์ด๋ธ”์ด ํ•ฉ์ณ์ง€๋Š” ํ˜•ํƒœ๋‹ค. ๋งŒ์•ฝ ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ’์ด๋ผ๋ฉด ํ•ฉ์ณ์ง€๋Š” ํ…Œ์ด๋ธ”์—๋„ ๊ทธ ๊ฐ’์€ ์ง€์›Œ์ง„๋‹ค. ์˜จ์ „ํ•œ ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์— ๋‚˜๋จธ์ง€ ํ•œ ํ…Œ์ด๋ธ”์˜ ๊ต์ง‘ํ•ฉ๊นŒ์ง€๋งŒ ์‚ด์•„๋‚จ๋Š” ๊ฒƒ์ด๋‹ค.  

 

 

select lr.์ˆœ์œ„, li.์ƒํ’ˆ๋ช…, lr.์ •์ƒ๊ฐ€ from linfo li
right outer join lrank lr on li.์ƒํ’ˆ์ฝ”๋“œ = lr.์ƒํ’ˆ์ฝ”๋“œ;

 

select lr.์ˆœ์œ„, li.์ƒํ’ˆ๋ช…, lr.์ •์ƒ๊ฐ€ from linfo li
left outer join lrank lr on li.์ƒํ’ˆ์ฝ”๋“œ = lr.์ƒํ’ˆ์ฝ”๋“œ;

 

 

์—ฌ๊ธฐ์„œ ์งˆ๋ฌธ, ์ด ๋‘ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’์€ ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ ์—†์„๊นŒ? ๋‘ ์ฟผ๋ฆฌ๋Š” right์™€ left๋งŒ ๋นผ๊ณ ๋Š” ๋‹ค ๋™์ผํ•˜๋‹ค.

 

 

right outer join ๊ฒฐ๊ณผ๊ฐ’.

 

left outer join ๊ฒฐ๊ณผ๊ฐ’.

 

 

์ฐจ์ด๊ฐ€ ๋ณ„๋กœ ์—†์„ ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ ๋ณด๋‹ค์‹œํ”ผ ์ฐจ์ด๊ฐ€ ํฌ๋‹ค.  ๋‘ Join ๊ฐ„์˜ ๊ธฐ์ค€ ํ…Œ์ด๋ธ” ์„ค์ •์ด ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ธฐ๋Š” ํ˜„์ƒ์ด๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ” ์žˆ๋“ฏ์ด, linfo๋Š” ์ „์ฒด ์ƒํ’ˆ์ •๋ณด ํ…Œ์ด๋ธ”์ด๋‹ค. lrank๋Š” ๊ทธ ์ค‘ ๋งค์ถœ ์ƒ์œ„๊ถŒ ์ƒํ’ˆ๋งŒ ๋žญํ‚น์— ์˜ฌ๋ฆฌ๋ฉด์„œ ์ง‘๊ณ„๋œ ๋ฐ์ดํ„ฐ์ด๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ž์ฒด ํฌ๊ธฐ๋Š” ๋ญ๊ฐ€ ๋” ํด๊นŒ? ๋‹น์—ฐํžˆ linfo์ด๋‹ค. linfo๊ฐ€ lrank๋ณด๋‹ค ๋ฐ์ดํ„ฐ์˜ ๋ณผ๋ฅจ์ด ํ›จ์”ฌ ํฌ๋‹ค. ์ƒํ’ˆ๋“ฑ๋ก์ด ๋˜์ง€ ์•Š์€ ์ƒํ’ˆ์ด ๋žญํ‚น์— ์˜ค๋ฅผ ๋ฆฌ ์—†์œผ๋‹ˆ linfo๊ฐ€ lrank๋ฅผ ์•„์˜ˆ ํฌํ•จํ•œ๋‹ค๊ณ  ๋งํ•ด๋„ ์ข‹๊ฒ ๋‹ค.

 

 

Outer Join์€ ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์— ๋‚˜๋จธ์ง€ ํ•œ ํ…Œ์ด๋ธ”์ด ํ•ฉ์ณ์ง€๋Š” ํ˜•ํƒœ๋ผ๊ณ  ํ–ˆ๋‹ค. lrank์— Left Join์„ ํ•œ๋‹ค๋ฉด ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์€ lrank๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋˜์ง€๋งŒ, lrank์— Right Join์„ ํ•œ๋‹ค๋ฉด ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์€ linfo๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— lrank์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ์ƒํ’ˆ๋“ค๊นŒ์ง€ ๊ฐ™์ด ๋œฌ๋‹ค. Outer Join ์‹œ์—๋Š” ์–ด๋–ค ๊ฑธ ์จ๋„ ์ƒ๊ด€ ์—†์ง€๋งŒ ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์ด ์–ด๋”˜์ง€๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ์ž‘์—…ํ•ด์•ผ ํ•œ๋‹ค.

 

 

์ถ”๊ฐ€๋กœ ๋ง๋ถ™์ด๋ฉด, Outer Join์œผ๋กœ Inner Join์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

select * from lrank lr 
left outer join linfo li on lr.์ƒํ’ˆ์ฝ”๋“œ = li.์ƒํ’ˆ์ฝ”๋“œ 
where li.์ƒํ’ˆ์ฝ”๋“œ is not null;

 

 

 

 

on๊ตฌ ๋’ค์— where์ ˆ์„ ์ฃผ๊ณ  is not null๋กœ null๊ฐ’์„ ์ œ๊ฑฐํ•ด ์ฃผ๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋А๋‹ˆ ๊ทธ๋ƒฅ Inner Join์„ ๊ฑฐ๋Š” ๊ฒŒ ๋น ๋ฅด๊ณ  ๊น”๋”ํ•˜๊ฒ ๋‹ค.

 





3) intersect/ minus

 

์œ„์—์„œ Inner์™€ Outer Join์„ ๋‹ค๋ค˜๋‹ค. ์ด์ฏค ๋˜๋ฉด ๊ถ๊ธˆํ•˜๋‹ค. ์•„๋‹ˆ, Join์ด ๊ทธ๊ฒŒ ๋์ด๋ƒ. ์ง„์‹ฌ์ด์•ผ? ์ง‘ํ•ฉ ์„ค๋ช…ํ•˜๋ ค๋ฉด ํ•œ์ฐธ ๋‚จ์•˜์ž–์•„. ๊ทธ๋ž˜. ๋‚˜๋„ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ๋‹ค. ํ•˜์ง€๋งŒ ์•„์‰ฝ๊ฒŒ๋„ mySQL์˜ ๊ฒฝ์šฐ์—๋Š” ๊ต์ง‘ํ•ฉ๊ณผ ์ฐจ์ง‘ํ•ฉ์— ํ•ด๋‹นํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ณ„๋„๋กœ ๋งŒ๋“ค์–ด ์จ์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ.

 

 

intersect (๊ต์ง‘ํ•ฉ) ๊ตฌ๋ฌธ
select * from linfo a
where exists (select 1 from lrank b where a.์ƒํ’ˆ์ฝ”๋“œ = b.์ƒํ’ˆ์ฝ”๋“œ);

 

 

์ด๋•Œ select ๋’ค์˜ 1์€ ๋‹จ์ˆœํžˆ exists(์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋งŒ ์ฐพ์œผ๋ฉด ๋˜๋Š” ํ•จ์ˆ˜)๊ฐ€ ์•ž์— ์™”๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ถœ๋ ฅ์„ ์œ„ํ•ด ์จ์คฌ๋‹ค. select 1 from ํ˜•์‹์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์น˜๋ฉด ์‹ค์ œ ๊ฐ’์„ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ๊ฐ’์ด ์žˆ๋ƒ ์—†๋ƒ๋งŒ ๊ฒ€์ฆํ•˜๊ณ  ์žˆ์œผ๋ฉด 1 ์ณ ์ค€๋‹ค. ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๋‹ค. 

 

 

 



minus ๊ตฌ๋ฌธ
select * from linfo a
where not exists (select 1 from lrank b where a.์ƒํ’ˆ์ฝ”๋“œ = b.์ƒํ’ˆ์ฝ”๋“œ);

 

 

๊ต์ง‘ํ•ฉ์˜ ๋ฐ˜๋Œ€๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์ฐจ์ง‘ํ•ฉ์ด๋‹ค. ๋งŽ์ด ๋ฐ”๊ฟ€ ํ•„์š” ์—†์ด exists ์•ž์— not ๋ถ™์—ฌ์„œ ๊ต์ง‘ํ•ฉ์ด ์•„๋‹Œ ๊ฐ’๋งŒ ๋ถˆ๋Ÿฌ์™€ ์ฃผ๋ฉด ๋œ๋‹ค.

 

 

 

 

 

 

์—ฌ๊ธฐ๊นŒ์ง€, ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ๋ถˆ๋Ÿฌ์™€ ํ•œ ๋ˆˆ์— ๋ณด๊ฒŒ ํ•ด ์ฃผ๋Š” Join์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋‹ค. ์“ฐ๋ฉด์„œ ๋А๋‚€ ๊ฒŒ, ์• ์ดˆ์— ๋ญ˜ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ์ฃฝ์ด ๋˜๋“  ๋ฐฅ์ด ๋˜๋“  ํ•  ๊ฑฐ ๊ฐ™๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณผ ๊ฑด๋ฐ, ์˜ˆ์œ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€์„œ ์ž˜ ์„ค๋ช…ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

 

 

 

์ฐธ๊ณ 

Inpa dev ๋‹˜ ๋ธ”๋กœ๊ทธ

BK_Paul ๋‹˜ ๋ธ”๋กœ๊ทธ

๋”๋ณด๊ธฐ
TOOLS/SQL

 

 

 

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/ ํ…Œ์ด๋ธ” ๊ด€๋ จ ํ‚ค์›Œ๋“œ

์˜๋ฏธ ์ฟผ๋ฆฌ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ CREATE DATABASE [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„];
๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒํ•˜๊ธฐ SHOW DATABASES;
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ์„ ์–ธํ•˜๊ธฐ USE [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„];
ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ CREATE TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] (
[์ปฌ๋Ÿผ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…],
[์ปฌ๋Ÿผ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…], ...
);
ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„]
RENAME [์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ์ด๋ฆ„]
์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ ์ถ”๊ฐ€ํ•˜๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„]
ADD COLUMN [์ปฌ๋Ÿผ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…];
๊ธฐ์กด ์ปฌ๋Ÿผ ํƒ€์ž… ๋ณ€๊ฒฝํ•˜๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„]
MODIFY COLUMN [์ปฌ๋Ÿผ ์ด๋ฆ„] [์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํƒ€์ž…];
๊ธฐ์กด ์ปฌ๋Ÿผ ์ด๋ฆ„๊ณผ ํƒ€์ž… ๋ณ€๊ฒฝํ•˜๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] CHANGE COLUMN [์ปฌ๋Ÿผ ์ด๋ฆ„]
[์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ ์ด๋ฆ„] [์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํƒ€์ž…];
์ปฌ๋Ÿผ ์ง€์šฐ๊ธฐ ALTER TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] DROP COLUMN [์ปฌ๋Ÿผ ์ด๋ฆ„];
ํ…Œ์ด๋ธ” ๊ฐ’๋งŒ ์ง€์šฐ๊ธฐ TRUNCATE TABLE [ํ…Œ์ด๋ธ” ์ด๋ฆ„];
๋ฐ์ดํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฝ์ž…ํ•˜๊ธฐ INSERT INTO [ํ…Œ์ด๋ธ” ์ด๋ฆ„] (
[์ปฌ๋Ÿผ1 ์ด๋ฆ„], [์ปฌ๋Ÿผ2 ์ด๋ฆ„], [์ปฌ๋Ÿผ3 ์ด๋ฆ„])
VALUES ([์ปฌ๋Ÿผ1 ๊ฐ’], [์ปฌ๋Ÿผ2 ๊ฐ’] [์ปฌ๋Ÿผ3 ๊ฐ’]),
([์ปฌ๋Ÿผ1 ๊ฐ’], [์ปฌ๋Ÿผ2 ๊ฐ’] [์ปฌ๋Ÿผ3 ๊ฐ’]),
([์ปฌ๋Ÿผ1 ๊ฐ’], [์ปฌ๋Ÿผ2 ๊ฐ’] [์ปฌ๋Ÿผ3 ๊ฐ’]);
๋ฐ์ดํ„ฐ ์‚ญ์ œํ•˜๊ธฐ DELETE FROM [ํ…Œ์ด๋ธ” ์ด๋ฆ„] WHERE ์กฐ๊ฑด์‹;
๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•˜๊ธฐ UPDATE [ํ…Œ์ด๋ธ” ์ด๋ฆ„] SET [์ปฌ๋Ÿผ ์ด๋ฆ„] = [์ƒˆ ๊ฐ’] WHERE ์กฐ๊ฑด์‹;

 

 

 

 

๋ฐ์ดํ„ฐ ํƒ€์ž…

๋ฐ์ดํ„ฐํ˜• ํ‘œํ˜„ ๋ฐ”์ดํŠธ ์ˆ˜ ํ‘œํ˜„ ๋ฒ”์œ„
์ •์ˆ˜ํ˜•(์ˆซ์žํ˜•) TINYINT 1 -128~ 127
์ •์ˆ˜ํ˜•(์ˆซ์žํ˜•) SMALLINT 2 -32,768~ 32,767
์ •์ˆ˜ํ˜•(์ˆซ์žํ˜•) MEDIUMINT 3 ์•ฝ -838๋งŒ~ 838๋งŒ
์ •์ˆ˜ํ˜•(์ˆซ์žํ˜•) INT 4 ์•ฝ -21์–ต~ 21์–ต
์ •์ˆ˜ํ˜•(์ˆซ์žํ˜•) BIGINT 8 ์•ฝ -900๊ฒฝ~ 900๊ฒฝ
์‹ค์ˆ˜ํ˜•(์ˆซ์žํ˜•) FLOAT 4 ์†Œ์ˆ˜์  ์•„๋ž˜ 7์ž๋ฆฌ๊นŒ์ง€
์‹ค์ˆ˜ํ˜•(์ˆซ์žํ˜•) DOUBLE 8 ์†Œ์ˆ˜์  ์•„๋ž˜ 15์ž๋ฆฌ๊นŒ์ง€
๋ฌธ์žํ˜• CHAR(n) ์ตœ๋Œ€ 255 n์„ 1๋ถ€ํ„ฐ 255๊นŒ์ง€ ์ง€์ •
๋ฌธ์žํ˜• VARCHAR(n) ์ตœ๋Œ€ 65,535 n์„ 1๋ถ€ํ„ฐ 65,535๊นŒ์ง€ ์ง€์ •
๋ฌธ์žํ˜• TINYTEXT 255 ๊ณ ์ • 255 ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด๊นŒ์ง€
๋ฌธ์žํ˜• TEXT 65,535 ๊ณ ์ • 65,535 ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด๊นŒ์ง€
๋ฌธ์žํ˜• MEDIUMTEXT ์•ฝ 1,600๋งŒ ์•ฝ 1,600๋งŒ ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด๊นŒ์ง€
๋ฌธ์žํ˜• LONGTEXT ์•ฝ 42์–ต ์•ฝ 42์–ต ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด๊นŒ์ง€
๋‚ ์งœํ˜• DATE 3 0000-00-00~ 9999-12-31
๋‚ ์งœํ˜• DATETIME 3 0000-00-00 00:00:00~ 9999-12-31 23:59:59
๋‚ ์งœํ˜• TIME 4 -838:59:59~ 838:59:59
๋‚ ์งœํ˜• YEAR 1 1901~2155

 

 

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/ ํ…Œ์ด๋ธ”/ ์ปฌ๋Ÿผ ์ด๋ฆ„ ์ •ํ•˜๊ธฐ ๊ทœ์น™

1) ๋ฌธ์ž, ์ˆซ์ž, _ ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
2) ์ด๋ฆ„์— ์“ฐ์ด๋Š” ๋ฌธ์ž๋Š” ์ฃผ๋กœ ์˜๋ฌธ ์†Œ๋ฌธ์ž๋ฅผ ์“ด๋‹ค. ํ•œ๊ธ€๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ธ์ฝ”๋”ฉ ์ด์Šˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ. 
๋ณดํ†ต ํ‚ค์›Œ๋“œ๋‚˜ ํ•จ์ˆ˜๋ช…์€ ๋Œ€๋ฌธ์ž, ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์ด๋ฆ„์—๋Š” ์†Œ๋ฌธ์ž ์‚ฌ์šฉ.
3) ์ด๋ฏธ ํ‚ค์›Œ๋“œ, ํ•จ์ˆ˜๋ช… ๋“ฑ ๋ฌธ๋ฒ•์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” "์˜ˆ์•ฝ์–ด"๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
4) ๋‹จ์–ด์™€ ๋‹จ์–ด ์‚ฌ์ด์—๋Š” ๋นˆ์นธ ๋Œ€์‹  _๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
5) ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. ์ˆซ์ž, _ ๋ถˆ๊ฐ€.
6) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์€ ์ค‘๋ณต๋  ์ˆ˜ ์—†๋‹ค. ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์—ญ์‹œ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ์ค‘๋ณต๋  
์ˆ˜ ์—†์œผ๋ฉฐ ์ปฌ๋Ÿผ ์ด๋ฆ„์€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์ค‘๋ณต๋  ์ˆ˜ ์—†๋‹ค.

 

 

 

 

 

์ฃผ์š” ์ฟผ๋ฆฌ ํ‚ค์›Œ๋“œ

ํ‚ค์›Œ๋“œ ์˜๋ฏธ ๋ฌธ๋ฒ• ์ž‘์„ฑ ์ˆœ์„œ ์‹คํ–‰ ์ˆœ์„œ
SELECT ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๋Š” ํ‚ค์›Œ๋“œ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„] 1 5
FROM ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ํ…Œ์ด๋ธ”์„ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ FROM [ํ…Œ์ด๋ธ” ์ด๋ฆ„] 2 1
WHERE ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ์˜ ์กฐ๊ฑด์„ ์ง€์ •ํ•ด์ฃผ๋Š” ํ‚ค์›Œ๋“œ WHERE ์กฐ๊ฑด์‹ 3 2
GROUP BY ์ปฌ๋Ÿผ์—์„œ ๋™์ผํ•˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋กœ์šฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ํ‚ค์›Œ๋“œ๋กœ ์—‘์…€์˜ ํ”ผ๋ฒ—๊ณผ ์œ ์‚ฌ
GROUP BY๊ฐ€ ์“ฐ์ธ ์ฟผ๋ฆฌ์˜ SELECT ์ ˆ์—๋Š” 
GROUP BY ๋Œ€์ƒ ์ปฌ๋Ÿผ๊ณผ ๊ทธ๋ฃน ํ•จ์ˆ˜๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ ๋Œ€์ƒ์œผ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค
GROUP BY [์ปฌ๋Ÿผ ์ด๋ฆ„] 4 3
HAVING ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃน์— ์กฐ๊ฑด์„ ์ง€์ •ํ•ด์ฃผ๋Š” ํ‚ค์›Œ๋“œ
๊ทธ๋ฃน ํ•จ์ˆ˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—
GROU BY์˜ WHERE ์ ˆ๋กœ ๋ถˆ๋ฆผ
HAVING ์กฐ๊ฑด์‹ 5 4
ORDER BY ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ด์ฃผ๋Š” ํ‚ค์›Œ๋“œ
๊ธฐ๋ณธ์ ์œผ๋กœ ASC(์˜ค๋ฆ„์ฐจ์ˆœ)๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ณ 
DESC(๋‚ด๋ฆผ์ฐจ์ˆœ)์œผ๋กœ ๋ณ„๋„ ์„ค์ • ๊ฐ€๋Šฅ
์ปฌ๋Ÿผ ์ด๋ฆ„ ๋’ค์— ๊ธฐ์ž…ํ•˜๋ฉด ๋จ
ORDER BY [์ปฌ๋Ÿผ ์ด๋ฆ„] 6 6
AS ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ์— ๋ณ„๋ช…์„ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ AS [์ปฌ๋Ÿผ ๋ณ„๋ช…] - -
LIMIT ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ์˜ ๋กœ์šฐ ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ LIMIT [๋กœ์šฐ ์ˆ˜] - -
DISTINCT ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋Š” ์ œ์™ธํ•˜๊ณ  ๊ฐ™์€ ๊ฐ’์€ ํ•œ ๋ฒˆ๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ํ‚ค์›Œ๋“œ DISTINCT [์ปฌ๋Ÿผ ์ด๋ฆ„] - -

 

 

 

 

์™€์ผ๋“œ์นด๋“œ

% / 0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž
_ / 1๊ฐœ์˜ ๋ฌธ์ž

 

'%e' / e๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด
e, ee, eevee, apple, pineapple

'e%' / e๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด
e, ee, eevee, eric

'%e%' / e๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด
e, ee, eevee, apple, pineapple, aespa

'_e' / e๋กœ ๋๋‚˜๊ณ  e ์•ž์— 1๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๋ฌธ์ž์—ด
ae, ee, ce

'%_e' / e๋กœ ๋๋‚˜๊ณ  e ์•ž์— 1๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๋ฌธ์ž์—ด
ee, eevee, apple, pineapple

'%_e_%' / e๋ฅผ ํฌํ•จํ•˜๊ณ  e ์•ž๋’ค๋กœ ๊ฐ๊ฐ 1๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๋ฌธ์ž์—ด
eevee, aespa

 

 

 

 

์ˆœ์œ„ ํ•จ์ˆ˜

[ํ•จ์ˆ˜ ์ด๋ฆ„] () OVER (ORDER BY [์ปฌ๋Ÿผ ์ด๋ฆ„])

ํ•จ์ˆ˜ ์ฐจ์ด์ 
RANK ๊ณต๋™ ์ˆœ์œ„๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค์Œ ์ˆœ์„œ๋กœ ๊ฑด๋„ˆ ๋œ€
DENSE_RANK ๊ณต๋™ ์ˆœ์œ„๊ฐ€ ์žˆ์–ด๋„ ๋‹ค์Œ ์ˆœ์œ„๋ฅผ ๋›ฐ์–ด ๋„˜์ง€ ์•Š์Œ
ROW_NUMBER ๊ณต๋™ ์ˆœ์œ„๋ฅผ ๋ฌด์‹œํ•จ

 

 

 

 

๊ทธ๋ฃน ํ•จ์ˆ˜

GROUP BY๊ฐ€ ์—†๋Š” ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ ์‹œ ์ „์ฒด ๋กœ์šฐ์— ์ ์šฉ๋จ

ํ•จ์ˆ˜ ์˜๋ฏธ
COUNT ๊ทธ๋ฃน์˜ ๊ฐ’ ์ˆ˜๋ฅผ ์„ธ๋Š” ํ•จ์ˆ˜
COUNT(1)์€ ํ•˜๋‚˜์˜ ๊ฐ’์„ 1๋กœ ์„ธ์–ด ์ฃผ๋Š” ํ‘œํ˜„์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ
GROUP BY๊ฐ€ ์—†๋Š” ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ ์‹œ ์ „์ฒด ๋กœ์šฐ์— ์ ์šฉ๋จ
SUM ๊ทธ๋ฃน์˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜
AVG ๊ทธ๋ฃน์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜
MIN ๊ทธ๋ฃน์˜ ์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
MAX ๊ทธ๋ฃน์˜ ์ตœ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

 

 

 

 

์ฃผ์š” ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž ์˜๋ฏธ ํ™œ์šฉ
BETWEEN ํŠน์ • ๋ฒ”์œ„ ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž BETWEEN A AND B
IN ๋ชฉ๋ก ๋‚ด ํฌํ•จ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž [์ปฌ๋Ÿผ ์ด๋ฆ„] IN (A, B, ..., C)
LIKE ํŠน์ • ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๋Š” ์—ฐ์‚ฐ์ž [์ปฌ๋Ÿผ ์ด๋ฆ„] LIKE [๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด]
IS NULL ๋ฐ์ดํ„ฐ๊ฐ€ NULL์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ์ž [์ปฌ๋Ÿผ ์ด๋ฆ„] IS NULL

 

 

 

 

์ฃผ์š” ๋ฌธ์žํ˜• ๋ฐ์ดํ„ฐ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช… ํ™œ์šฉ
LOCATE "ABC"์—์„œ "A"๋Š” ๋ช‡ ๋ฒˆ์งธ์— ์œ„์น˜ํ•ด ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•ด ์œ„์น˜ ๋ฐ˜ํ™˜ LOCATE("A","ABC")
SUBSTRING "ABC"์—์„œ 2๋ฒˆ์งธ ๋ฌธ์ž๋ถ€ํ„ฐ ๋ฐ˜ํ™˜ SUBSTRING("ABC", 2)
RIGHT "ABC"์—์„œ ์˜ค๋ฅธ์ชฝ 1๋ฒˆ์งธ ๋ฌธ์ž๊นŒ์ง€ ๋ฐ˜ํ™˜ RIGHT("ABC", 1)
LEFT "ABC"์—์„œ ์™ผ์ชฝ 1๋ฒˆ์งธ ๋ฌธ์ž๊นŒ์ง€ ๋ฐ˜ํ™˜ LEFT("ABC", 1)
UPPER "abc"๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊ฟ” ๋ฐ˜ํ™˜ UPPER("abc")
LOWER "ABC"๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ” ๋ฐ˜ํ™˜ LOWER("ABC")
LENGTH "ABC"์˜ ๊ธ€์ž ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ LENGTH("ABC")
CONCAT "ABC" ๋ฌธ์ž์—ด๊ณผ "CDF" ๋ฌธ์ž์—ด์„ ํ•ฉ์ณ ๋ฐ˜ํ™˜ CONCAT("ABC", "DEF")
REPLACE "ABC"์˜ "A"๋ฅผ "Z"๋กœ ๋ฐ”๊ฟ” ๋ฐ˜ํ™˜ REPLACE("ABC", "A", "Z")

 

 

 

 

์ฃผ์š” ์ˆซ์žํ˜• ๋ฐ์ดํ„ฐ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช… ํ™œ์šฉ
ABS ์ˆซ์ž์˜ ์ ˆ๋Œ“๊ฐ’ ๋ฐ˜ํ™˜ ABS(์ˆซ์ž)
CEILING ์ˆซ์ž๋ฅผ ์ •์ˆ˜๋กœ ์˜ฌ๋ฆผํ•ด์„œ ๋ฐ˜ํ™˜ CEILING(์ˆซ์ž)
FLOOR ์ˆซ์ž๋ฅผ ์ •์ˆ˜๋กœ ๋‚ด๋ฆผํ•ด์„œ ๋ฐ˜ํ™˜ FLOOR(์ˆซ์ž)
ROUND ์ˆซ์ž๋ฅผ ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผ ํ•ด์„œ ๋ฐ˜ํ™˜ ROUND(์ˆซ์ž, ์ž๋ฆฟ์ˆ˜)
TRUNCATE ์ˆซ์ž๋ฅผ ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ๋ฒ„๋ฆผ ํ•ด์„œ ๋ฐ˜ํ™˜ TRUNCATE(์ˆซ์ž, ์ž๋ฆฟ์ˆ˜)
POWER ์ˆซ์žA์˜ ์ˆซ์žB ์ œ๊ณฑ ๋ฐ˜ํ™˜ POWER(์ˆซ์žA, ์ˆซ์žB)
MOD ์ˆซ์žA๋ฅผ ์ˆซ์žB๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๋ฐ˜ํ™˜ MOD(์ˆซ์žA, ์ˆซ์žB)

 

 

 

 

์ฃผ์š” ๋‚ ์งœํ˜• ๋ฐ์ดํ„ฐ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช… ํ™œ์šฉ
NOW ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ฐ˜ํ™˜ NOW()
CURRENT_DATE ํ˜„์žฌ ๋‚ ์งœ ๋ฐ˜ํ™˜ CURRENT_DATE()
CURRENT_TIME ํ˜„์žฌ ์‹œ๊ฐ„ ๋ฐ˜ํ™˜ CURRENT_TIME
YEAR ๋‚ ์งœ์˜ ์—ฐ๋„ ๋ฐ˜ํ™˜ YEAR(๋‚ ์งœ)
MONTH ๋‚ ์งœ์˜ ์›” ๋ฐ˜ํ™˜ MONTH(๋‚ ์งœ)
MONTHNAME ๋‚ ์งœ์˜ ์›”์„ ์˜์–ด๋กœ ๋ฐ˜ํ™˜ MONTHNAME(๋‚ ์งœ)
DAYNAME ๋‚ ์งœ์˜ ์š”์ผ์„ ์˜์–ด๋กœ ๋ฐ˜ํ™˜ DAYNAME(๋‚ ์งœ)
DAYOFMONTH ๋‚ ์งœ์˜ ์ผ ๋ฐ˜ํ™˜ DAYOFMONTH(๋‚ ์งœ)
DAYOFWEEK ๋‚ ์งœ์˜ ์š”์ผ์„ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ DAYOFWEEK(๋‚ ์งœ)
WEEK ๋‚ ์งœ๊ฐ€ ํ•ด๋‹น ์—ฐ๋„์— ๋ช‡ ๋ฒˆ์งธ ์ฃผ์ธ์ง€ ๋ฐ˜ํ™˜ WEEK(๋‚ ์งœ)
HOUR ์‹œ๊ฐ„์˜ ์‹œ ๋ฐ˜ํ™˜ HOUR(์‹œ๊ฐ„)
MINUTE ์‹œ๊ฐ„์˜ ๋ถ„ ๋ฐ˜ํ™˜ MINUTE(์‹œ๊ฐ„)
SECOND ์‹œ๊ฐ„์˜ ์ดˆ ๋ฐ˜ํ™˜ SECOND(์‹œ๊ฐ„)
DATEFORMAT ๋‚ ์งœ/ ์‹œ๊ฐ„์˜ ํ˜•์‹์„ ํ˜•์‹์œผ๋กœ ๋ฐ”๊ฟ”  ๋ฐ˜ํ™˜ DATEFORMAT(๋‚ ์งœ/์‹œ๊ฐ„, ํ˜•์‹)
DATEDIFF ๋‚ ์งœ1๊ณผ ๋‚ ์งœ2์˜ ์ฐจ์ด ๋ฐ˜ํ™˜(๋‚ ์งœ1- ๋‚ ์งœ2) DATEDIFF(๋‚ ์งœ1- ๋‚ ์งœ2)
TIMEDIFF ์‹œ๊ฐ„1๊ณผ ์‹œ๊ฐ„2์˜ ์ฐจ์ด ๋ฐ˜ํ™˜(์‹œ๊ฐ„1- ์‹œ๊ฐ„2) TIMEDIFF(์‹œ๊ฐ„1- ์‹œ๊ฐ„2)

 

 

 

 

์กฐ๊ฑด ๋งŒ๋“ค๊ธฐ

์กฐ๊ฑด ๋งŒ๋“ค๊ธฐ IF (์กฐ๊ฑด์‹, ์ฐธ์ผ ๋•Œ ๊ฐ’, ๊ฑฐ์ง“์ผ ๋•Œ ๊ฐ’)
์—ฌ๋Ÿฌ ์กฐ๊ฑด ํ•œ๋ฒˆ์— ๋งŒ๋“ค๊ธฐ CASE [์ปฌ๋Ÿผ ์ด๋ฆ„]
   WHEN ์กฐ๊ฑด๊ฐ’1 THEN ๊ฒฐ๊ณผ๊ฐ’1
   WHEN ์กฐ๊ฑด๊ฐ’2 THEN ๊ฒฐ๊ณผ๊ฐ’2
   ELSE ๊ฒฐ๊ณผ๊ฐ’3
END

 

 

 

 

ํ…Œ์ด๋ธ” ํ•ฉ์น˜๊ธฐ

 ํ‘œํ˜„ ์„ค๋ช… ํ™œ์šฉ
INNER JOIN ๋‘ ํ…Œ์ด๋ธ” ๋ชจ๋‘์— ์žˆ๋Š” ๊ฐ’๋งŒ ํ•ฉ์น˜๊ธฐ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
INNER JOIN [ํ…Œ์ด๋ธ” B ์ด๋ฆ„]
ON [ํ…Œ์ด๋ธ” A ์ด๋ฆ„].[์ปฌ๋Ÿผ A ์ด๋ฆ„]=[ํ…Œ์ด๋ธ” B ์ด๋ฆ„].[์ปฌ๋Ÿผ B ์ด๋ฆ„]
LEFT JOIN ์™ผ์ชฝ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ฐ’๋งŒ ํ•ฉ์น˜๊ธฐ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
LEFT JOIN [ํ…Œ์ด๋ธ” B ์ด๋ฆ„]
ON [ํ…Œ์ด๋ธ” A ์ด๋ฆ„].[์ปฌ๋Ÿผ A ์ด๋ฆ„]=[ํ…Œ์ด๋ธ” B ์ด๋ฆ„].[์ปฌ๋Ÿผ B ์ด๋ฆ„]

RIGHT JOIN ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ฐ’๋งŒ ํ•ฉ์น˜๊ธฐ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
RIGHT JOIN [ํ…Œ์ด๋ธ” B ์ด๋ฆ„]
ON [ํ…Œ์ด๋ธ” A ์ด๋ฆ„].[์ปฌ๋Ÿผ A ์ด๋ฆ„]=[ํ…Œ์ด๋ธ” B ์ด๋ฆ„].[์ปฌ๋Ÿผ B ์ด๋ฆ„]
OUTER JOIN ๋‘ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’ ํ•ฉ์น˜๊ธฐ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
LEFT JOIN [ํ…Œ์ด๋ธ” B ์ด๋ฆ„]
ON [ํ…Œ์ด๋ธ” A ์ด๋ฆ„].[์ปฌ๋Ÿผ A ์ด๋ฆ„]=[ํ…Œ์ด๋ธ” B ์ด๋ฆ„].[์ปฌ๋Ÿผ B ์ด๋ฆ„]
UNION
SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
RIGHT JOIN [ํ…Œ์ด๋ธ” B ์ด๋ฆ„]
ON [ํ…Œ์ด๋ธ” A ์ด๋ฆ„].[์ปฌ๋Ÿผ A ์ด๋ฆ„]=[ํ…Œ์ด๋ธ” B ์ด๋ฆ„].[์ปฌ๋Ÿผ B ์ด๋ฆ„]
CROSS JOIN ๋‘ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์„ ๊ฐ๊ฐ ํ•ฉ์น˜๊ธฐ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
CROSS JOIN [ํ…Œ์ด๋ธ” B ์ด๋ฆ„];
SELF JOIN ๊ฐ™์€ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ฐ’ ํ•ฉ์น˜๊ธฐ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„] AS t1
INNER JOIN [ํ…Œ์ด๋ธ” A ์ด๋ฆ„] AS t2
ON t1.[์ปฌ๋Ÿผ A ์ด๋ฆ„] = t2.[์ปฌ๋Ÿผ A ์ด๋ฆ„];

 

 

 

 

์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ํ•œ ๋ฒˆ์— ๋‹ค๋ฃจ๊ธฐ

ํ‘œํ˜„ ํ™œ์šฉ
ํ•ฉ์ง‘ํ•ฉ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„] FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
UNION
SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„] FROM [ํ…Œ์ด๋ธ” B ์ด๋ฆ„];
์ค‘๋ณต ํฌํ•จ ํ•ฉ์ง‘ํ•ฉ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„] FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„]
UNION ALL
SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„] FROM [ํ…Œ์ด๋ธ” B ์ด๋ฆ„];
๊ต์ง‘ํ•ฉ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ” A ์ด๋ฆ„] AS A
INNER JOIN [ํ…Œ์ด๋ธ” B ์ด๋ฆ„] AS B
ON A.[์ปฌ๋Ÿผ1 ์ด๋ฆ„] = B.[์ปฌ๋Ÿผ1 ์ด๋ฆ„] AND ... AND A.[์ปฌ๋Ÿผn ์ด๋ฆ„] = B.[์ปฌ๋Ÿผn ์ด๋ฆ„];
์ฐจ์ง‘ํ•ฉ SELECT [์ปฌ๋Ÿผ ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ”A ์ด๋ฆ„] AS A
LEFT JOIN [ํ…Œ์ด๋ธ” B] AS B
ON A.[์ปฌ๋Ÿผ1 ์ด๋ฆ„] = B.[์ปฌ๋Ÿผ1 ์ด๋ฆ„] AND ... AND A.[์ปฌ๋Ÿผn ์ด๋ฆ„] = B.[์ปฌ๋Ÿผn ์ด๋ฆ„]
WHERE B.[์ปฌ๋Ÿผ ์ด๋ฆ„] IS NULL;

 

 

 

 

 

ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ ์ฟผ๋ฆฌ

SET GLOVAL log_bin_trust_function_creators=1; #์‚ฌ์šฉ์ž ๊ณ„์ •์— function create ๊ถŒํ•œ ์ƒ์„ฑ

DELIMITER // # ํ•จ์ˆ˜์˜ ์‹œ์ž‘ ์ง€์ •

CREATE FUNCTION [ํ•จ์ˆ˜ ์ด๋ฆ„] ([์ž…๋ ฅ๊ฐ’ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…], ...)
RETURNS [๊ฒฐ๊ณผ๊ฐ’ ๋ฐ์ดํ„ฐ ํƒ€์ž…]
BEGIN
DECLARE [์ž„์‹œ๊ฐ’ ์ด๋ฆ„] [๋ฐ์ดํ„ฐ ํƒ€์ž…];
SET [์ž„์‹œ๊ฐ’ ์ด๋ฆ„] = [์ž…๋ ฅ๊ฐ’ ์ด๋ฆ„];
์ฟผ๋ฆฌ;
RETURN ๊ฒฐ๊ณผ๊ฐ’
END

//
DELIMITER; #ํ•จ์ˆ˜์˜ ๋ ์ง€์ •
๋”๋ณด๊ธฐ
TOOLS/SQL