제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.25]

[강의 요약]

[Part 05. SQL_ Ch07. Logical Operations] 강의 수강

01~09 수강. ANR OR NOT

🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰                                     ] 70/100일 (70%)

곧 SQLD 시험이라 시간관계상 30분 이상 최소한의 강의만 수강할듯함

드디어 70일....!

 

SQL에서 조건을 조합해서 더 정밀한 검색을 하기 위해 사용하는 것이 논리 연산자다.

단순히 WHERE 조건 하나만 사용하는 게  아니라, AND, OR, NOT을 사용하면 보다 복잡한 설정이 가능하다.

실습 환경은 저번과 동일하다.

USE zerobase;

 

 

[AND]

▶ AND 연산자

모두 만족하는 조건

SELECT * FROM celeb
WHERE age = 29 AND gender = 'F';
  • 나이가 29세 그리고 성별이 여성인 경우만 조회
  • 모든 조건이 TRUE여야 전체 결과가 TRUE

 

▶ 예제: 성별이 남자이고 나이가 40세 초과

SELECT * FROM celeb
WHERE gender = 'M' AND age > 40
ORDER BY name DESC;
  • AND는 조건을 좁혀주는 필터링 도구

 

▶ 연습 문제

-- 문제 1
SELECT * FROM celeb
WHERE gender = 'M' AND agency = 'YG엔터테이먼트'
ORDER BY agency;

-- 문제 2
SELECT * FROM celeb
WHERE gender = 'M' AND age >= 30
ORDER BY age;

 

 

 

[OR]

▶ OR 연산자

하나만 만족해도 TRUE

SELECT * FROM celeb
WHERE age < 25 OR age > 30;
  • 둘 중 하나라도 만족하면 결과에 포함

 

▶ 복합 조건 예제

괄호로 구분하는 게 필수다.

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

 

▶ YG 또는 나무엑터스 소속 + 30세 미만 조건

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

 

▶ 참고용 예시들

-- 문제 1
SELECT * FROM celeb
WHERE agency = 'YG엔터테이먼트' OR agency = '안테나'
ORDER BY agency;

-- 문제 2
SELECT * FROM celeb
WHERE (gender = 'M' AND agency = 'YG엔터테이먼트') 
   OR age < 30
ORDER BY age, agency;

-- 문제 3
SELECT * FROM celeb
WHERE (id % 2 = 1 AND gender = 'M') 
   OR (id % 2 = 0 AND agency = 'YG엔터테이먼트')
ORDER BY age;

 

▶ 잘못된 OR 사용

괄호 없이 작성한 경우, 고전 해석 순서가 달라져 오류가 발생하거나 원치 않는 결과가 나올 수 있다.

 

 

 

[NOT]

▶ NOT 연산자

조건을 만족하지 않는 경우

SELECT * FROM celeb
WHERE NOT gender = 'F';
-- 또는
WHERE gender != 'F';
  • NOT은 =, IN, BETWEEN, LIKE 등 다양한 조건과 함께 사용 가능하다.

 

▶ 복합 예제: NOT + AND + OR

SELECT * FROM celeb
WHERE (agency = 'YG엔터테이먼트' AND NOT gender = 'M')
   OR (job = '가수' AND agency != 'YG엔터테이먼트');
  • AND와 OR, NOT이 조합될 땐 괄호를 꼭 사용해야함

 

▶ 생년월일 조건까지 추가된 예제

SELECT * FROM celeb
WHERE (birth > '1990-01-01' AND NOT gender = 'F')
   OR (birth < '1979-01-01' AND NOT agency = '안테나');

 

▶ 추가 예시들

-- 문제 1
SELECT * FROM celeb
WHERE NOT agency = 'YG엔터테이먼트' AND age <= 40
ORDER BY name;

-- 문제 2
SELECT * FROM celeb
WHERE NOT gender = 'M' OR age >= 30
ORDER BY age DESC;

-- 문제 3
SELECT * FROM celeb
WHERE (NOT job = '가수' AND gender = 'F')
   OR (age >= 40 AND id % 2 = 1);

 

 

 

[나의 생각 정리]

논리 연산자는 파이썬에서도 다뤘기 때문에 어려운 부분은 없다.

 

 

[적용점]

특정 조건으로 검색할 때 사용

 

 

“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”