๐Ÿ‘†์ด์   ํ…Œ์ด๋ธ”์ด 2๊ฐœ์ž…๋‹ˆ๋‹ค

์ฝ”๋“ฑ์–ดยท2024๋…„ 11์›” 22์ผ
0

์‚ฌ์ „์บ ํ”„

๋ชฉ๋ก ๋ณด๊ธฐ
10/19

์ง์›(employees) ํ…Œ์ด๋ธ”

iddepartment_idname
1101๋ฅดํƒ„์ด
2102๋ฐฐ์บ ์ด
3103๊ตฌ๊ตฌ์ด
4101์ด์…˜์ด

๋ถ€์„œ(departments) ํ…Œ์ด๋ธ”

idname
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, "๊ธฐ์ˆ ํŒ€");

์—ฐ์Šต๋ฌธ์ œ

  1. ํ˜„์žฌ ์กด์žฌํ•˜๊ณ  ์žˆ๋Š” ์ด ๋ถ€์„œ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
select count(*) as total_departments
from departments;
  1. ๋ชจ๋“  ์ง์›๊ณผ ๊ทธ๋“ค์ด ์†ํ•œ ๋ถ€์„œ์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
select e.id, e.name, d.name
from employees e
left join departments d on e.department_id = d.id;
  1. '๊ธฐ์ˆ ํŒ€' ๋ถ€์„œ์— ์†ํ•œ ์ง์›๋“ค์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
select e.name
from employees e inner join departments d 
on e.department_id = d.id
where d.name = '๊ธฐ์ˆ ํŒ€';
  1. ๋ถ€์„œ๋ณ„๋กœ ์ง์› ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
select d.name, count(e.name)
from employees e left join departments d
on e.department_id = d.id
group by d.name;
  1. ์ง์›์ด ์—†๋Š” ๋ถ€์„œ์˜ ์ด๋ฆ„์„ ์ฐพ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
select d.name 
from departments d left join employees e 
on d.id = e.department_id 
where e.id is null;
  1. '๋งˆ์ผ€ํŒ…ํŒ€' ๋ถ€์„œ์—๋งŒ ์†ํ•œ ์ง์›๋“ค์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
select e.name
from employees e inner join departments d
on e.department_id = d.id
where d.name = '๋งˆ์ผ€ํŒ…ํŒ€';
profile
์ •ํ˜•ํ™”๋˜์ง€ ์•Š์€ ๋‚  ๊ฒƒ์˜ ์ƒ๊ฐ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€