[SQL] 비교연산자, 논리연산자(AND, OR, NOT, BETWEEN, IN, LIKE)

쩡이·2023년 8월 22일
0

SQL

목록 보기
3/10

비교연산자(Comparision Operators)

a>5 크다
a>=5 크거나 같다
a=5 같다
a<5 작다
a<=5 작거나 같다
a!=5 같지 않다
a<>5 같지 않다
select column1, column2, ...
from 테이블명
where 비교연산자 이용하여 조건주기
order by 기준컬럼 asc or desc

예시) celeb 테이블에서 나이가 29보다 작은 
데이터의 이름, 나이, 소속사 컬럼을 나이 역순으로 정렬한 뒤, 소속사 순으로 정렬
SELECT name, age, agency 
FROM celeb 
WHERE age<29
ORDER BY age DESC, agency;

논리연산자(Logical Operators)

AND 조건을 모두 만족하는 경우 True
OR 하나의 조건이라도 만족하는 경우 True
NOT 조건을 만족하지 않는 경우 True
BETWEEN 조건값이 범위 사이에 있으면 True
IN 조건값이 목록에 있으면 True
LIKE 문자열에서 사용, 조건값이 패턴에 맞으면 True

AND

select column1, column2, ...
from 테이블명
where condition1 AND condition2 AND condition3, ...;

#celeb 테이블에서 나이가 29세이고 성별이 여성인 데이터 검색

select * from celeb
where age=29 AND sex='F';

OR

select column1, column2, ...
from 테이블명
where condition1 OR condition2 OR condition3, ...;

#celeb 테이블에서 남자이면서 YG엔터테이먼트 소속이거나, 나이가 30세 보다 작은 데이터를 나이, 소속사 순으로 정렬하여 검색

select * from celeb
where (sex='M' AND agency='YG엔터테이먼트') OR age<30 
ORDER BY age, agency;

NOT

select column1, column2, ...
from 테이블명
where NOT condition;

#celeb 테이블에서 생일이 1990년 이후이면서 여자가 아니거나, 
생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색

select * from celeb
where (birthday > 19891231 AND NOT sex='F') OR
(birthday < 19800101 AND NOT agency='안테나');


#celeb 테이블에서 직업이 가수가 아니면서 성별이 여자이거나,
나이가 40보다 작지 않으면서 아이디가 홀수인 데이터 검색

select * from celeb
where (NOT job_title='가수' AND sex='F') OR
(NOT age<40 AND (id%2)!=0);

BETWEEN

select column1, column2, ...
from 테이블명
where column1 BETWEEN value1 AND value2;

#celeb 테이블에서 나이가 20세이상 40세이하 데이터 검색

select * from celeb
where age BETWEEN 20 AND 40;


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

select * from celeb
where (NOT birthday 19800101 AND 19951231 AND sex='F') OR
(NOT agency='YG엔터테이먼트' AND NOT age BETWEEN 20 AND 45);

IN

select column1, column2, ...
from 테이블명
where column IN (value1, value2, ...);

#celeb 테이블에서 나이가 28세, 48세 중 하나인 데이터 검색
select * from celeb where age IN (28,48);


#celeb 테이블에서 아이유, 송강, 강동원, 차승원 중에 YG엔터테이먼트 소속이 아니거나 나이가 40세에서 50세 사이인 사람 찾아보기
select * from celeb
where name in ('아이유', '송강', '강동원', '차승원') AND
(NOT agency='YG엔터테이먼트' OR age BETWEEN 40 AND 50);

LIKE

select column1, column2, ...
from 테이블명
where column LIKE pettern;

#celeb 테이블에서 소속사 이름이 'YG엔터테이먼트'인 데이터 검색
select * from celeb
where agency LIKE 'YG엔터테이먼트';

#celeb 테이블에서 'YG'로 시작하는 소속사 이름을 가진 데이터 검색
select * from celeb 
where agency LIKE 'YG%';

#celeb 테이블에서 직업명에 '가수'를 포함하는 데이터 검색
select * from celeb
where job_title LIKE '%가수%';

#celeb 테이블에서 소속사 이름의 두번째 글자가 G인 데이터 검색
select * from celeb
where agency='_G%';

#celeb 테이블에서 영화배우와 탤런트를 병행하는 연예인 검색
select * from celeb
where job_title LIKE '%영화배우%' AND job_title LIKE '%탤런트%';

#celeb 테이블에서 직업이 하나 이상인 연예인 중 영화배우 혹은 탤런트가 아닌 연예인 검색
select * from celeb
where job_title LIKE '%,%' AND 
NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%탤런트%');

0개의 댓글