반응형
본 글은 책 "칼퇴족 김대리는 알고 나만 모르는 SQL 기초 편"의 정리 내용입니다.
논리 연산자 IN 은 여러 개의 OR 연산자를 하나로 묶은 것과 같음
IN 연산자
SELECT 열이름 FROM 테이블명 WHERE 비교할 열 이름 IN (조건1, 조건2);
- IN 연산자는 여러 조건들 중 하나만 만족해도 출력 → 여러 개의 OR 연산자를 하나로 묶은 것과 같음
예제 (테이블명 : BRNCH_INFO)
- 각 열에 대한 설명
: 영업점 번호, 영업점 이름, 영업점 신선일, 영업점 폐쇄일, 영업점 인원, 경영평가
BRNCH_NO | BRNCH_NM | OPEN_DT | CLOSE_DT | BRANCH_NUM | BRNCH_PERF |
789 | 시청 | 1990-03-12 | NULL | 13 | A |
640 | 여의도 | 2005-08-07 | NULL | 8 | B |
368 | 대치 | 2005-08-01 | 2013-07-09 | 13 | C |
248 | 창동 | 2000-11-30 | NULL | 12 | A |
547 | 종각 | 1993-02-21 | NULL | 11 | C |
780 | 명동 | 1999-09-22 | NULL | 8 | A |
987 | 역삼 | 2008-08-30 | NULL | 7 | B |
456 | 대학로 | 2010-12-01 | NULL | 8 | B |
650 | 신촌 | 2002-05-17 | NULL | 10 | C |
- Primary Key는 BRNCH_NO
더보기
CREATE TABLE BRNCH_INFO
(
BRNCH_NO INT NOT NULL,
BRNCH_NM CHAR(20) NOT NULL,
OPEN_DT date NOT NULL,
CLOSE_DT date NULL,
BRNCH_NUM INT NOT NULL,
BRNCH_PERF CHAR(20) NOT NULL
);
INSERT INTO BRNCH_INFO
VALUES
(789, '시청', '1990-03-12', NULL, 13, 'A'),
(640, '여의도', '2005-08-07', NULL, 8, 'B'),
(368, '대치', '2005-08-01', '2013-07-09', 13, 'C'),
(248, '창동', '2000-11-30', NULL, 12, 'A'),
(547, '종각', '1993-02-21', NULL, 11, 'C'),
(780, '명동', '1999-09-22', NULL, 8, 'A'),
(987, '역삼', '2008-08-30', NULL, 7, 'B'),
(456, '대학로', '2010-12-01', NULL, 8, 'B'),
(650, '신촌', '2002-05-17', NULL, 10, 'C');
문제
Q1. 위 테이블에서 직원 수가 10명 또는 8명이면서 경영평가가 'A' 또는 'B'인 영업점 번호, 영업점 이름, 영업점 인원, 경영평가를 출력하는 쿼리문
BRNCH_NO | BRNCH_NM | BRNCH_NUM | BRNCH_PERF |
640 | 여의도 | 8 | B |
780 | 명동 | 8 | A |
456 | 대학로 | 8 | B |
더보기
SELECT BRNCH_NO, BRNCH_NM, BRNCH_NUM, BRNCH_PERF
FROM BRNCH_INFO
WHERE BRNCH_NUM IN (8, 10)
AND BRNCH_PERF IN ('A', 'B');
NOT IN 연산자
SELECT 열이름 FROM 테이블명 WHERE 비교할 열 이름 NOT IN (조건1, 조건2);
- NOT IN 연산자는 뒤에 있는 조건을 부정할 때 사용
- IN 연산자 내부의 조건들은 OR 인 반면, NOT IN 연산자 내부의 조건들은 AND
문제
Q2. 아직 폐쇄되지 않았거나 2000년도 이전에 신설한 영업점 중 경영평가가 ‘A’가 아닌 영업점 번호, 영업점 이름, 신설일, 폐쇄일, 경영평가를 출력
BRNCH_NO | BRNCH_NUM | OPEN_DT | BRNCH_NUM | BRNCH_PERF |
368 | 대치 | 2005-08-01 | 2013-07-09 | C |
547 | 종각 | 1993-02-21 | NULL | C |
더보기
SELECT BRNCH_NO, BRNCH_NM, OPEN_DT, CLOSE_DT, BRNCH_PERF
FROM BRNCH_INFO
WHERE CLOSE_DT IS NOT NULL OR OPEN_DT < '2000-01-01')
AND BRNCH_PERF NOT IN ('A');
반응형
'SQL' 카테고리의 다른 글
[SQL] 2개 이상의 열 결합하기(결합 연산자 '||') (0) | 2022.02.11 |
---|---|
[SQL] 키워드 필터링 (LIKE) (0) | 2022.02.11 |
[SQL] 논리연산자 사용하기 (OR) (0) | 2022.02.08 |
[SQL] 논리연산자 사용하기 (AND) (0) | 2022.02.08 |
[SQL] NULL값의 처리 (COALESCE) (0) | 2022.02.08 |