- 나이가 28세, 48세 중 하나인 데이터 검색
select * from celeb where age in (28,48);
- 소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
- celeb에서 소속사가 안테나, YG엔터테이먼트 중 하나가 아니고, 성별이 여자인 데이터 조회
- celeb테이블에서 아이유,송강, 강동원,차승원중에 YG엔터테이먼트 소속이 아니거나 나이가 40~50세인 사람을 찾아보자
pattern이란게 좀 애매하다.
예제로 확인
- YG로 시작하는 소속사 이름을 가진 데이터 검색
select * from celeb where agency LIKE "YG%";
- 엔터테이먼트 로 끝나는 소속사 이름 검색
select * from celeb where agency like "%엔터테이먼트";
- 직업명에 가수 가 포함된 데이터 검색
select * from celeb where job_title like "%가수%";
- 소속사 이름의 두번째 글자가 G인 데이터 검색
select * from celeb where agency like "_G%";
- 직업명이 "가"로 시작하고 최소 2글자 이상인 데이터 검색
select * from celeb where jobtitle like "가%";
- 영화배우와 텔런트를 병행하는 데이터 검색
select * from celeb where job_title like "%영화배우%" and job_title like "%텔런트%;
- 직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예임 검색
select * from celeb where job_title like "%,%" and
job_title like "%영화배우%" or "%텔런트%";
- celeb 테이블에서 나이가 30~50세 이면서 개그맨이 아닌 데이터 검색
- celeb 테이블에서 아이유, 이미주, 송강, 이수현 중에 가수만 직업으로 가졌거나, 가수를 병행하지 않고 텔런트를 하는 사람을 검색
test 1,2 table을 만들고 각각 123, 563 데이터를 넣었다.
환경 : celeb table
- 문제1. 직업이 가수를 포함하는 데이터를 검색하는 쿼리와
직업이 텔런트를 포함하는 데이터를 검색하는 쿼리를
중복을 제거해 합치기
- 문제2. 성이 이씨인 데이터를 검색하는 쿼리와
1970년대 생을 검색하는 쿼리를 중복 포함해서 합치기
table1. celeb
table2. snl_show
- snl_show에 호스트로 출연한 celeb을 기준으로 celeb테이블과 snl_show테이블을 inner join 해보자
select celeb.id, celeb.name, snl_show.id, snl_show.host from celeb inner join snl_show on celeb.name = snl_show.host;
- snl_show에 호스트로 출연한 celeb을 기준으로 celeb테이블과 snl_show테이블을 left join 해보자
select celeb.id, celeb.name, snl_show.id, snl_show.host from celeb left join snl_show on celeb.name = snl_show.host;
- snl_show에 호스트로 출연한 celeb을 기준으로 celeb테이블과 snl_show테이블을 right join해보자
select celeb.id, celeb.name, snl_show.id, snl_show.host from celeb right join snl_show on celeb.name = snl_show.host;
full outer join을 지원하는 dbms에서 사용하는 문법
MySQL에서 full outer join과 같은 결과를 만들 수 있는 문법
- snl_show에 호스트로 출연한 celeb을 기준으로 celeb테이블과 snl_show테이블을 full outer join시키기
select celeb.id, celeb.name, snl_show.id, snl_show.host from celeb left join snl_show on celeb.name = snl_show.host union select celeb.id, celeb.name, snl_show.id, snl_show.host from celeb right join snl_show on celeb.name = snl_show.host;
- snl_show에 호스트로 출연한 celeb을 기준으로 celeb테이블과 snl_show테이블을 self join해보자
select celeb.id, celeb.name, snl_show.id, snl_show.host from celeb, snl_show where celeb.name = snl_show.host;
- celeb테이블의 연예인 중, snl_show에 호스트로 출연했고 소속사가 안테나인 사람의 이름과 직업을 검색
select celeb.name, celeb.job_title from celeb, snl_show where celeb.name = snl_show.host and celeb.agency="안테나";
- celeb 테이블의 연예인 중,
snl_show 에 host 로 출연했고,
영화배우는 아니면서 YG 엔터테이먼트 소속이거나 40세 이상이면서 YG 엔터테이먼트 소속이 아닌
연예인의 이름과 나이, 직업, 소속사, 시즌, 에피소드 정보를 검색select celeb.name, celeb.age, celeb.job_title, celeb.agency, snl_show.season, snl_show.episode from celeb, snl_show where celeb.name = snl_show.host and ((not celeb.job_title like "%영화배우%" and celeb.agency="YG엔터테이먼트") or (celeb.age >= 40 and not agency like "YG엔터테이먼트"));
- snl_show 에 출연한 celeb 중,
에피소드 7, 9, 10 중에 출연했거나
소속사가 YG로 시작하고 뒤에 6글자로 끝나는 사람 중
2020년9월15일 이후에 출연했던 사람을 검색select name, episode, agency, broadcast_date from celeb, snl_show where name = host and ((episode in (7,9,10) or agency like "YG%______") and broadcast_date between "2020-09-15"and"2023-07-18");
- snl_show 에 출연한 celeb 테이블의 연예인 중,
영화배우나 텔런트가 아닌 연예인의
아이디, 이름, 직업, 시즌, 에피소드 정보를 검색하세요.select celeb.id, name, job_title, season, episode from celeb,snl_show where name = host and not (job_title like "%영화배우%" or job_title like "%텔런트%");
- snl_show 에 출연한 celeb 중,
작년 9월 15일 이후에 출연했거나
소속사 이름이 ‘엔터테이먼트’ 로 끝나지 않으면서
영화배우나 개그맨이 아닌 연예인의
celeb 아이디, 이름, 직업, 소속사를 검색하세요.select celeb.id, name, job_title, agency from celeb, snl_show where name = host and (broadcast_date > "2020-09-15") or (not agency like "%엔터테이먼트" and not(job_title like "%영화배우%" or job_title like "%개그맨%")));
뛰어난 글이네요, 감사합니다.