# 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 ์์ ์กฐ๊ฑด ์ฌ๋ฌ๊ฐ ์ธ์ ์๋ค๊ต์ฐจ์กฐ์ธ, ์
ํ์กฐ์ธ
Knowledge๐ฆข/SQL
ํฌ๋ก์ค ์กฐ์ธ์ด๋ ๋๋์ฒด ๋ฌด์์ผ๊น?๊ทธ๋ฆฌ๊ณ ์ธ์ ์ฌ์ฉํ๋๊ฐ? # ํฌ๋ก์ค ์กฐ์ธ ์ผ๋ฐ์ ์ธ ์กฐ์ธ์ด๋ ๊ณตํต๋๋ ์ปฌ๋ผ์ 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 ๊ธฐ์ค์ปฌ๋ผ, ์ง๊ณํจ์(์กฐ๊ฑด์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ฌ..
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..