์ผ๋๋ค, ๋ค๋๋ค ๊ด๊ณ
- 1:๋ค ๊ด๊ณ
- ํ์ชฝ ํ ์ด๋ธ์๋ ํ๋์ ๊ฐ๋ง ์กด์ฌํ๊ณ , ๊ทธ ๊ฐ๋ง ๋์๋๋ ๋ค๋ฅธ ์ชฝ ํ ์ด๋ธ์ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ธ ๊ด๊ณ
- EX) ํ์ ํ ์ด๋ธ๊ณผ ์ ์ ํ ์ด๋ธ, ์ง์ ํ ์ด๋ธ๊ณผ ์๊ธ ํ ์ด๋ธ
- ๋ค:๋ค ๊ด๊ณ
- ํ ํ์์ ์ฌ๋ฌ ๊ฐ์ ๋์๋ฆฌ์ ๊ฐ์ ํ ์ ์๊ณ , ํ ๋์๋ฆฌ์๋ ์ฌ๋ฌ ํ์์ด ๊ฐ์ ํ ์ ์์ด ํ์ ํ ์ด๋ธ๊ณผ ๋์๋ฆฌ ํ ์ด๋ธ์ ๋ค๋๋ค ๊ด๊ณ์.
- ๋ค๋๋ค ๊ด๊ณ์ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ํ ์ด๋ธ๊ณผ ๋ ํ ์ด๋ธ์ด ์ผ๋๋ค ๊ด๊ณ๋ฅผ ๋งบ๋๋ก ๊ตฌ์ฑ
- EX) ํ์ ํ ์ด๋ธ, ํ์_๋์๋ฆฌ ํ ์ด๋ธ(ํ์ํ ์ด๋ธ๊ณผ ๋์๋ฆฌํ ์ด๋ธ์ ์ฐ๊ฒฐ ํ ์ด๋ธ), ๋์๋ฆฌ ํ ์ด๋ธ
ํ์ ํ ์ด๋ธ, ํ์_๋์๋ฆฌ ํ ์ด๋ธ, ๋์๋ฆฌ ํ ์ด๋ธ ์์ฑํ๋ ์ฟผ๋ฆฌ๋ฌธ
-- ํ์ ํ
์ด๋ธ
drop table if exists stdtbl;
create table stdtbl(
stdname varchar(10) not null primary key,
addr varchar(5) not null
);
desc stdtbl;
-- ๋์๋ฆฌ ํ
์ด๋ธ
drop table if exists clubtbl;
create table clubtbl(
clubname varchar(10) not null primary key,
roomno varchar(5) not null
);
desc clubtbl;
-- stdclubtbl์ ๋ง๋ค์ด์ค์ ํ์, ๋์๋ฆฌ ํ
์ด๋ธ์์ ์๋ก ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค.
drop table if exists stdclubtbl;
create table stdclubtbl(
num int auto_increment not null primary key,
stdname varchar(10) not null,
clubname varchar(10) not null,
foreign key(stdname) references stdtbl(stdname),
foreign key(clubname) references clubtbl(clubname)
);
desc stdclubtbl;
-- ๋ฐ์ดํฐ ์ฝ์
ํ๊ธฐ
insert into stdtbl values ('๊ฐํธ๋','๊ฒฝ๋ถ'),('๊น์ ๋','๊ฒฝ๋จ'),('๊น์ฉ๋ง','์์ธ'),
('์ดํ์ฌ','๊ฒฝ๊ธฐ'),('๋ฐ์ํ','์์ธ');
insert into clubtbl values ('์์','101ํธ'),('๋ฐ๋','102ํธ'),('์ถ๊ตฌ','103ํธ'),
('๋ด์ฌ','104ํธ');
insert into stdclubtbl values (null, '๊ฐํธ๋','๋ฐ๋'),(null, '๊ฐํธ๋','์ถ๊ตฌ'),
(null, '๊น์ฉ๋ง','์ถ๊ตฌ'),(null, '์ดํ์ฌ','์ถ๊ตฌ'),(null, '์ดํ์ฌ','๋ด์ฌ'),
(null, '๋ฐ์ํ','๋ด์ฌ');
์์์ ๋ง๋ 3๊ฐ์ ํ ์ด๋ธ๋ก ์ด๋ฆ, ์ง์ญ, ๋์๋ฆฌ๋ช , ๋์๋ฆฌ๋ฐฉ ํธ์ ์ถ๋ ฅ
→ ๋๋ถ๋ถ PK, FK ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์ค์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ๊ธฐ์ตํด์ผํจ.
-- ํ์๋ช
์ ๊ธฐ์ค์ผ๋ก ์ฟผ๋ฆฌ๋ฌธ ์์ฑ
select S.stdname, S.addr, C.clubname, C.roomno
from stdtbl S
inner join stdclubtbl SC
on S.stdname = SC.stdname
inner join clubtbl C
on SC.clubname = C.clubname
order by S.stdname;
-- ๋์๋ฆฌ๋ช
์ ๊ธฐ์ค์ผ๋ก ์ฟผ๋ฆฌ๋ฌธ ์์ฑ
select C.clubname, C.roomno, S.stdname, S.addr
from clubtbl C
inner join stdclubtbl SC
on C.clubname = SC.clubname
inner join stdtbl S
on SC.stdname = S.stdname
order by C.clubname;
์ฐธ๊ณ ) MySQL ๊ธฐ์ด์์ ์ค๋ฌด๊น์ง ์์ ์ ๋ณต ํ๊ธฐ
728x90
'DB(Database) > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Hackerrank SQL Occupations (0) | 2021.11.04 |
---|---|
[MySQL] ๋์ฉ๋ ํ ์ด๋ธ csv, txt ํ์ผ ํํ๋ก ๋ด๋ณด๋ด๊ธฐ & ๋ถ๋ฌ์ค๊ธฐ (0) | 2021.02.09 |
[MySQL] ๋ด์ฅํจ์ - ์ํ ํจ์, ๋ ์ง/์๊ฐ ํจ์, ์์คํ /์ ๋ณด ํจ์ (0) | 2021.02.06 |
[MySQL] MySQL Workbench์์ ์๊ฒฉ ์๋ฒ ์ ์ํ๊ธฐ (0) | 2021.01.27 |
[MySQL] ๋ด์ฅํจ์ - ๋ฌธ์์ด ํจ์ (0) | 2021.01.20 |