| 연산자 | 의미 |
|---|---|
| AND | 조건을 모두 만족하는 경우 TRUE |
| OR | 하나의 조건이라도 만족하는 경우 TRUE |
| NOT | 조건을 만족하지 않는 경우 TRUE |
| BETWEEN | 조건값이 범위 사이에 있으면 TRUE |
| IN | 조건값이 목록에 있으면 TRUE |
| LIKE | 조건값이 패턴에 맞으면 TRUE |
SELECT column1, column2, ...
FROM tablename
WHERE condition1 AND condition2 AND condition3 ... ;
(예제) 성별이 남성이고 나이가 40세보다 큰 데이터를 이름의 역순으로 정렬하여 검색
SELECT *
FROM celeb
WHERE sex = 'M' AND age > 40
ORDER BY name DESC;
SELECT column1, column2, ...
FROM tablename
WHERE condition1 OR condition2 OR condition3 ... ;
✔ AND가 OR보다 우선순위가 높으므로 우선되는 조건을 괄호로 묶는 습관❗
(오류) YG엔터테인먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세보다 작은 데이터 검색
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 | 탤런트 | 나무엑터스 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+----------------+
(원하는 결과) YG엔터테인먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세보다 작은 데이터 검색
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엔터테인먼트 |
+----+--------+------------+------+------+-----------+----------------+
SELECT column1, column2, ...
FROM tablename
WHERE NOT condition;
(예제) 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
SELECT *
FROM celeb
WHERE (birthday > 19891231 AND NOT sex = 'F')
OR (birthday < 19800101 AND NOT agency = '안테나');
SELECT column1, column2, ...
FROM tablename
WHERE condition1 BETWEEN value1 AND value2;
(예제) 나이가 20세에서 40세 사이인 데이터 검색
SELECT *
FROM celeb
WHERE age BETWEEN 20 AND 40;
-- WHERE age >= 20 AND age <= 40 결과 동일
SELECT column1, column2, ...
FROM tablename
WHERE column IN(value1, value2, ...);
(예제) 나이가 28세, 48세 중 하나인 데이터 검색
SELECT *
FROM celeb
WHERE age IN (28, 48);
-- WHERE age = 28 OR age 48 결과 동일
SELECT column1, column2, ...
FROM tablename
WHERE column LIKE pettern;
✔ 와일드 카드
| 문자 | 의미 |
|---|---|
| % | 0개 이상의 모든 문자를 대체 (글자 개수 지정하지 않음) |
| _ | 1개 이상의 모든 문자를 대체 (_ 개수만큼 글자 수가 지정) |
(예제1) 직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색
SELECT *
FROM celeb
WHERE job_title LIKE '가_%';
(예제2) 영화배우와 탤런트를 병행하는 연예인 검색
SELECT *
FROM celeb
WHERE job_title LIKE '%영화배우% AND job_title LIKE '%탤런트%';;