[TIL] SQL/JOIN

HYERINΒ·2024λ…„ 2μ›” 7일

TIL

λͺ©λ‘ 보기
5/13
post-thumbnail

πŸ“– 이둠

πŸ“Œ JOIN

두 개 μ΄μƒμ˜ ν…Œμ΄λΈ”μ„ κ²°ν•©ν•˜λŠ” 것

πŸ“Œ JOIN μ’…λ₯˜

INNER JOIN
두 개의 ν…Œμ΄λΈ”μ—μ„œ κ³΅ν†΅λœ μš”μ†Œλ“€μ„ 톡해 κ²°ν•©ν•˜λŠ” 쑰인방식

LEFT JOIN
두 개의 ν…Œμ΄λΈ”μ—μ„œ κ³΅ν†΅μ˜μ—­μ„ 포함해 μ™Όμͺ½ ν…Œμ΄λΈ”μ˜ λ‹€λ₯Έ 데이터λ₯Ό ν¬ν•¨ν•˜λŠ” 쑰인방식

RIGHT JOIN
두 개의 ν…Œμ΄λΈ”μ—μ„œ κ³΅ν†΅μ˜μ—­μ„ 포함해 였λ₯Έμͺ½ ν…Œμ΄λΈ”μ˜ λ‹€λ₯Έ 데이터λ₯Ό ν¬ν•¨ν•˜λŠ” 쑰인방식

FULL JOIN
두 개의 ν…Œμ΄λΈ”μ—μ„œ κ³΅ν†΅μ˜μ—­μ„ ν¬ν•¨ν•˜μ—¬ μ–‘μͺ½ ν…Œμ΄λΈ”μ˜ λ‹€λ₯Έμ˜μ—­μ„ λͺ¨λ‘ ν¬ν•¨ν•˜λŠ” 쑰인방식

SELF JOIN
자기 μžμ‹ μ˜ ν…Œμ΄λΈ”μ— λŒ€ν•΄μ„œ 1개 ν–‰μ”© κ²°ν•©ν•˜λŠ” 쑰인방식

CROSS JOIN
쑰인 쑰건 없이 ν…Œμ΄λΈ”λΌλ¦¬ κ²°ν•©ν•˜λŠ” 쑰인방식


πŸ’» μ‹€μŠ΅

INNER JOIN 문법

select column1, column2, ...
from tableA
inner join tableB
on tableA.column = tableB.column
where condition

LEFT JOIN 문법

select column1, column2, ...
from tableA
left join tableB
on tableA.column = tableB.column
where condition

RIGHT JOIN 문법

select column1, column2, ...
from tableA
right join tableB
on tableA.column = tableB.column
where condition

FULL JOIN 문법

select column1, column2, ...
from tableA
full outer join tableB
on tableA.column = tableB.column
where condition

SELF JOIN 문법

select column1, column2, ...
from tableA, tableB, ...
where condition

CROSS JOIN 문법

select column1, column2, ...
from tableA
cross join tableB

🧸 review

  • 핑계고 table
create table 핑계고
(
  id int not null auto_increment primary key,
  guest varchar(32) not null,
  broadcast_date date,
  episode int not null,
  season int not null
);
  • 핑계고 table 에 데이터 insert
insert into 핑계고 values (1,'μ΄κ΄‘μˆ˜','2022-12-16',4,1);
insert into 핑계고 values (2,'μ΄λ™μš±','2023-01-21',6,2);
insert into 핑계고 values (3,'ν•˜ν•˜','2023-03-21',10,2);
insert into 핑계고 values (4,'이미주','2023-05-24',13,2);
insert into 핑계고 values (5,'쑰인성','2023-07-22',19,2);
insert into 핑계고 values (6,'κΉ€μ’…λ―Ό','2023-09-07',23,2);
insert into 핑계고 values (7,'곡유','2023-09-29',26,2);
insert into 핑계고 values (8,'μ°¨μŠΉμ›','2023-11-18',30,2);
insert into 핑계고 values (9,'μ΄μ„œμ§„','2024-01-01',35,3);
insert into 핑계고 values (10,'μ•„μ΄μœ ','2024-02-17',38,3);
  • 핑계고에 μΆœμ—°ν•œ λ†€λ©΄λ­ν•˜λ‹ˆ ν…Œμ΄λΈ”μ˜ μΆœμ—°μž 쀑
    λ°°μš°λ‚˜ κ°€μˆ˜κ°€ μ•„λ‹Œ μΆœμ—°μžμ˜ 아이디, 이름, 직업, μ‹œμ¦Œ, μ—ν”Όμ†Œλ“œ 정보 검색
select a.id 아이디, a.name 이름, a.job_title 직업, b.season μ‹œμ¦Œ, b.episode μ—ν”Όμ†Œλ“œ
from λ†€λ©΄λ­ν•˜λ‹ˆ a, 핑계고 b
where a.name = b.guest and not 
(a.job_title like '%배우%' or a.job_title like '%κ°€μˆ˜%')
  • 핑계고에 μΆœμ—°ν•œ λ†€λ©΄λ­ν•˜λ‹ˆ μΆœμ—°μž 쀑 μž‘λ…„ 9μ›” 5일 이전에 μΆœμ—°ν–ˆκ±°λ‚˜
    μ†Œμ†μ‚¬ 이름이 'μ—”ν„°ν…Œμ΄λ¨ΌνŠΈ'둜 λλ‚˜λ©΄μ„œ λ°°μš°λ‚˜ 개그맨이 μ•„λ‹Œ μΆœμ—°μžμ˜ 아이디, 이름, 직업, μ†Œμ†μ‚¬ 정보 검색
select a.id 아이디, a.name 이름, a.job_title 직업, a.agency μ†Œμ†μ‚¬
from λ†€λ©΄λ­ν•˜λ‹ˆ a, 핑계고 b
where a.name = b.guest 
and (b.broadcast_date <'2023-04-05' or a.agency like '%μ—”ν„°ν…Œμ΄λ¨ΌνŠΈ'
and not(a.job_title like '%배우%' or a.job_title like '%개그맨%'));

μ‹€μŠ΅ν™•μΈ


0개의 λŒ“κΈ€