BETWEEN, IN, LIKE

eunbi kim·2024년 3월 31일
0
  • BETWEEN
  • IN
  • LIKE

Celeb 테이블과 실습을 진행하였다~.~

BETWEEN

조건값이 범위 사이에 있으면 TRUE를 반환한다.

나이가 20세에서 40세 사이의 데이터 검색:

select * from celeb where age between 20 and 40;

Between을 안 써도, AND를 이용하여 검색할 수 있다.

 select * from celeb where age>=20 and age<=40;

생년월일이 1980년에서 1985년 사이가 아니면서 여자이거나,
소속사가 YG 엔터테인먼트이면서 나이가 20세에서 45세 사이가 아닌 데이터 검색:

select * from celeb where (not birthday between '1980-01-01' and '1995-12-31');

  • 문제 풀이

Celeb 테이블에서 나이가 30세에서 60세 사이이고 성별이 남자인 데이터를 나이순으로 정렬하여 조회하세요.

select * from celeb where (age between 30 and 60) and sex='M' order by age;

Celeb 테이블에서 나이가 30세에서 60세 사이가 아니거나 YG엔터테인먼트 소속인 데이터를 나이의 역순으로 정렬하여 조회하세요.

select * from celeb where (not age between 30 and 60) or
(agency='YG엔터테인먼트') order by age desc;

Celeb 테이블에서 아이디가 1에서 5 사이의 값이면서 성별이 여자이거나,
아이디가 홀수이면서 성별이 남자이면서 나이가 20세에서 30세 사이인 데이터를 조회하세요.

select * from celeb where (ID between 1 and 5 and sex='F') or 
((ID%2) = 1 and sex='M' and age between 20 and 30);


IN

목록 안에 조건이 존재하는 경우 TRUE를 반환한다.

나이가 28세, 48세 중 하나인 데이터 검색:

select * from celeb where age in (28, 48);

OR를 이용해도 같은 의미이다.

select * from celeb where age=28 or age=48;

소속사가 나무엑터스, 안테나, 울림엔터테인먼트가 아니면서,
성별이 여자거나 나이가 45세 이상인 데이터 검색:

select * from celeb where (not agency in ('나무엑터스', '안테나', '울림엔터테인먼트')) and 
(sex='F' or age>=45);

괄호 중요하다~!

  • 문제 풀이

Celeb 테이블에서 아이유, 이미주, 송강 중에 소속사가 '나무엑터스'인 데이터를 조회하세요.

select * from celeb where name in ('아이유', '이미주', '송강') and agency='나무엑터스';

Celeb 테이블에서 소속사가 안테나, YG엔터테인먼트 중 하나가 아니고, 성별이 여자인 데이터를 조회하세요.

select * from celeb where (not agency in ('안테나', 'YG엔터테인먼트')) and sex='F';

Celeb 테이블에서 아이유, 송강, 강동원, 차승원 중에 YG엔터테인먼트 소속이 아니거나
나이가 40세에서 50세 사이인 사람을 찾아보세요.

select * from celeb where name in ('아이유', '송강', '강동원', '차승원') and 
(not agency='YG엔터테인먼트' or age between 40 and 50);


LIKE

조건값이 패턴에 맞으면 TRUE를 반환한다.
패턴은 %, _ 등을 사용하여 다양한 조건을 지정해줄 수 있다.

예제 많음

소속사 이름이 'YG엔터테인먼트'인 데이터를 검색:

select * from celeb where agency like 'YG엔터테인먼트';

'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 job_title like '가_%';

직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색:

select * from celeb where job_title like '가_____%';

직업명이 '영'으로 시작하고 '모델'로 끝나는 데이터 검색:

select * from celeb where job_title like '영%모델';

영화배우와 텔런트를 병행하는 연예인 검색:

select * from celeb where job_title like '영화배우%' and 
job_title like '%텔런트%';

직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색:

 select * from celeb where job_title like '%,%' and
 not (job_title like '%영화배우%' or job_title like '%텔런트%');

  • 문제 풀이

Celeb 테이블에서 직업 중 가수가 포함되어 있고 성이 이씨인 데이터를 조회하세요.

select * from celeb where job_title like '%가수%' and name like '이%';

Celeb 테이블에서 성별이 남자이거나, 직업명이 '텔런트'로 끝나면서 최소 5글자 이상인 데이터를 조회하세요.

select * from celeb where sex='M' or job_title like '%__텔런트';

Celeb 테이블에서 이름이 두글자인 데이터를 조회하세요.

select * from celeb where name like '__';

Celeb 테이블에서 나이가 30세 이상 50세 이하면서 개그맨이 아닌 데이터를 조회하세요.

select * from celeb where age between 30 and 50 and job_title not like '%개그맨%';

Celeb 테이블에서 아이유, 이미주, 유재석, 송강 중에 소속사 이름이 '나무'로 시작하는 데이터를 조회하세요.

select * from celeb where name in ('아이유', '이미주', '유재석', '송강') and 
agency like '나무%';

Celeb 테이블에서 아이유, 이미주, 송강, 이수현 중에 가수만 직업으로 가졌거나, 가수를 병행하지 않고 텔런트를 하는 사람을 찾으세요.

select * from celeb where name in ('아이유', '이미주', '송강', '이수현') and
(job_title like '가수' or (job_title not like '%가수%' and job_title like '%텔런트%'));

0개의 댓글