본문 바로가기
코딩/SQL

[SQL] 논리 연산자

by 미생22 2023. 2. 20.
728x90

1. 실습환경 만들기

앞서 만든 celeb table을 사용하겠다.

 

2. 논리 연산자의 종류

3. AND

조건을 모두 만족하는 경우 TRUE를 반환한다.

SELECT column1, column2, ...
FROM tablename
WHERE codntion1 AND condition2 AND condition3 ...;

만약 성별이 남자고 나이가 40세보다 큰 데이터를 이름의 역순으로 정렬해 검색하고 싶은 경우

SELECT * FROM celeb WHERE sex='M' AND agae>40 ORDER BY name;

로 코드를 짜면 된다.

4. OR

하나의 조건이라도 만족하는 경우 TRUE를 반환한다.

SELECT column1, column2, ...
FROM tablename
WHERE codntion1 OR condition2 OR condition3 ...;

만약 YG엔터테인먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색하고 싶은 경우

SELECT * FROM celeb WHERE (agency='YG엔터테인먼트' OR agency='나무엑터스') AND age<30;

로 코드를 짜면 된다.

5. NOT

조건을 만족하지 못하는 경우 TRUE를 반환한다.

SELECT column1, column2, ..
FROM tablename
WHERE NOT condition;

and나 or가 where절에 들어있을 경우 where condition and not condition;으로 쓰면 된다.

6. BETWEEN

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

SELECT column1, column2, ...
FROM tablename
WHERE column1 BETWEEN value1 AND value2;

여성이면서 나이가 20세에서 45세 사이가 아닌 데이터를 검색하는 법이다.

아래와 같이 between A and B인 경우 괄호 없이 and를 써도 조건을 같이 만족하는 결과를 보여준다.

select * from celeb where NOT age BETWEEN 20 AND 45 and sex='F';

7. IN

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

where column이름 in (리스트) 형태로 작성한다.

select column1, column2, ...
from tablename
where column IN (value1, value2, ...);

소속사가 나무엑터스, 안테나가 아닌 경우만 검색하는 법이다.

select * from celeb where NOT agency IN ('나무엑터스','안테나');

8. LIKE

조건값이 패턴에 맞으면 TRUE를 반환한다.

select column1, column2, ...
from tablename
where column LIKE pattern;

패턴은 아래와 같다.

A로 시작하는 패턴 : 'A%'

A로 끝나는 패턴 : '%A'

A가 들어있는 패턴 : '%A%'

두번째 글자가 A인 패턴 : '_A%'

A로 시작하고 최소 2글자 이상인 패턴 : 'A_%'

A로 시작하고 최소 5글자 이상인 패턴 : 'A____%' (_가 4개)

A로 시작하고 B로 끝나는 패턴 : 'A%B'

 

728x90

'코딩 > SQL' 카테고리의 다른 글

[SQL] JOIN  (0) 2023.02.20
[SQL] UNION  (0) 2023.02.20
[SQL] Order by, 비교 연산자  (0) 2023.02.17
[SQL] 데이터 조작 언어 (select, insert, where, update, delete)  (0) 2023.02.16
[SQL] Table 생성/변경/삭제  (0) 2023.02.16