์ง์(employees) ํ
์ด๋ธ
id | department_id | name |
---|
1 | 101 | ๋ฅดํ์ด |
2 | 102 | ๋ฐฐ์บ ์ด |
3 | 103 | ๊ตฌ๊ตฌ์ด |
4 | 101 | ์ด์
์ด |
๋ถ์(departments) ํ
์ด๋ธ
id | name |
---|
101 | ์ธ์ฌํ |
102 | ๋ง์ผํ
ํ |
103 | ๊ธฐ์ ํ |
ํ
์ด๋ธ ์์ฑ, ๋ฐ์ดํฐ ์ฝ์
์ฟผ๋ฆฌ
์ง์(employees)
create table employees
(
id int unsigned,
department_id int unsigned,
name varchar(10)
);
insert into employees (id, department_id, name)values
(1, 101, "๋ฅดํ์ด"),
(2, 102, "๋ฐฐ์บ ์ด"),
(3, 103, "๊ตฌ๊ตฌ์ด"),
(4, 101, "์ด์
์ด");
๋ถ์(departments)
create table departments
(
id int unsigned,
name varchar(10)
);
insert into departments (id, name)values
(101, "์ธ์ฌํ"),
(102, "๋ง์ผํ
ํ"),
(103, "๊ธฐ์ ํ");
์ฐ์ต๋ฌธ์
- ํ์ฌ ์กด์ฌํ๊ณ ์๋ ์ด ๋ถ์์ ์๋ฅผ ๊ตฌํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ์ธ์!
select count(*) as total_departments
from departments;
- ๋ชจ๋ ์ง์๊ณผ ๊ทธ๋ค์ด ์ํ ๋ถ์์ ์ด๋ฆ์ ๋์ดํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ์ธ์!
select e.id, e.name, d.name
from employees e
left join departments d on e.department_id = d.id;
- '๊ธฐ์ ํ' ๋ถ์์ ์ํ ์ง์๋ค์ ์ด๋ฆ์ ๋์ดํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ์ธ์!
select e.name
from employees e inner join departments d
on e.department_id = d.id
where d.name = '๊ธฐ์ ํ';
- ๋ถ์๋ณ๋ก ์ง์ ์๋ฅผ ๊ณ์ฐํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ์ธ์!
select d.name, count(e.name)
from employees e left join departments d
on e.department_id = d.id
group by d.name;
- ์ง์์ด ์๋ ๋ถ์์ ์ด๋ฆ์ ์ฐพ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ์ธ์!
select d.name
from departments d left join employees e
on d.id = e.department_id
where e.id is null;
- '๋ง์ผํ
ํ' ๋ถ์์๋ง ์ํ ์ง์๋ค์ ์ด๋ฆ์ ๋์ดํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ์ธ์!
select e.name
from employees e inner join departments d
on e.department_id = d.id
where d.name = '๋ง์ผํ
ํ';