๋ฐ์ดํฐ ์ถ๊ฐ, ์์ , ์ญ์
-- insert
-- ๋ฐ์ดํฐ ์ ๋ ฅ
-- insert ๋ฌธ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
-- insert into ํ ์ด๋ธ (์ด1, ์ด2, ์ด3, ...) values (๊ฐ1, ๊ฐ2, ๊ฐ3, ...)
-- ์ฃผ์์
-- ํ ์ด๋ธ ์ด๋ฆ ๋ค์์ ๋์ค๋ ์ด์ ์๋ต ๊ฐ๋ฅํจ
-- ๋ค๋ง, ์๋ตํ ์์๋ values ๋ค์์ ๋์ค๋ ๊ฐ๋ค์ ์์์ ๊ฐ์๋ ์ด์ ์์ ๋ฐ ๊ฐ์์ ๋์ผํด์ผํจ
create table toy_shop (toy_id int, toy_name char(4), age int);
insert into toy_shop values (1, '์ฐ๋', 25)
select * from toy_shop;
-- ์์ด๋์ ์ด๋ฆ๋ง ์ ๋ ฅํ๊ณ ๋์ด๋ ์ ๋ ฅํ๊ณ ์ถ์ง ์๋ค๋ฉด
insert into toy_shop (toy_id, toy_name) values (2, '๋ฒ์ฆ');
select * from toy_shop;
-- ์ด์ ์์๋ฅผ ๋ฐ๊ฟ์ ์ ๋ ฅํ๋ ๊ฒ๋ ๊ฐ๋ฅํจ
insert into toy_shop (toy_name, age, toy_id) values ('์ ์', 20, 3);
select * from toy_shop;
-- ํ ์ด๋ธ ์ญ์
drop table toy_shop;
์๋์ผ๋ก ์ฆ๊ฐํ๋ ๊ฐ ์ ๋ ฅ
-- auto_increment
-- ์๋์ผ๋ก ์ฆ๊ฐํ๋ ๊ฐ ์ ๋ ฅ
-- insert๋ฅผ ์ฌ์ฉํ ๋ ํด๋น ์ด์ ์ ๋ ฅํ์ง ์์๋ ์๋์ผ๋ก ์ฆ๊ฐํ๋ ๊ฐ์ด ์ ๋ ฅ๋จ
-- ์ฃผ์์
-- auto_increment๋ก ์ง์ ํ๋ ์ด์ ๋ฐ๋์ primary key๋ก ์ง์ ํด์ค์ผ ํจ
-- primary key: ๊ฐ ํ์ ๊ตฌ๋ถํ๋ ์ ์ผํ ๊ฐ
create table toy_shop2 (
toy_id int auto_increment primary key,
toy_name char(4),
age int);
-- auto_increment ์ด์ ๋น์๋๊ณ ๋ฐ์ดํฐ ์ ๋ ฅ ํด๋ณด๊ธฐ
insert into toy_shop2 values (null, '๋ณดํ', 25);
insert into toy_shop2 values (null, '์ฌ๋งํค', 22);
insert into toy_shop2 values (null, '๋ ์ค', 21);
select * from toy_shop2;
-- ์ด๋ ์ซ์๊น์ง ์ฆ๊ฐ๋์๋์ง ํ์ธ
select last_insert_id();
-- auto_increment๋ก ์ ๋ ฅ๋๋ ๋ค์ ๊ฐ์ 100๋ถํฐ ์์ํ๋๋ก ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด
alter table toy_shop2 auto_increment = 100;
insert into toy_shop2 values (null, 'ํ', 35);
select * from toy_shop2;
-- auto_increment๋ก ์ ๋ ฅ๋๋ ๊ฐ์ 1000์ผ๋ก ์ง์ ํ๊ณ , 3์ฉ ์ฆ๊ฐํ๋๋ก ์ค์
truncate table toy_shop2; -- toy shop2 table ์ด๊ธฐํ
alter table toy_shop2 auto_increment = 1000;
set @@auto_increment_increment = 3;
insert into toy_shop2 values (null, 'ํฌํ ์ดํ ', 20);
insert into toy_shop2 values (null, '์ค๋', 23);
insert into toy_shop2 values (null, '์๋ฆฐ', 25);
select * from toy_shop2;
-- world.ciry ํ ์ด๋ธ ํ๋กํผํฐ ๋ณด๊ธฐ
desc world.city;
-- ๋ฐ์ดํฐ ์ดํด๋ณด๊ธฐ
select * from world.city limit 5;
-- ๋์ ์ด๋ฆ๊ณผ ์ธ๊ตฌ๋ฅผ ๊ฐ์ ธ์ ํ ์ด๋ธ ๊ตฌ์ฑํ๊ธฐ
create table city_popul (city_name char(35), population int);
๋ง์ผ๋๋น ์ฐํด๋ฆญ ํ ์๋ก๊ณ ์นจ
-- ๋์ ์ด๋ฆ๊ณผ ์ธ๊ตฌ๋ฅผ ๊ฐ์ ธ์ ํ ์ด๋ธ ๊ตฌ์ฑํ๊ธฐ
create table city_popul (city_name char(35), population int);
select name, population from world.city;
insert into city_popul select name, population from world.city;
select * from city_popul;
-- ๋ฐ์ดํฐ ์์
-- update
-- update๋ฌธ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
update ํ ์ด๋ธ ์ด๋ฆ set ์ด1 = ๊ฐ1, ์ด2 = ๊ฐ2.... where ์กฐ๊ฑด;
-- city popul ํ ์ด๋ธ์ ๋์ ์ด๋ฆ ์ค์์ 'Seoul'์ '์์ธ'๋ก ๋ณ๊ฒฝํ๊ธฐ
select * from city_popul where city_name = '์์ธ';
select * from city_popul where city_name = 'seoul';
update city_popul set city_name = '์์ธ' where city_name = 'Seoul';
select * from city_popul where city_name = '์์ธ';
where ์ ์ ์๋ต
-- ์ฃผ์์
-- update๋ฌธ์์ where ์ ์ ์๋ต ๊ฐ๋ฅํ์ง๋ง, where์ ์ ์๋ตํ๋ฉด ๋ชจ๋ ํ์ ๊ฐ์ด ๋ฐ๋
-- city_popul ํ ์ด๋ธ์ ์ธ๊ตฌ๋ฅผ 10000๋ช ๋จ์๋ก ๋ณ๊ฒฝํ๋ ๋ฑ์ ํน์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์ฃผ์ํด์ผ ํจ
update city_popul set population = population / 10000;
select * from city_popul limit 5;
๋ฐ์ดํฐ ์ญ์
-- delete
-- ๋ฐ์ดํฐ ์ญ์
-- delete ๋ฌธ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
delete from ํ ์ด๋ธ์ด๋ฆ where ์กฐ๊ฑด;
-- city_popul ํ ์ด๋ธ์์ 'New'๋ก ์์ํ๋ ๋์๋ฅผ ์ญ์ ํ๊ณ ์ถ๋ค๋ฉด
select * from city_popul cp where city_name like 'New%';
delete from city_popul where city_name like 'New%';
-- ๋ง์ฝ์ 'New'๋ก ์์ํ๋ ๋์ ์ค ์์ ๋ช ๊ฑด๋ง ์ญ์ ํ๋ ค๋ฉด limit์ ํจ๊ป ์ฌ์ฉํ ์ ์์
delete from city_popul where city_name like 'New%' limit 5;
JOIN
-- ์กฐ์ธ
-- ๋ ๊ฐ์ ํ ์ด๋ธ์ ์๋ก ๋ฌถ์ด์ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ด๋ ๊ฒ
-- ์) ์ธํฐ๋ท ๋ง์ผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํ์ ํ ์ด๋ธ๊ณผ ๊ตฌ๋งค ํ ์ด๋ธ
-- -- ํ์ ํ ์ด๋ธ์๋ ํ์์ ์ด๋ฆ, ์ฐ๋ฝ์ฒ
-- -- ๊ตฌ๋งค ํ ์ด๋ธ์๋ ๊ตฌ๋งคํ ๋ฌผ๊ฑด์ ๋ํ ์ ๋ณด
-- ๊ด๊ณํ db์์ ๋ฐ์ดํฐ๋ ์ฃผ์ ์ ๋ฐ๋ผ ๋ถ๋ฆฌํด์ ์ ์ฅํ๊ณ ์๊ณ ์ด ๋ถ๋ฆฌ๋ ํ ์ด๋ธ์ ์๋ก ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์
-- ํ ์ด๋ธ์ ์กฐ์ธ์ ์ํด์๋ ํ ์ด๋ธ์ด ์ผ๋๋ค ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด์ผ ํจ
-- -- ์ผ๋๋ค ๊ด๊ณ : ํ์ ํ ์ด๋ธ์ ์์ด๋์๋ ํ๋์ ๊ฐ์ด ํ ๋ฒ๋ง ๋ฑ์ฅํด์ผ ํ์ง๋ง
-- -- ๋ค๋ฅธ ํ ์ด๋ธ์๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ด ์กด์ฌํ ์ ์๋ ๊ด๊ณ
-- -- ์) ํ์ ํ ์ด๋ธ์์ ํ์ ์์ด๋๋ ํ ๋ฒ๋ง ๋ฑ์ฅํ์ง๋ง ๊ตฌ๋งค ํ ์ด๋ธ์์๋ ํ ์์ด๋๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฐพ์ ์ ์์
-- -- ์ด๋, ํ์ ํ ์ด๋ธ์ ์์ด๋๋ฅผ ๊ธฐ๋ณธํค(Primary Key), ๊ตฌ๋งค ํ ์ด๋ธ์ ์์ด๋๋ฅผ ์ธ๋ํค(Foreign Key)๋ก ์ง์
-- -- -- ๊ธฐ๋ณธํค : ํ ์ด๋ธ์์ ์ ์ผํ ๊ฐ์ผ๋ก, ๊ฐ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ผํ๊ฒ ํ์ธํ ์ ์๋ ๊ฐ
-- -- -- ์ธ๋ํค : ๋ ํ ์ด๋ธ์ ์๋ก ์ฐ๊ฒฐํ๋ ๋ฐ์ ์ฌ์ฉํ๋ ํค.
-- -- -- ์ธ๋ํค๊ฐ ํฌํจ๋ ํ ์ด๋ธ์ ์์ํ ์ด๋ธ, ์ธ๋ํค ๊ฐ์ ์ ๊ณตํ๋ ํ ์ด๋ธ์ ๋ถ๋ชจํ ์ด๋ธ์ด๋ผ๊ณ ํจ
-- -- -- ์ ์ฌ ์ฌ๋ก) ํ์ฌ์ ํ ์ด๋ธ๊ณผ ๊ธ์ฌ ํ ์ด๋ธ, ํ์ ํ ์ด๋ธ๊ณผ ์ฑ์ ํ ์ด๋ธ
-- ๋ด๋ถ ์กฐ์ธ์ ํ์
select ์ด๋ชฉ๋ก
from ์ฒซ๋ฒ์งธ ํ ์ด๋ธ
inner join ๋ ๋ฒ์งธ ํ ์ด๋ธ
on ์กฐ์ธ๋ ์กฐ๊ฑด
where ๊ฒ์ ์กฐ๊ฑด;
-- ๊ตฌ๋งค ํ ์ด๋ธ์์ GRL์ด๋ผ๋ ์์ด๋๋ฅผ ๊ฐ์ง ์ฌ๋์ด ๊ตฌ๋งคํ ๋ฌผ๊ฑด์ ๋ฐ์กํ๊ธฐ ์ํด์
-- ๊ตฌ๋งค์ ์ด๋ฆ๊ณผ ์ฃผ์, ์ฐ๋ฝ์ฒ๋ฅผ ์์์ผ ํ๋ค๋ฉด
select *
from buy
inner join member
on buy.mem_id = member.mem_id
where buy.mem_id = 'GRL';
-- where ์กฐ๊ฑด์ ์ ์๋ตํ๋ค๋ฉด
select *
from buy
inner join member
on buy.mem_id = member.mem_id;
-- ํ์ํ ์ ๋ณด๋ง ์ถ์ถํ๊ธฐ
select mem_id , mem_name, prod_name, addr, concat(phone1, phone2) ์ฐ๋ฝ์ฒ
from buy
inner join member
on buy.mem_id = member.mem_id ;
-- mem_id๊ฐ ์์ชฝ ํ ์ด๋ธ์ ๋ ๋ค ์กด์ฌํด์ ์๋ฌ
select buy.mem_id, mem_name, prod_name, addr, concat(phone1, phone2) ์ฐ๋ฝ์ฒ
from buy
inner join member
on buy.mem_id = member.mem_id;
-- sql๋ฌธ์ ๋ ๋ช ํํ๊ฒ ํ๊ธฐ ์ํด์ ํ ์ด๋ธ ์ด๋ฆ.์ด์ด๋ฆ ํ์์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ์ข์
select buy.mem_id,
member.mem_name,
buy.prod_name,
member.addr,
concat(member.phone1, member.phone2) ์ฐ๋ฝ์ฒ
from buy
inner join member
on buy.mem_id = member.mem_id;
๋ณ์นญ
-- ์ฝ๋๊ฐ ๋๋ฌด ๊ธธ์ด์ง๋ ๋ฌธ์ ๋ฅผ ๋ณ์นญ์ผ๋ก ํด๊ฒฐ
-- ๊ฐ์ฅ ๊ถ์ฅ๋๋ ํํ์ sql ๋ฌธ!!
select b.mem_id, m.mem_name, b.prod_name, m.addr, concat(m.phone1, m.phone2) ์ฐ๋ฝ์ฒ
from buy b
inner join member m
on b.mem_id = m.mem_id;
-- ๊ฒฐ๊ณผ๋ฅผ ํ์ ์์ด๋ ์์ผ๋ก ์ ๋ ฌ
select b.mem_id, m.mem_name, b.prod_name, m.addr, concat(m.phone1, m.phone2) ์ฐ๋ฝ์ฒ
from buy b
inner join member m
on b.mem_id = m.mem_id
order by m.mem_id asc;
-- ํ์ฌ๋ ๊ตฌ๋งคํ ๊ธฐ๋ก์ด ์๋ ํ์๋ค์ ๋ชฉ๋ก์
-- ๋ด๋ถ ์กฐ์ธ : ๋ ํ ์ด๋ธ์ ๋ชจ๋ ์๋ ๋ด์ฉ๋ง ์กฐ์ธ๋๋ ๋ฐฉ์
-- ์ธ๋ถ ์กฐ์ธ : ์์ชฝ ์ค ํ ๊ณณ์ด๋ผ๋ ๋ด์ฉ์ด ์์ ๋ ์กฐ์ธ
-- ์ธ๋ถ ์กฐ์ธ์ ํ์
select ์ด ๋ชฉ๋ก
from ์ฒซ ๋ฒ์งธ ํ ์ด๋ธ(left)
<left|right> outer join ๋ ๋ฒ์งธ ํ ์ด๋ธ (right)
on ์กฐ์ธ๋ ์กฐ๊ฑด
where ๊ฒ์ ์กฐ๊ฑด;
-- ๊ตฌ๋งค ๊ธฐ๋ก์ด ์๋ ํ์์ ํฌํจํ ์ ์ฒด ํ์์ ๊ตฌ๋งค ๊ธฐ๋ก ์ถ๋ ฅ
select m.mem_id, m.mem_name, b.prod_name, m.addr
from member m
left outer join buy b
on m.mem_id = b.mem_id
order by m.mem_id asc;
-- ํ์ ๊ฐ์ ๋ง ํ๊ณ ํ ๋ฒ๋ ๊ตฌ๋งคํ ์ ์ด ์๋ ํ์์ ๋ชฉ๋ก ์ถ์ถ
select distinct m.mem_id, b.prod_name, m.mem_name, m.addr
from member m
left outer join buy b
on m.mem_id = b.mem_id
where b.prod_name is null (= null๋ก ํ๋ฉด ์ค๋ฅ ๋ฐ์!!)
order by m.mem_id asc;
-- ์ํธ ์กฐ์ธ(cross join)
-- ํ ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ๊ณผ ๋ค๋ฅธ ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์กฐ์ธ
-- ์ํธ ์กฐ์ธ ๊ฒฐ๊ณผ์ ์ ์ฒด ํ ์๋ ๋ ํ ์ด๋ธ์ ๊ฐ ํ ์์ ๊ณฑ
select * from buy;
select * from member;
select * from buy cross join member;