SQL 기초8~9 - 15~17 - LIKE _ (Chapter 07. Logical Operators - [Chapter 07-8. LIKE])

HA_·2023년 11월 24일
0

SQL 기초8~9 - 15~17 - LIKE _ (Chapter 07. Logical Operators - [Chapter 07-8. LIKE])

Chapter 07-8. LIKE

1. LIKE 문법

조건값이 패턴에 맞으면 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE column LIKE pettern;

2. LIKE 예제 1 - 1

소속사 이름이 ‘YG엔터테이먼트’ 인 데이터를 검색

SELECT *
FROM CELEB
WHERE AGENCY LIKE 'YG엔터테이먼트';
  • LIKE 문법을 쓸 수 있다.

3. LIKE 예제 1 - 2

소속사 이름이 ‘YG엔터테이먼트’ 인 데이터를 검색

SELECT *
FROM CELEB
WHERE AGENCY='YG엔터테이먼트';


이렇게 해도 검색할 수 있다!

4. LIKE 예제 2

  • 패턴 변경
    ‘YG’로 시작하는 소속사 이름을 가진 데이터를 검색
SELECT *
FROM CELEB
WHERE AGENCY LIKE 'YG%';

5. LIKE 예제 3

‘엔터테이먼트’로 끝나는 소속사 이름을 가진 데이터를 검색

SELECT *
FROM CELEB
WHERE AGENCY LIKE '%엔터테이먼트';

6. LIKE 예제 4

직업명에 ‘가수’가 포함된 데이터를 검색

SELECT *
FROM CELEB
WHERE AGENCY LIKE '%엔터테이먼트';

  • '가수'가 포함된다는 것 => '가수'로 시작해도 되고, '가수'로 끝나도 되고, '가수'가 중간에 포함되도 되는 조건을 말한다!

7. LIKE 예제 5

소속사 이름의 두번째 글자가 G인 데이터를 검색

SELECT *
FROM CELEB
WHERE AGENCY LIKE '_G%';

8. LIKE 예제 6

직업명이 ‘가' 로 시작하고 최소 2글자 이상인 데이터 검색

SELECT *
FROM CELEB
WHERE JOB_TITLE LIKE '가_%';

9. LIKE 예제 7

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

SELECT *
FROM CELEB
WHERE JOB_TITLE LIKE '가____%';

10. LIKE 예제 8

직업명이 ‘영'으로 시작하고 '모델’로 끝나는 데이터 검색

SELECT *
FROM CELEB
WHERE JOB_TITLE LIKE '영%모델';

11. LIKE 예제 9

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

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

cf) 두 가지 이상 패턴을 쓸 때, 같은 칼럼이라도 패턴 개수만큼 칼럼도 같이 써야 함!

주의!!!) 칼럼을 한 번만 쓰고 AND로 묶으면 오류남!!!!!

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

12. LIKE 예제 10 - 1

직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색
내가 적은 답)

SELECT *
FROM CELEB
WHERE JOB_TITLE LIKE '%,%' AND NOT JOB_TITLE IN ('영화배우', '텔런트');


오답!
정답)

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

13. LIKE 예제 10 - 2

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

SELECT *
FROM CELEB
WHERE JOB_TITLE LIKE '%,%'; 

14. LIKE 예제 10 - 3

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

SELECT *
FROM CELEB
WHERE JOB_TITLE LIKE '%영화배우%' OR JOB_TITLE LIKE '%텔런트%'; 

15. LIKE 예제 10 - 4

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

SELECT *
FROM CELEB
WHERE NOT (JOB_TITLE LIKE '%영화배우%' OR JOB_TITLE LIKE '%텔런트%'); 

16. LIKE 예제 10 - 5

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

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

혼자서 해봅시다.

문제 1. celeb 테이블에서 직업중 가수가 포함되어 있고 성이 이씨인 데이터 조회하세요.

실습 전, 데이터 확인!

SELECT * FROM CELEB;

내가 쓴 답)

SELECT *
FROM CELEB
WHERE JOB_TITLE LIKE '%가수%' AND NAME LIKE '이%';


정답!

문제 2. celeb 테이블에서 성별이 남자 이거나 직업명이 ‘텔런트’ 로 끝나면서 최소 5글자 이상인 데이터를 조회하세요.

내가 쓴 답)

SELECT *
FROM CELEB
WHERE SEX='M' OR JOB_TITLE LIKE '__%텔런트';


정답!

cf) 정답이긴 한데 '%텔런트' 보다는 '%텔런트'으로 씀!

문제 3. celeb 테이블에서 이름이 두글자인 데이터를 조회하세요.

내가 쓴 답>

SELECT *
FROM CELEB
WHERE NAME LIKE '__';


정답!

문제 4. celeb 테이블에서 나이가 30세 이상 50세 이하면서 개그맨이 아닌 데이터를 조회하세요.

내가 쓴 답)

SELECT *
FROM CELEB
WHERE AGE BETWEEN 30 AND 50 AND NOT JOB_TITLE LIKE '%개그맨%';


정답?

풀이에서는 WHERE AGE BETWEEN 30 AND 50 AND JOBTITLE NOT_ LIKE '%개그맨%'; 으로 작성함!

문제 5. celeb 테이블에서 아이유, 이미주, 유재석, 송강 중에 소속사 이름이 ‘나무’로 시작하는 데이터를 조회하세요.

내가 쓴 답)

SELECT *
FROM CELEB
WHERE NAME IN ('아이유', '이미주', '유재석', '송강') AND AGENCY LIKE '나무%';


정답!

문제 6. celeb 테이블에서 아이유, 이미주, 송강, 이수현 중에 가수만 직업으로 가졌거나, 가수를 병행하지 않고 텔런트를 하는 사람을 찾으세요

내가 쓴 답)

SELECT *
FROM CELEB
WHERE NAME IN ('아이유', '이미주', '송강', '이수현') AND (JOB_TITLE LIKE '%가수%' OR (JOB_TITLE NOT LIKE '%가수%' AND JOB_TITLE LIKE '%텔런트%'));


정답)

SELECT *
FROM CELEB
WHERE NAME IN ('아이유', '이미주', '송강', '이수현') AND (JOB_TITLE LIKE '가수'
OR (JOB_TITLE NOT LIKE '%가수%' AND JOB_TITLE LIKE '%텔런트%'));


오답!

풀이) JOB_TITLE LIKE '%가수%' => JOB_TITLE LIKE '가수'

0개의 댓글