DBMS ์กฐํํ๊ธฐ ์ฐ์ต๋ฌธ์
-- ์ฐ์ต ๋ฌธ์
-- 1. buy ํ ์ด๋ธ์์ amount๊ฐ 4 ์ด์์ธ ๋ชจ๋ ์ด ์กฐํํ๊ธฐ
-- 2. buy ํ ์ด๋ธ์์ prod_name์ด ์ง๊ฐ ๋๋ ์ฒญ๋ฐ์ง์ ํด๋นํ๋ ๋ชจ๋ ์ด ๋ฐ์ดํฐ ์กฐํํ๊ธฐ
select * from buy where amount >= 4;
select * from buy where prod_name in ('์ง๊ฐ','์ฒญ๋ฐ์ง');
DBMS ์ค๋ฆ์ฐจ์ ๋ด๋ฆผ์ฐจ์ ์กฐํํ๊ธฐ
order by
-- ์ ๋ ฌ(๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ ์์๋ฅผ ์กฐ์ )
select mem_id, mem_name, debut_date from member order by debut_date; # ์ค๋ฆ์ฐจ์
-- ์ ๋ ฌ ์ต์
-- ASC : ์ค๋ฆ์ฐจ์
-- DESC : ๋ด๋ฆผ์ฐจ์
-- : ์๋ตํ๋ฉด ASC๋ก ๋ฐ์๋ค์
select mem_id, mem_name, debut_date from member order by debut_date desc; # ๋ด๋ฆผ์ฐจ์
-ํ๊ท ํค๊ฐ 164 ์ด์์ธ ํ์๋ค(์กฐ๊ฑด)์ ํค์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์กฐํํ ๋
#์๋ฌ
select mem_id, mem_name, debut_date, height from member order by heigth desc where height >= 164;
# ์ ๋๋ก ์ถ๋ ฅ
select mem_id, mem_name, debut_date, height
from `member`
where height >= 164 #์ฌ๊ธฐ์ from
order by height desc;
์ ๋ ฌ ๊ธฐ์ค์ ์ฌ๋ฌ ์ด๋ก ์ง์ ํ๊ธฐ
select mem_id, mem_name, debut_date, height
from member
where height >= 164
order by height desc, debut_date asc;
limit( ์ถ๋ ฅ ๊ฐ์ ์ ํ)
select * from member limit 3;
*์์ฉ
-- ๋ฐ๋ท ์ผ์๊ฐ ๊ฐ์ฅ ๋น ๋ฅธ 3๊ฑด๋ง ์กฐํ
select * from member order by debut_date asc limit 3;
์ค๋ณต ์ ๊ฑฐ
select addr from member;
select addr from member order by addr asc;
select distinct addr from member order by addr asc; #distinct๋ ๋ฌด๋ฆฌ๊ฐ ๋ง์ด ๊ฐ๋ ๋ช ๋ น์ด
๊ทธ๋ฃนํ(group by)
-- ๊ฐ ํ์์ด ๊ตฌ๋งคํ ๋ฌผํ์ ์ด ๊ฐ์๋ฅผ ์๊ณ ์ถ์ ๊ฒฝ์ฐ
select mem_id, amount from buy order by mem_id;
select mem_id, sum(amount) from buygroupbymem_id;
select mem_id "ํ์ ์์ด๋", sum(amount) "์ด ๊ตฌ๋งค ๊ฐ์" from buy group by mem_id;
-- ๊ฐ ํ์์ด ๊ตฌ๋งคํ ๊ธ์ก์ ์ดํฉ์ ์๊ณ ์ถ์ ๊ฒฝ์ฐ
select mem_id "ํ์ ์์ด๋", sum(price*amount) "์ด ๊ตฌ๋งค ๊ธ์ก" from buy group by mem_id;
ํ๊ท (avg)
-- ํ ๊ฑฐ๋ ๋น ๊ตฌ๋งคํ๋ ๋ฌผํ ์ ํ๊ท
select mem_id, avg(amount) "ํ๊ท ๊ตฌ๋งค ๊ฐ์" from buy group by mem_id;
-- ์ ์ฒด ํ์์ ๊ตฌ๋งคํ๋ ๋ฌผํ ์ ํ๊ท
select avg(amount) from buy;
์ ์ฒด ์ ์ธ๊ธฐ(count)
-- ์ ์ฒด ํ์ ์๋ฅผ ์๊ณ ์ถ์ ๊ฒฝ์ฐ
select count(*) from member;
-- ์ฐ๋ฝ์ฒ๊ฐ ์๋ ํ์ ์๋ง ์๊ณ ์ถ์ ๊ฒฝ์ฐ
select count(phone1) "์ฐ๋ฝ์ฒ๊ฐ ์๋ ํ์ ์ " from member;
์กฐ๊ฑด์(having) - group by์์ ์ฌ์ฉ
-- ์ ๋ฐ์ดํฐ์์ ์ด ๊ตฌ๋งค์ก์ด 1000 ์ด์์ธ ํ์์๊ฒ๋ง ์ฌ์ํ์ ์ฆ์ ํ๋ ค๊ณ ํ๋ค๋ฉด
#์๋ฌ --์ง๊ณํจ์๋ where ์ ์์ ์ฌ์ฉํ ์ ์์
select mem_id "ํ์ ์์ด๋", sum(price *amount) "์ด ๊ตฌ๋งค ๊ธ์ก"
from buy
where sum(price * amount) >= 1000
group by mem_id;
#์ ์ ์ถ๋ ฅ --having
select mem_id "ํ์ ์์ด๋", sum(price * amount) "์ด ๊ตฌ๋งค ๊ธ์ก"
from buy
group by mem_id
-- ์ ๋ฐ์ดํฐ์์ ์ด ๊ตฌ๋งค์ก์ด ํฐ ์ฌ์ฉ์๋ถํฐ ๋ํ๋ด๋ ค๋ฉด
select mem_id "ํ์ ์์ด๋", sum(price * amount) "์ด ๊ตฌ๋งค ๊ธ์ก"
from buy
group by mem_id
having sum(price * amount) >= 1000
order by sum(price * amount) desc;
์ฐ์ต๋ฌธ์
-- 1. member ํ ์ด๋ธ์์ ํ์๋ค์ height์ ์ค๋ฆ์ฐจ์์ผ๋ก ์กฐํํ๊ธฐ
-- 2. member ํ ์ด๋ธ์ phone1์ ์ค๋ณต์์ด ์กฐํํ๊ธฐ
select * from member order by height asc;
select distinct phone1 from member;
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ธ์ค๊ธฐ
๋๋ฌด ์๋ฆ ๋ค์ด๋ค์ด๋ค์ด๋ค์ด view
๋ค์๋ค์๋ค์๋ค์์ ๋๋ฌ์ค๋ค....
์ฑ๊ณต์ ์ผ๋ก ๋ถ๋ฌ์๋ค.
์ฐ์ต๋ฌธ์
-- 3. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋ชจ๋ ๋๋ฌผ์ ์ ๋ณด๋ฅผ animal_id ์ค๋ฆ์ฐจ์์ผ๋ก ์กฐํํ๋ sql๋ฌธ ์์ฑํ๊ธฐ
-- ์กฐํํ ์ด : animal_id, animal_type, datetime, intake_condition, name, sex_upon_intake
select animal_id, animal_type, datetime, intake_condition, name, sex_upon_intake
from aac_intakes
order by animal_id asc;
-- 4. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ค intake_condition์ด sick์ธ ๋๋ฌผ์ ๋ฐ์ดํฐ๋ฅผ animal_id์ ์ค๋ฆ์ฐจ์์ผ๋ก ์กฐํํ๊ธฐ
-- ์กฐํํ ์ด : animal_id, intake_condition, name
select animal_id, intake_condition, name
from aac_intakes
where intake_condition = "sick"
order by animal_id;
-- 5. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ค intake_condition์ด Aged๊ฐ ์๋ ๋๋ฌผ๋ค์ ์ ๋ณด๋ฅผ animal_id ์ค๋ฆ์ฐจ์์ผ๋ก ์กฐํํ๊ธฐ
-- ์กฐํํ ์ด : animal_id, intake_condition, name
select animal_id, intake_condition, name
from aac_intakes
where intake_condition != "Aged"
order by animal_id;
select animal_id, intake_condition, name
from aac_intakes
where intake_condition <> "Aged"
order by animal_id;
select animal_id, intake_condition, name
from aac_intakes
where not (intake_condition = "Aged")
order by animal_id;
-- 6. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋ชจ๋ ๋๋ฌผ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฆ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์กฐํํ๊ธฐ
-- ๋จ, ์ด๋ฆ์ด ๊ฐ์ ๋๋ฌผ ์ค์์๋ ์ต๊ทผ์ ๋ณดํธ๋ฅผ ์์ํ ๋๋ฌผ์ ๋จผ์ ์กฐํํ๊ธฐ
-- ์กฐํํ ์ด : animal_id, datetime, name
select animal_id, datetime, name
from aac_intakes
order by name desc, datetime desc;
-- 7. ๋๋ฌผ ๋ณดํธ์์ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋๋ฌผ์ ๋ฐ์ดํฐ ์กฐํํ๊ธฐ
-- ์กฐํํ ์ด : name, datetime
select name, datetime
from aac_intakes
order by datetime asc limit 1;
-- 8. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ด๋ฆ์ด ์ด ๋ช ์ข ๋ฅ ์๋์ง ์กฐํํ๊ธฐ
-- ์ด๋, ์ด๋ฆ์ด ''์ธ ๊ฒฝ์ฐ๋ ์ง๊ณํ์ง ์์
select count(distinct name) from aac_intakes where name != "";
-- 9. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ข (aniaml_type) ๋ณ๋ก ๊ฐ๊ฐ ๋ช ๋ง๋ฆฌ์ธ์ง ์กฐํํ๊ธฐ
-- ์ด ๋, ๊ณ ์์ด๊ฐ ๊ฐ๋ณด๋ค ๋จผ์ ๋ฑ์ฅํ๋๋ก ์ ๋ ฌํ๊ธฐ
-- ์กฐํํ ์ด : animal_type, cnt
select animal_type, count(*)"cnt"
from aac_intakes
group by animal_type
order by animal_type asc;
-- 10. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ด๋ฆ ์ค ๋ ๋ฒ ์ด์ ์ฐ์ธ ์ด๋ฆ๊ณผ ํด๋น ์ด๋ฆ์ด ์ฐ์ธ ํ์๋ฅผ ์กฐํํ๊ธฐ.
-- ์ด ๋, ์ด๋ฆ์ด ''์ธ ๋๋ฌผ์ ์ง๊ณ์์ ์ ์ธํ๋ฉฐ, ์ด๋ฆ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์กฐํํ๊ธฐ
-- ์กฐํํ ์ด: name, cnt
select name, count(*) cnt
from aac_intakes where name != '' and name not like '*%'
group by name #์ด๋ฆ์ผ๋ก ๋ฌถ์ด์ค๋ค!!!
having count(*) >= 2
order by name;