1. Logical Operations

1) AND
SELECT COLUMN1, COLUMN2, ...
FROM TABLENAME
WHERE CONDITION1 AND CONDITION2 AND CONDITION3, ...;
(1) AND 예제1_나이가 29세이고 성별이 여성인 데이터 검색
SELECT * FROM CELEB WHERE AGE=29 AND SEX='F';

(2) AND 예제2_성별이 남자이고 나이가 40세 보다 큰 데이터를 이름의 역순으로 정렬하여 검색
SELECT * FROM CELEB WHERE SEX='M' AND AGE>40 ORDER BY NAME DESC;

2) OR
SELECT COLUMN1, COLUMN2, ...
FROM TABLENAME
WHERE CONDITION1 OR CONDITION2 OR CONDITION3, ...;
(1) 예제1_나이가 25세보다 작거나 30세보다 큰 데이터 검색
SELECT * FROM CELEB WHERE AGE<25 OR AGE>30 ORDER BY AGE;

(2) 예제2_나이가 29세 보다 작고 여자이거나, 나이가 30세보다 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색
SELECT * FROM CELEB
WHERE (AGE < 29 AND SEX='F') OR (AGE> 30 AND SEX ='M')
ORDER BY AGE, SEX;

(3) 예제3_YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색
SELECT * FROM CELEB
WHERE (AGENCY ='YG엔터테이먼트' OR AGENCY ='나무엑터스') AND AGE < 30;

3) NOT
SELECT COLUMN1, COLUMN2, ..
FROM TABLENAME
WHERE NOT CONDITION;
(1) 예제1_성별이 여자가 아닌 데이터 검색
SELECT * FROM CELEB
WHERE NOT SEX='F';

(2) 예제2_소속사가 YG엔터테이먼트이면서 남자가 아니거나, 직업이 가수이면서 소속사가 YG엔터테이먼트가 아닌 데이터 검색
SELECT * FROM CELEB
WHERE (AGENCY='YG엔터테이먼트' AND SEX='M') OR (JOB_TITLE = '가수' AND NOT AGENCY='YG엔터테이먼트');

(3) 예제3_생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
SELECT * FROM CELEB
WHERE (BIRTHDAT > 19891231 AND NOT SEX='F') OR (BIRTHDAY< 19800101 AND NOT AGENCY='안테나');

4) BETWEEN
SELECT COLUMN1, COLUMN2, ...
FROM TABLENAME
WHERE COLUMN1 BETWEEN VALUE1 AND VALUE2;
(1) 예제1_나이가 20게에서 40세 사이의 데이터 검색
SELECT * FROM CELEB
WHERE AGE BETWEEN 20 AND 40;

(2) 예제2_생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG엔터테이먼트이면서 나이가 20세에서 45세 사이가 아닌 데이터 검색
SELECT * FROM CELEB
WHERE (NOT BIRTHDAY BETWEEN (19800101 AND 19951231) AND SEX='F') OR (AGENCY='YG엔터테이먼트' AND NOT AGE BETWEEN 20 AND 45)

5) IN
SELECT COLUMN1, COLUMN2, ...
FROM TABLENAME
WHERE COLUMN IN (VALUE1, VALUE2, ...);
(1) 예제1_나이가 28세, 48세 중 하나인 데이터 검색
SELECT * FROM CELEB
WHERE AGE IN (28, 48)
SELECT * FROM CELEB
WHERE AGE=28 OR AGE=48;

(2) 예제2_소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
SELECT * FROM CELEB
WHERE NOT AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND (SEX='F' OR AGE>=45);

6) LIKE
SELECT COLUMN1, COLUMN2, ...
FROM TABLENAME
WHERE COLUMN LIKE PETTERN;
(1) 예제1_소속사 이름이 'YG엔터테이먼트'인 데이터를 검색
SELECT * FROM CELEB
WHERE AGENCY LIKE 'YG엔터테이먼트';

(2) 예제2_'YG'로 시작하는 소속사 이름을 가진 데이터를 검색
SELECT * FROM CELEB
WHERE AGENCY LIKE 'YG%';

(3) 예제3_'엔터테이먼트'로 끝나는 소속사 이름을 가진 데이터를 검색
SELECT * FROM CELEB
WHERE AGENCY LIKE '%엔터테이먼트';

(4) 예제4_직업명에 '가수'가 포함된 데이터를 검색
SELECT * FROM CELEB
WHERE JOB_TITLE LIKE '%가수%';

(5) 예제5_소속사 이름의 두 번째 글자가 G인 데이터를 검색
- '_'는 자릿수를 채워준다. (자릿수 보장)
- '%'는 자릿수 상관없이 나타낸다. '%' 자리에 값이 있을 수도 없을 수도 있다.
SELECT * FROM CELEB
WHERE AGENCY LIKE '_G%';

(6) 예제6_직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색
SELECT * FROM CELEB
WHERE JOB_TITLE LIKE '가_%';

(7) 예제7_직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색
SELECT * FROM CELEB
WHERE JOB_TITLE LIKE '가____%';

(8) 예제8_직업명이 '영'으로 시작하고 '모델'로 끝나는 데이터 검색
SELECT * FROM CELEB
WHERE JOB_TITLE LIKE '영%모델';

(9) 예제9_영화배우와 탤런트를 병행하는 연예인 검색
SELECT * FROM CELEB
WHERE JOB_TITLE LIKE '%영화배우%' AND JOB_TITLE LIKE '%탤런트%';

(10) 예제10_직업이 하나 이상인 연예인 중 영화배우 혹은 탤런트가 아닌 연예인 검색
SELECT * FROM CELEB
WHERE JOB_TITLE LIKE '%,%' AND NOT (JOB_TITLE LIKE '%영화배우%' OR JOB_TITLE LIKE '%탤런트%');

2. 실습