SQL 기초5, 6~7 - 04~06 - OR _ (Chapter 07. Logical Operators - [Chapter 07-4. OR])

HA_·2023년 11월 23일
0

Chapter 07-4. OR

1. OR 문법

하나의 조건이라도 만족하는 경우 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE condition1 OR condition2 OR condition3 ...;

2. OR 예제 1

나이가 25세보다 작거나 30세보다 큰 데이터 검색

SELECT *
FROM celeb
WHERE age<25 OR age>30
ORDER BY age;

3. OR 예제 2 - 1

나이가 29세 보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색

4. OR 예제 2 - 2

나이가 29세 보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색

SELECT *
FROM celeb
WHERE age<29 AND sex='F';

5. OR 예제 2 - 3

나이가 29세 보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색

SELECT *
FROM celeb
WHERE age>30 AND sex='M';

6. OR 예제 2 - 4

나이가 29세 보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색

SELECT *
FROM celeb
WHERE (age<29 AND sex='F') OR (age>30 AND sex='M');


cf) 괄호가 없을 때,

  • 결과는 같지만, 명시적으로 가독성을 높이기 위해서 조건에 괄호를 넣는 습관이 좋음!!
  • and와 or이 섞인 경우에 and 조건이 우선순위가 더 높다!!
  • 즉, and >>>> or

7. OR 예제 2 - 5

나이가 29세 보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색

SELECT *
FROM celeb
WHERE (age<29 AND sex='F') OR (age>30 AND sex='M')
ORDER BY age, sex;

8. OR 예제 3 - 1

YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색

9. OR 예제 3 - 2

YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색

SELECT *
FROM celeb
WHERE agency='YG엔터테이먼트' OR agency='나무엑터스';

10. OR 예제 3 - 3

YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색 (에러)

SELECT *
FROM celeb
WHERE agency='YG엔터테이먼트' OR agency='나무엑터스' AND age<30;

  • AND 와 OR의 우선순위 때문에 괄호를 먼저 처리해야 할 것들을 묶지 않으면 [소속사가 '나무엑터스'이고 30세 보다 작은 사람] 이거나 [소속사가 'YG엔터테이먼트'인 사람]을 조회한다!!

11. OR 예제 3 - 4

YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색

SELECT *
FROM celeb
WHERE (agency='YG엔터테이먼트' OR agency='나무엑터스') AND age<30;

혼자서 해봅시다.

문제 1. celeb 테이블에서 성별이 남자이고 소속사가 YG엔터테이먼트인 데이터를 소속사 순으로 정렬하여 조회하세요.

SELECT *
FROM CELEB
WHERE AGENCY='YG엔터테이먼트' OR AGENCY='안테나'
ORDER BY AGENCY;

문제 2. Celeb 테이블에서 남자이면서 YG엔터테이먼트 소속이거나, 나이가 30세 보다 작은 데이터를 나이, 소속사 순으로 정렬하여 검색하세요.

SELECT *
FROM CELEB
WHERE (SEX='M' AND AGENCY='YG엔터테이먼트') OR AGE<30  
ORDER BY AGE, AGENCY;

문제 3. Celeb 테이블에서 아이디가 홀수면서 성별이 남자거나, 아이디가 짝수면서 소속사가 YG엔터테이먼트인 데이터를 나이순으로 정렬하여 검색하세요.

  1. 아이디가 홀수면서
SELELCT *
FROM CELEB
WHERE (ID%2) = 1;


2. 아이디가 홀수면서 성별이 남자거나,

SELECT *
FROM CELEB
WHERE (ID%2) = 1 AND SEX='M';


3. 아이디가 짝수면서

SELECT *
FROM CELEB
WHERE (ID%2) = 0;


4. 아이디가 짝수면서 소속사가 YG엔터테이먼트

SELECT *
FROM CELEB
WHERE (ID%2) = 0 AND AGENCY='YG엔터테이먼트';


5. 아이디가 홀수면서 성별이 남자거나, 아이디가 짝수면서 소속사가 YG엔터테이먼트인 데이터

SELECT *
FROM CELEB
WHERE ((ID%2) = 1 AND SEX='M') OR ((ID%2) = 0 AND AGENCY='YG엔터테이먼트');


6. 최종!) Celeb 테이블에서 아이디가 홀수면서 성별이 남자거나, 아이디가 짝수면서 소속사가 YG엔터테이먼트인 데이터를 나이순으로 정렬하여 검색하세요.

SELECT *
FROM CELEB
WHERE ((ID%2) = 1 AND SEX='M') OR ((ID%2) = 0 AND AGENCY='YG엔터테이먼트')
ORDER BY AGE;

0개의 댓글