SQL 기초 - 5. 연산자(OPERATOR) 2/2

김영빈·2022년 6월 29일
1

SQL 기초

목록 보기
6/11
post-thumbnail

앞 게시물(4. 연산자(OPERATOR) 1/2)에 이어서 진행

3. 논리연산자(BETWEEN, IN, LIKE)

🎯 BETWEEN 문법

조건값이 범위 사이에 있으면 TRUE

  • 예제 1 : 나이가 20세에서 40세 사이의 데이터 검색

✍ 입력

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 4020<=age and age<=40 의 결과값이 동일하다.

  • 예제 2 : 생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG엔터테이먼트이면서 나이가 20세에서 45세 사이가 아닌데이터 검색

✍ 입력

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 BETWEENNOT age BETWEEN결과값이 동일하다.


🎯 IN 문법

조건값이 목록 내에 있으면 TRUE

  • 예제 1 : 나이가 28세, 48세 중 하나인 데이터 검색

✍ 입력

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)

  • 예제 2 : 소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색

✍ 입력

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)

🎯 LIKE 문법

조건값이 목록 내에 있으면 TRUE

  • 예제 1 : 'YG'로 시작하는 소속사 이름을 가진 데이터를 검색

✍ 코드

SELECT * FROM celeb WHERE agency LIKE 'YG%';

- 예제 2 : '엔터테이먼트'로 끝나는 소속사 이름을 가진 데이터를 검색

✍ 코드

SELECT * FROM celeb WHERE agency LIKE '%엔터테이먼트';

- 예제 3 : 직업명에 '가수'가 포함된 데이터를 검색

✍ 코드

SELECT * FROM celeb WHERE job_title LIKE '%가수%';

- 예제 4 : 소속사 이름의 두번째 글자가 G인 데이터를 검색

✍ 코드

SELECT * FROM celeb WHERE agency LIKE '_G%';

- 예제 5 : 직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색

✍ 코드

SELECT * FROM celeb WHERE job_title LIKE '가_%';

- 예제 6 : 직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색

✍ 코드

SELECT * FROM celeb WHERE job_title LIKE '가____%';

- 예제 7 : 직업명이 '영'로 시작하고 '모델'로 끝나는 데이터 검색

✍ 코드

SELECT * FROM celeb WHERE job_title LIKE '영%모델';

- 예제 8 : 영화배우와 텔런트를 병행하는 연예인 검색

✍ 코드

SELECT * FROM celeb WHERE job_title LIKE '%영화배우%' AND job_title LIKE '%텔런트%';

📌 LIKE 조건을 여러개 줄때는 columnname LIKE를 모두 기입해야한다.
- 위의 결과는 아래의 결과와 다르다.
SELECT * FROM celeb WHERE job_title LIKE '%영화배우%' AND '%텔런트%';


- 예제 9 : 직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색

✍ 코드

SELECT * FROM celeb
WHERE job_title LIKE '%,%'
  AND NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%텔런트%');

📌 %는 string이 있을 수도 있고 없을 수도 있다.
- _는 확정적으로 1글자, %는 있을 수도 있고 없을 수도 있다.

profile
개발도상인 냄비짱

0개의 댓글