앞 게시물(4. 연산자(OPERATOR) 1/2)에 이어서 진행
조건값이 범위 사이에 있으면 TRUE
SELECT * FROM celeb WHERE age BETWEEN 20 AND 40;
SELECT * FROM celeb WHERE age>=20 AND age<=40
+----+--------+------------+------+------+--------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+--------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 텔런트 | EDAM엔터테이먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 3 | 송강 | 1994-04-23 | 28 | M | 텔런트 | 나무엑터스 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+--------+------------+------+------+--------------+------------------+
4 rows in set (0.00 sec)
📌 BETWEEN은 경계값도 포함하여 검색
- age BETWEEN 20 AND 40 과 20<=age and age<=40 의 결과값이 동일하다.
SELECT * FROM celeb
WHERE (birthday NOT BETWEEN 19800101 AND 19951231 AND sex='F')
OR (agency='YG엔터테이먼트' AND age NOT BETWEEN 20 AND 45);
+----+--------+------------+------+------+--------------+--+----+--------+------------+------+------+----------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+----------------+
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+--------+------------+------+------+----------------+----------------+
2 rows in set (0.00 sec)
📌 BETWEEN 조건에 NOT의 순서는 columnname 앞뒤 모두 가능
- age NOT BETWEEN과 NOT age BETWEEN은 결과값이 동일하다.
조건값이 목록 내에 있으면 TRUE
SELECT * FROM celeb WHERE AGE IN (28,48);
SELECT * FROM celeb WHERE AGE=28 OR AGE=48;
+----+--------+------------+------+------+----------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+------------------+
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 3 | 송강 | 1994-04-23 | 28 | M | 텔런트 | 나무엑터스 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
+----+--------+------------+------+------+----------------+------------------+
3 rows in set (0.00 sec)
SELECT * FROM celeb
WHERE (NOT agency IN ('나무엑터스', '안테나', '울림엔터테이먼트')) AND (sex='F' OR age>=45);
+----+--------+------------+------+------+----------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 텔런트 | EDAM엔터테이먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+--------+------------+------+------+----------------+------------------+
3 rows in set (0.00 sec)
조건값이 목록 내에 있으면 TRUE
SELECT * FROM celeb WHERE agency LIKE 'YG%';
SELECT * FROM celeb WHERE agency LIKE '%엔터테이먼트';
SELECT * FROM celeb WHERE job_title LIKE '%가수%';
SELECT * FROM celeb WHERE agency LIKE '_G%';
SELECT * FROM celeb WHERE job_title LIKE '가_%';
SELECT * FROM celeb WHERE job_title LIKE '가____%';
SELECT * FROM celeb WHERE job_title LIKE '영%모델';
SELECT * FROM celeb WHERE job_title LIKE '%영화배우%' AND job_title LIKE '%텔런트%';
📌 LIKE 조건을 여러개 줄때는 columnname LIKE를 모두 기입해야한다.
- 위의 결과는 아래의 결과와 다르다.
SELECT * FROM celeb WHERE job_title LIKE '%영화배우%' AND '%텔런트%';
SELECT * FROM celeb
WHERE job_title LIKE '%,%'
AND NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%텔런트%');
📌 %는 string이 있을 수도 있고 없을 수도 있다.
- _는 확정적으로 1글자, %는 있을 수도 있고 없을 수도 있다.