Knowledge๐Ÿฆข/SQL

# count(*), count(์ปฌ๋Ÿผ), count(distinct ์ปฌ๋Ÿผ) ๊ตฌ๋ถ„ํ•˜๊ธฐ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ count(์ปฌ๋Ÿผ)์œผ๋กœ ๊ฐฏ์ˆ˜๋ฅผ ์…€ ์ปฌ๋Ÿผ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค # union / union allunion : ์ค‘๋ณต์ œ๊ฑฐunion all : ์ค‘๋ณตํฌํ•จ where ์ปฌ๋Ÿผ in ์„œ๋ธŒ์ฟผ๋ฆฌfrom (์„œ๋ธŒ์ฟผ๋ฆฌ) as ๋ณ„์นญ   select ์ง‘๊ณ„ํ•จ์ˆ˜ as ๋ณ„์นญfrom ํ…Œ์ด๋ธ”where ์กฐ๊ฑดgroup by ์ปฌ๋Ÿผhaving ๋ณ„์นญ / ์ง‘๊ณ„ํ•จ์ˆ˜order by ์ˆซ์ž / ์ง‘๊ณ„ํ•จ์ˆ˜limit   ์ตœ์ข…๊ฒฐ๊ณผ ๊ทธ๋ฃน๋ณ„ ์—ฐ์‚ฐ์‹œ group by ์จ์ฃผ๊ธฐ์ˆœ์„œ์ •๋ ฌ ํ•„์š”์‹œ order by ์จ์ฃผ๊ธฐ  inner join(O/O) ๊ณผ left join(O/O) + (O/X)on ์—์„œ ์กฐ๊ฑด ์—ฌ๋Ÿฌ๊ฐœ ์“ธ์ˆ˜ ์žˆ๋‹ค๊ต์ฐจ์กฐ์ธ, ์…€ํ”„์กฐ์ธ
ํฌ๋กœ์Šค ์กฐ์ธ์ด๋ž€ ๋„๋Œ€์ฒด ๋ฌด์—‡์ผ๊นŒ?๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? # ํฌ๋กœ์Šค ์กฐ์ธ ์ผ๋ฐ˜์ ์ธ ์กฐ์ธ์ด๋ž€ ๊ณตํ†ต๋˜๋Š” ์ปฌ๋Ÿผ์„ on ์กฐ๊ฑด์œผ๋กœ ๋งค์นญํ•˜๋ฉฐ ์ง„ํ–‰ํ•œ๋‹คํฌ๋กœ์Šค ์กฐ์ธ์ด๋ž€ ํ…Œ์ด๋ธ” A์™€ ํ…Œ์ด๋ธ” B์— ๋Œ€ํ•ด์„œ ๊ณตํ†ต๋˜๋Š” ์ปฌ๋Ÿผ์ด ์—†์Œ์—๋„ ๊ต์ฐจ๊ณฑ์œผ๋กœ ํ…Œ์ด๋ธ”์„ ํ•ฉํ•ด์ฃผ๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•œ๋‹ค ์ฆ‰, ๊ฐ๊ฐ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ๊ฑด ์—†์ด ๋ชจ๋‘ ๋งค์นญํ•œ ๊ฒฐ๊ณผ์ด๋‹ค  # ๋ช…์‹œ์  ํ‘œํ˜„select *from ํ…Œ์ด๋ธ”1cross join ํ…Œ์ด๋ธ”2  # ์•”์‹œ์  ํ‘œํ˜„select *from ํ…Œ์ด๋ธ”1, ํ…Œ์ด๋ธ”2select *from ํ…Œ์ด๋ธ”1 a1, ํ…Œ์ด๋ธ”2 a2 ์šฐ๋ฆฌ๋Š” ๋ณดํ†ต ์•”์‹œ์  ํ‘œํ˜„์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค!  # ์‘์šฉ ํ‘œํ˜„select *from ( select * from ํ…Œ์ด๋ธ”1 a, ํ…Œ์ด๋ธ”2 b ) as tleft join ํ…Œ์ด๋ธ”3 con t.์ปฌ๋Ÿผ1 = ..
์กฐ์ธ(JOIN)์€ SQL ์•ˆ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ฌธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ํ•ด๋‹น ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•˜์…จ๋‹ค๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์€ ์ด๋ฏธ ์กฐ์ธ์ด 2๊ฐœ ํ˜น์€ ๊ทธ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ 1๊ฐœ์˜ ๊ณตํ†ต๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋กœ ํ•ฉ์น  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•„์‹ค ๊ฒ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์กฐ์ธ ์ค‘์—์„œ๋„ ๋…ํŠนํ•œ ์ข…๋ฅ˜์˜ ์กฐ์ธ์„ ์‚ดํŽด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๋™์ผํ•œ ํ…Œ์ด๋ธ” 1๊ฐœ๋ฅผ ๊ทธ ์ž์‹ ์—๊ฒŒ ํ•ฉ์น˜๋Š”, ์ฆ‰ ๋˜‘๊ฐ™์€ ํ…Œ์ด๋ธ”์„ ํ•ฉ์น˜๋Š” ์…€ํ”„ ์กฐ์ธ์„ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์…€ํ”„ ์กฐ์ธ์€ ์™œ ํ•„์š”ํ•œ ๊ฒƒ์ผ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  ์…€ํ”„ ์กฐ์ธ์€ ์–ด๋– ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  SQL ๋ฌธ์—์„œ๋Š” ์–ด๋–ค ์‹์œผ๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ์š”? ์ง€๊ธˆ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.   JOINs : ๊ฐœ๋… ๋‹ค์‹œ ์งš๊ณ  ๊ฐ€๊ธฐ 2๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ๊ณตํ†ต๋œ ์—ด์„ ํ™œ์šฉํ•ด 2๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ํ•ฉ์น˜๋Š” ๊ฒƒ์„ ์šฐ๋ฆฌ๋Š” ..
GROUP BY๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ SELECT์ ˆ์— ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ GROUP BY์— ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.  ex) ๋ฐ”๋ฅธ ์˜ˆ์‹œ SELECT  id, insta_id, COUNT(price) FROM a GROUP BY id, insta_id  ex) ํ‹€๋ฆฐ ์˜ˆ์‹œ --> ์ด๋ ‡๊ฒŒ ๋งˆ์Œ๋Œ€๋กœ ์“ฐ์‹œ๋ฉด ์›ํ•˜๋Š” ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๊ฐ’์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. SELECT  id, insta_id, COUNT(price) FROM a GROUP BY id  ex) ํ‹€๋ฆฐ ์˜ˆ์‹œ --> ์ด๋ ‡๊ฒŒ ๋งˆ์Œ๋Œ€๋กœ ์“ฐ์‹œ๋ฉด ์›ํ•˜๋Š” ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๊ฐ’์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. SELECT  id, COUNT(price), insta_id FROM a GROUP BY id
# union ๋ฐ join์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ # union ํ•จ์ˆ˜- ์ˆ˜์ง๊ฒฐํ•ฉ- ํ–‰์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค # ์–ธ์ œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?1) ๊ตฌ์„ฑ์ด ๊ฐ™์„๋•Œ2) ๊ตฌ์„ฑ์ด ๋‹ค๋ฅด์ง€๋งŒ ํŠน์ • ์ปฌ๋Ÿผ์„ ๊ณตํ†ต ์ปฌ๋Ÿผ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ๋•Œ  โ€ป ์ฃผ์˜์ 1) ์—ด์˜ ๊ฐฏ์ˆ˜์™€ ์ˆœ์„œ๊ฐ€ ๋ชจ๋“  ์ฟผ๋ฆฌ์—์„œ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค2) ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์ด ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค  # ๊ธฐ๋ณธ์ ์ธ ์ž‘์„ฑ๊ตฌ๋ฌธselect name, goods_nm, pay_date #์ปฌ๋Ÿผ ์ˆœ์„œ๊ฐ€ ๊ฐ™๊ณ , ๊ทธ ํ˜•์‹์ด ๊ฐ™์•„์•ผ ํ•จ from ํ…Œ์ด๋ธ”๋ช…1union (all) #์ˆ˜์ง๊ฒฐํ•ฉ ๋ช…์‹œselect name, goods_nm, pay_datefrom ํ…Œ์ด๋ธ”๋ช… 2[ ์˜ˆ์‹œ ]   # ์ฐจ์ด์ union -> ์ค‘๋ณต์ œ๊ฑฐunion all -> ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ํ‘œ๊ธฐ..
# SQL ์ง‘๊ณ„ํ•จ์ˆ˜COUNT, MAX, MIN, SUM, AVG # group byํŠน์ • ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์•ฝํ•ด์„œ ๋น„๊ตํ•˜๊ณ  ์‹ถ์„๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค select ๊ธฐ์ค€์ปฌ๋Ÿผ, ์ง‘๊ณ„ํ•จ์ˆ˜(์กฐ๊ฑด์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ง‘๊ณ„ํ•จ์ˆ˜ ๋™์‹œ์‚ฌ์šฉ ๊ฐ€๋Šฅ) from ํ…Œ์ด๋ธ”๋ช…where ์กฐ๊ฑด #(์ƒ๋žต๊ฐ€๋Šฅ)group by ๊ธฐ์ค€์ปฌ๋Ÿผ # ์‚ฌ์šฉ๋ฐฉ๋ฒ•1) select ๋’ค ๊ธฐ์ค€์ปฌ๋Ÿผ ์ž‘์„ฑ2) ์ง‘๊ณ„ํ•จ์ˆ˜ (count, max, min, avg, sum) ์ž‘์„ฑ3) where ์ ˆ ๋’ค group by ๊ธฐ์ค€์ปฌ๋Ÿผ ์ž‘์„ฑ โ€ป ์—ฌ๊ธฐ์„œ ๋งŒ์•ฝ 1), 2) ์ž‘์„ฑ ํ›„ 3)๋ฒˆ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค# ์ฃผ์˜)) ๊ธฐ์ค€์ปฌ๋Ÿผ๊ณผ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  GROUP BY ์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆselect ๊ธฐ์ค€์ปฌ๋Ÿผ, ์ง‘๊ณ„ํ•จ์ˆ˜(์กฐ๊ฑด์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์—ฌ..
Chapter 1. WHERE 1=1์ด ๋ญ์•ผ??์šฐ์„ , WHERE๋Š” ์กฐํšŒํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ..
1. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ insert into ํ…Œ์ด๋ธ” values ๊ฐ’ ์ธ์ธ๋ฒ  1) ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ธฐ [ ์˜ˆ์ œ ] insert into member values('TWC', 'ํŠธ์™€์ด์Šค', 9, '์„œ์šธ', '02', '11111111', 167, '2015.10.19') insert into buy values(null, 'TWC', '์ง€๊ฐ‘', null, 30, 2) # member ํ…Œ์ด๋ธ” insert into `member` values('TWC','ํŠธ์™€์ด์Šค', 9, '์„œ์šธ', '02', '11111111', 167, '2015.10.19'); insert into `member` values('BLK','๋ธ”๋ž™ํ•‘ํฌ', 4, '๊ฒฝ๋‚จ', '055', '22222222', 163, '2016.08.08'); ins..
#ํ˜„์žฌ ์‹œ๊ฐ„๊ณผ ๋‚ ์งœ ์•Œ์•„๋ณด๊ธฐ 1. CURDATE() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค ๋ฐ˜ํ™˜์–‘์‹์€ ๋…„-์›”-์ผ ํ˜•์‹์ด๋‹ค 2. CURTIME() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ํ˜„์žฌ ์‹œ๊ฐ„๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค ๋ฐ˜ํ™˜์–‘์‹์€ ์‹œ๊ฐ„-๋ถ„-์ดˆ ํ˜•์‹์ด๋‹ค 3. NOW() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ํ˜„์žฌ ๋‚ ์งœ์™€ ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค ๋ฐ˜ํ™˜์–‘์‹์€ ๋…„-์›”-์ผ ์‹œ๊ฐ„-๋ถ„-์ดˆ ํ˜•์‹์ด๋‹ค select CURDATE(), CURTIME(), NOW(); # datetime ๊ธฐ์ดˆํ•จ์ˆ˜ 1. year() - ๋…„ 2. month() - ์›” 3. day() - ์ผ 1. hour() - ์‹œ๊ฐ„ 2. minute() - ๋ถ„ 3. second() - ์ดˆ 1. monthname() - ๋‹ฌ ์˜๋ฌธ์ด๋ฆ„ 2. dayname() - ์š”์ผ ์˜๋ฌธ์ด๋ฆ„ select year(..
1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ + ์—ฌ๊ธฐ์„œ test๋Š” ๋‚ด๊ฐ€ ์ง€์ •ํ•œ ํ…Œ์ด๋ธ” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.. create database test [ ๊ฒฐ๊ณผ ] 2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œํ•˜๊ธฐ - drop database test 3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒํ•˜๊ธฐ use ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 1. ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ + create table ํ…Œ์ด๋ธ”๋ช… ( ์ปฌ๋Ÿผ๋“ค ) # ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•  ๋•Œ ์ž๋ฃŒํ˜• - ํ…Œ์ด๋ธ” ์ž๋ฃŒํ˜• ์ข…๋ฅ˜ 1) int 2) double 3) char 4) varchar 5) text 6) datetime ๋“ฑ์ด ์žˆ๋‹ค ์—ฌ๊ธฐ์„œ char, varchar, dateํ˜•์€ ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ' ' ๊ฐ’ ๋ฌถ์–ด์ฃผ๊ธฐ sql๋‚ด์—์„œ ๋ชจ๋“  ๋ฌธ์ž์—ด์˜ ๊ฐ’์€ ' '๋กœ ํ‘œ์‹œํ•œ๋‹ค " " ๋Š” ๋ณ„์นญ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๊ธ€ ์ฐธ์กฐ https://ano..
ํŒŒ์นดํŒŒ์˜ค
'Knowledge๐Ÿฆข/SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)