๐ฃ ๋ง์ฝ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์๋น์ค - MySQL80 ์๋น์ค๊ฐ ์ข ๋ฃ๋์๋์ง ํ์ธ ํ์
%a : a๋ก ๋๋๋ ๋ฌธ๊ตฌ
Primary key์ foreign key
create table tb_profile(
pro_idx int not null,
...
foreign key(pro_idx) references tb_member(mem_idx)
); -- Primary key์ธ mem_idx์ด๊ณผ foreign key์ธ pro_idx ๊ฒฐํฉ
#์์1
insert into tb_profile values (2, 30, 170, 70, 'B', 'INTP'); -- foreign key ์ ์ฝ์กฐ๊ฑด์ ์๋ฐฐ (tb_member์ idx๊ฐ์ด 2์ธ ํ์ด ์์ด์)
*๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์คํ๋ ํธ์ด ์ข์
select * from tb_member; -- select : ์ฐพ๊ธฐ / * : ๋ชจ๋ column
NULL ์ ํน์ง
select null; # ํด๋น ์
์ insert๊ฐ ๋์ง ์์ ๊ฒ
select ''; # ํด๋น ์
์ '' ๋ฐ์ดํฐ๊ฐ ์ฝ์
๋ ๊ฒ
select 100 + null; # null์ ์ฐ์ฐํ ์ ์์
๋ณ๋ช ์ฃผ๊ธฐ
select 100 + 50 as '๋ง์
';
enum()
enum('๋จ์', '์ฌ์');
# ๊ฐ์ ๋จ์, ์ฌ์๋ง ์
๋ ฅ ๊ฐ๋ฅ
๋ฐ์ดํฐ ์์
update ํ
์ด๋ธ๋ช
set ํ๋๋ช
1 = ๊ฐ1, ํ๋๋ช
2 = ๊ฐ2 ... # ์ ์ฒด๊ฐ ๋ฐ๋
update ํ
์ด๋ธ๋ช
set ํ๋๋ช
1 = ๊ฐ1, ํ๋๋ช
2 = ๊ฐ2 ... where ์กฐ๊ฑด์ # ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฐ๋ง ๋ฐ๋
๋ฐ์ดํฐ ์ญ์
delete from ํ
์ด๋ธ๋ช
; # ์ ์ฒด์ญ์
delete from ํ
์ด๋ธ๋ช
where ์กฐ๊ฑด์ ; # ์กฐ๊ฑด์ ํด๋นํ๋ ํ๋ ์ญ์
๋ฐ์ดํฐ ๊ฒ์
select ํ๋1, ํ๋2 .. from ํ
์ด๋ธ๋ช
;
select ํ๋1, ํ๋2 .. from ํ
์ด๋ธ๋ช
where ์กฐ๊ฑด์
์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์
select ํ๋1, ํ๋2 .. from ํ
์ด๋ธ๋ช
[where ์กฐ๊ฑด์ ] order by ํ๋ [asc, desc]
# ์์1
select mem_userid, mem_name, mem_point from tb_member order by mem_point asc; -- ์ค๋ฆ์ฐจ์
select mem_userid, mem_name, mem_point from tb_member order by mem_point; -- ์ค๋ฆ์ฐจ์
select mem_userid, mem_name, mem_point from tb_member order by me_point desc; -- ๋ด๋ฆผ์ฐจ์
# ์์2
select mem_idx, mem_userid, mem_name, mem_point, mem_gender, mem_regdate from tb_member
where mem_gender = '์ฌ์' order by mem_point desc, mem_regdate;
๊ฐ์ ธ์ฌ ํ ์ง์ ๋ฐฉ๋ฒ
select ํ๋1, ํ๋2 .. from ํ
์ด๋ธ๋ช
limit ๊ฐ์ ธ์ฌ ํ์ ๊ฐฏ์
select ํ๋1, ํ๋2 .. from ํ
์ด๋ธ๋ช
limit ์์ํ, ๊ฐ์ ธ์ฌ ํ์ ๊ฐฏ์
#์์1
select mem_userid, mem_name, mem_hp, mem_email from tb_member limit 3, 2; # 4๋ฒ์งธ ํ๋ถํฐ 2๊ฐ๋ฅผ ๊ฐ์ ธ์ด
์ง๊ณํจ์
select count(mem_idx) from tb_member;
# ์์1
select count(mem_idx) user from tb_member where mem_userid = 'apple' and mem_userpw = '1111';
-- count ๊ฐ์ ๋ํด user๋ผ๋ ํ๋๋ช
์ด ์ฃผ์ด์ง
์ค๋ณต๊ฐ ์ ์ธํ๊ณ ๊ฒ์
select distinct mem_gender from tb_member; -- ๋จ์์ ์ฌ์๋ง ๋์ด
# ์์1
select count(distinct mem_gender) from tb_member; -- ์ค๋ณต๋ ๊ฐ ์ ๊ฑฐ ํ ํ์ ๊ฐฏ์ ์ถ๋ ฅ
sum : ํ์ ๊ฐ์ ๋ํจ
select mem_userid, sum(mem_point) total from tb_member; -- X
select sum(mem_point) total from tb_member; -- O
avg : ํ์ ๊ฐ์ ํ๊ท ์ ๊ตฌํจ
select avg(mem_point) avg from tb_member;
min, max : ํ์ ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ ๊ตฌํจ
select min(mem_point) min from tb_member;
select max(mem_point) max from tb_member;
ํ๋์ ๊ทธ๋ฃนํ
select ๊ทธ๋ฃน์ ๋งบ์ ์ปฌ๋ผ ๋๋ ์ง๊ณํจ์ from ํ
์ด๋ธ๋ช
[where ์กฐ๊ฑด์ ] group by ํ๋ having ์กฐ๊ฑด์ order by ํ๋ [asc, desc]
#์์1
select mem_gender from tb_member group by mem_gender;
#์์2
select mem_gender, count(mem_idx) cnt from tb_member group by mem_gender;
#์์3
select mem_gender, count(mem_idx) cnt from tb_member where mem_point > 0 group by mem_gender;
#์์4
select mem_gender, count(mem_idx) cnt from tb_member where mem_point > 0 group by mem_gender having mem_gender = '๋จ์';
# ํฌ์ธํธ๊ฐ 0์ด ์๋ ํ์์ ์งํฉ์์ ๋จ์, ์ฌ์๋ก ๊ทธ๋ฃน์ ๋๋ ํฌ์ธํธ์ ํ๊ท ์ ๊ตฌํ๊ณ ํฌ์ธํธ๊ฐ 300์ด์์ธ ์ฑ๋ณ์ ๊ฒ์ํ์ฌ ํฌ์ธํธ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
select mem_gender, avg(mem_point) avg from tb_member where mem_point > 0 group by mem_gender having avg >= 300 order by avg desc;
Join : ์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ฒฐํฉ
select ํ๋1, ํ๋2 ... from ํ
์ด๋ธ1 [inner, left, right] join ํ
์ด๋ธ2 on ํ
์ด๋ธ1.ํ๋ = ํ
์ด๋ธ2.ํ๋;
๋ทฐ(view)
create view ๋ทฐ์ด๋ฆ as select ์ฟผ๋ฆฌ...
#์์1
create view vw_member_simple as select mem_idx, mem_userid, mem_userpw, mem_name, mem_hp from tb_member;
๋ทฐ ์์
create or replace view ๋ทฐ์ด๋ฆ as select ์ฟผ๋ฆฌ...
๋ทฐ ์ญ์
drop view ๋ทฐ์ด๋ฆ