SQL: LOGICAL OPERATION

보라·2024년 1월 21일
0

Ch. 5 SQL

목록 보기
5/14

Logical Operators (논리 연산자)

AND

: 조건을 만족하는 경우 TRUE
SELECT column1, column2, ...
From tablename
WHERE condition1 AND condition2 AND condition3 ...;

EX: 나이가 29세이고 성별이 여성인 데이터 검색
mysql> select * from celeb where age=29 and sex='F';
+----+--------+------------+------+------+--------------+-------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+--------------+-------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM 엔터테인먼트 |
+----+--------+------------+------+------+--------------+-------------------+

EX: 성별이 남자이고, 소속사가 YG인 데이터를 소속사 순으로 정렬 조회
mysql> select * from celeb where sex='M' and agency='YG' order by agency;
+----+--------+------------+------+------+------------------+--------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+--------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG |
+----+--------+------------+------+------+------------------+--------+

OR

: 하나의 조건이라도 만족하는 경우 TRUE
SELECT column1, column2, ...
From tablename
WHERE condition1 OR condition2 OR condition3 ...;

EX: 나이가 25세보다 작거나 30세보다 큰 데이터 검색
mysql> select * from celeb where age < 25 or age > 30 order by age;
+----+--------+------------+------+------+------------------+--------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+--------+
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
+----+--------+------------+------+------+------------------+--------+

EX: 나이가 29세보다 작고 여자이거나, 나이가 30세보다 크고 남자인 데이터를
나이와 성별 순으로 정렬하여 검색. (OR 로 묶여있음)
mysql> select * from celeb where (age<29 and sex='F') OR (age>30 and sex='M') order by age, sex;
+----+--------+------------+------+------+------------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+------------------+
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
+----+--------+------------+------+------+------------------+------------------+

EX: YG 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세보다 작은 데이터를 검색
mysql> select * from celeb where (agency='YG' or agency='나무엑터스') and age<30;
+----+--------+------------+------+------+-----------+------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+-----------+------------+
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG |
+----+--------+------------+------+------+-----------+------------+

EX: 아이디가 홀수 이면서 성별인 남자인 사람, 아이디가 짝수이면서 소속사가 yg 인 데이터를 나이순으로 정렬하여 검색
mysql> select * from celeb where ((id%2) = 1 and sex='M') or ((id%2) = 0 and agency='YG') order by age;
+----+--------+------------+------+------+------------------+------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+------------+
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
+----+--------+------------+------+------+------------------+------------+

NOT

: 조건을 만족하지 않는 경우 TRUE
SELECT column1, column2, ...
From tablename
WHERE NOT condition;

EX: 성별이 여자가 아닌 데이터 검색
mysql> select * from celeb where not sex='F';
+----+--------+------------+------+------+------------------+------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+------------+
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG |
+----+--------+------------+------+------+------------------+------------+

EX: (1)소속사가 YG면서 남자가 아니거나(OR), (2)직업이 가수면서 소속사가 YG 아닌 데이터 검색.
1. SELECT FROM celeb WHERE (agency='YG' AND NOT sex='M') OR
2. SELECT
FROM celeb WHERE (job_title ='가수' AND NOT agency='YG');
+----+--------+------------+------+------+-----------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+-----------+------------------+
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG |
+----+--------+------------+------+------+-----------+------------------+

EX: (1)생일이 1990년 이후이면서 여자가 아니거나(OR), 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색.
1. SELECT FROM celeb WHERE birthday > 19891231 AND NOT sex='F';
2. SELECT
FROM celeb WHERE 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 |
+----+--------+------------+------+------+----------------+------------+

profile
데이터 분석 취준생

0개의 댓글