[SQL] 07. Logical Operators_ AND,OR,NOT

hhyun·2024년 6월 5일

[SQL]

목록 보기
6/20

📖 Logical Operators

🌟 논리 연산자

AND : 조건을 모두 만족하는 경우 TRUE
OR : 하나의 조건이라도 만족하는 경우 TRUE
NOT : 조건을 만족하지 않는 경우 TRUE
BETWEEN : 조건값이 범위 사이에 있으면 TRUE
IN : 조건값이 목록에 있으면 TRUE
LIKE : 조건값이 패턴에 맞다면 TRUE

📖 AND

🌟 AND : 조건을 모두 만족하는 경우 TRUE

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

🌟 AND 예제

• 성별이 남성이고 나이가 45세보다 큰 data를 이름의 역순으로 정렬하여 검색

SELECT * 
FROM celeb
WHERE sex = 'M' AND age > 404
ORDER BY name DESC;
+----+--------+------------+------+------+-----------+--------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+-----------+--------+
|  6 | 차승원 | 1970-06-07 |   48 | M    | 배우      | YG     |
|  5 | 유재석 | 1972-08-14 |   50 | M    | 개그맨,MC | 안테나 |
+----+--------+------------+------+------+-----------+--------+

📖 OR

🌟 OR : 하나의 조건이라도 만족하는 경우 TRUE

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

🌟 OR 예제

• 안테나 소속이거나 나무엑터스 소속인 연예인 중, 나이가 32세보다 작은 data를 검색

SELECT * 
FROM celeb
WHERE (agency = '안테나' OR agency = '나무엑터스') AND age < 32;
+----+--------+------------+------+------+-----------+------------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE | AGENCY     |
+----+--------+------------+------+------+-----------+------------+
|  2 | 이미주 | 1994-09-23 |   28 | F    | 가수      | 안테나     |
|  3 | 송강   | 1994-04-23 |   28 | M    | 배우      | 나무엑터스 |
+----+--------+------------+------+------+-----------+------------+

❗ [오류]

• AND가 OR보다 우선 순위이기 때문에 OR구문을 괄호로 묶어줘야 한다.

SELECT * 
FROM celeb
WHERE agency = '안테나' OR agency = '나무엑터스' AND age < 32;
+----+--------+------------+------+------+-----------+------------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE | AGENCY     |
+----+--------+------------+------+------+-----------+------------+
|  2 | 이미주 | 1994-09-23 |   28 | F    | 가수      | 안테나     |
|  3 | 송강   | 1994-04-23 |   28 | M    | 배우      | 나무엑터스 |
|  5 | 유재석 | 1972-08-14 |   50 | M    | 개그맨,MC | 안테나     |
+----+--------+------------+------+------+-----------+------------+

📖 NOT

🌟 NOT : 조건을 만족하지 않는 경우 TRUE

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

🌟 NOT 예제

• 성별이 남자가 아닌 data 검색

SELECT *
FROM celeb
WHERE NOT sex = 'M'; 
+----+--------+------------+------+------+-----------+----------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE | AGENCY   |
+----+--------+------------+------+------+-----------+----------+
|  1 | 아이유 | 1993-05-16 |   29 | F    | 가수,배우 | EDAM엔터 |
|  2 | 이미주 | 1994-09-23 |   28 | F    | 가수      | 안테나   |
|  7 | 이수현 | 1999-05-04 |   23 | F    | 가수      | YG       |
+----+--------+------------+------+------+-----------+----------+

• 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 data 검색

SELECT * 
FROM celeb
WHERE (birthday > 19891231 AND NOT sex='F') 
OR (birthday < 19800101 AND NOT agency='안테나');
+----+--------+------------+------+------+-----------+------------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE | AGENCY     |
+----+--------+------------+------+------+-----------+------------+
|  3 | 송강   | 1994-04-23 |   28 | M    | 배우      | 나무엑터스 |
|  6 | 차승원 | 1970-06-07 |   48 | M    | 배우      | YG         |
+----+--------+------------+------+------+-----------+------------+

0개의 댓글