SQL 기초8~9 - 12~14 - IN _ (Chapter 07. Logical Operators - [Chapter 07-7. IN])

HA_·2023년 11월 24일
0

Chapter 07-7. IN

1. IN 문법

목록 안에 조건이 존재하는 경우 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE column1 IN (value1, value2, ...);

2. IN 예제 1 - 1

나이가 28세, 48세 중 하나인 데이터 검색

SELECT *
FROM celeb
WHERE age IN (28 , 48);

3. IN 예제 1 - 2

나이가 28세, 48세 중 하나인 데이터 검색

SELECT *
FROM celeb
WHERE age=28 OR age=48;

4. IN 예제 2 - 1

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

내가 적은 답안>

SELECT *
FROM CELEB
WHERE NOT AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND (SEX='F' OR AGE >= 45);


정답!

5. IN 예제 2 - 2

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

SELECT *
FROM CELEB
WHERE AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트');

6. IN 예제 2 - 3

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

SELECT *
FROM CELEB
WHERE NOT AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트');

7. IN 예제 2 - 4

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

SELECT *
FROM CELEB
WHERE NOT AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND SEX='F';

8. IN 예제 2 - 5

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

SELECT *
FROM CELEB
WHERE NOT AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND AGE >= 45;

9. IN 예제 2 - 6

소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
(에러)

SELECT *
FROM CELEB
WHERE NOT AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND SEX='F' OR AGE >= 45;

  • 괄호(우선순위)가 없기 때문에 원하는 값이 나오지 않는다!

10. IN 예제 2 - 7

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

SELECT *
FROM CELEB
WHERE NOT AGENCY IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND (SEX='F' OR AGE >= 45);

혼자서 해봅시다.

문제 1. celeb 테이블에서 아이유, 이미주, 유재석, 송강 중에 소속사가 ‘나무엑터스’인 데이터를 조회하세요.

실습 전, 데이터 확인!

SELECT * FROM CELEB;

내가 쓴 답>

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


정답!

문제 2. celeb 테이블에서 소속사가 안테나, YG엔터테이먼트 중 하나가 아니고, 성별이 여자인 데이터를 조회하세요.

내가 쓴 답>

SELECT *
FROM CELEB
WHERE NOT AGENCY IN ('안테나', 'YG엔터테이먼트') AND SEX='F';


정답!

문제 3. celeb 테이블에서 아이유, 송강, 강동원, 차승원 중에 YG엔터테이먼트 소속이 아니거나 나이가 40세에서 50세 사이인 사람을 찾아보세요.

내가 쓴 답>

SELECT *
FROM CELEB
WHERE NAME IN ('아이유', '송강', '강동원', '차승원') AND NOT AGENCY='YG엔터테이먼트' OR AGE BETWEEN 40 AND 50;


정답>

SELECT *
FROM CELEB
WHERE NAME IN ('아이유', '송강', '강동원', '차승원') AND (NOT AGENCY='YG엔터테이먼트' OR AGE BETWEEN 40 AND 50);

  • 첫 번째 조건(아이유, 송강, 강동원, 차승원 중에)에 부합하고, 두 번째 조건(YG엔터테이먼트 소속이 아니거나 나이가 40세에서 50세 사이인 사람)에도 부합하는 사람인 두 곳 모두에 부합하는 사람을 찾고 싶은 것!
  • 그래서 (NOT AGENCY='YG엔터테이먼트' OR AGE BETWEEN 40 AND 50); 에도 괄호를 씌어야 한다!
  • cf) (NOT AGENCY='YG엔터테이먼트' OR AGE BETWEEN 40 AND 50); 구문에 괄호를 하지 않으면, 조건에 부합하지 않는 '유재석'이 조회된다.
SELECT *
FROM CELEB
WHERE NAME IN ('아이유', '송강', '강동원', '차승원') AND NOT AGENCY='YG엔터테이먼트' OR AGE BETWEEN 40 AND 50;


오답!

0개의 댓글