/*
다음 문항은 WHERE 부정연산 ~ 끝까지 복습을 위한 문제입니다
*/
----------------------- 부정 연산 관련 문항 -------------------------
/*
1. 직원주소 테이블을 이용해서 직원ID가 'A0006' , 'A0007' 이 아닌 대상의 모든 정보를 출력하세요.
<출력결과>
직원ID 구분코드 주소
A0008 집 서울 관악구 청룡로 66
A0009 집 남구 송원로 812
A0010 집 동구 백서로 53
*/
SELECT *
FROM 직원주소
WHERE 직원ID != 'A0006'
AND 직원ID != 'A0007' ;
---------------------- NULL 연산자 관련 문항 ------------------------
/*
2. 직원 테이블을 이용해서 나이가 NULL 이거나 입사일시가 NULL 대상의 모든 정보를 출력하세요.
<출력결과>
직원ID 패스워드 이름 성별 나이 입사일시 주민등록번호 연봉 부서ID
A0003 nono132 이현정 여 null 22/11/06 000112-4566123 2600 D003
A0004 123123!! 김선미 여 null 20/03/11 930722-2766443 4500 D004
A0005 test123 문현철 남 34 null 891231-1786155 5000 D005
*/
SELECT *
FROM 직원
WHERE 나이 IS NULL
OR 입사일시 IS NULL ;
---------------------- SQL 연산자 (IN ,BETWEEN , LIKE) 관련 문항 ------------------------
/*
3. 직원 테이블을 이용해서 부서ID 가 D001 이거나 D005 인 대상의 직원ID , 이름 , 연봉 , 부서ID 를 출력해주세요.
(단, 이번에는 WHERE 조건에 IN 연산자를 활용하여 풀어보세요 . 그리고 출력 순서는 상관없습니다. )
<출력결과>
직원ID 이름 연봉 부서ID
A0001 김철수 2800 D001
A0005 문현철 5000 D005
A0006 송대주 7500 D001
A0010 김홍민 9300 D005
*/
SELECT 직원ID
, 이름
, 연봉
, 부서ID
FROM 직원
WHERE 부서ID IN ('D001', 'D005') ; //OR랑 똑같은 의미로 쓰임.
/*
4. 직원 테이블에서 나이가 40대인 대상의 직원ID , 이름 , 나이 를 출력해주세요.
(단, BETWEEN 을 이용해서 출력해주세요. 출력순서는 상관없습니다. )
<출력결과>
직원ID 이름 나이
A0006 송대주 44
A0007 메이슨 40
A0008 송진아 47
*/
SELECT 직원ID
, 이름
, 나이
FROM 직원
WHERE 나이 BETWEEN 40 AND 49 ;
/*
5. 부서 테이블을 이용해서 부서명 컬럼의 값이 '인' 으로 시작하는 대상의 모든 정보를 출력해주세요.
(힌트 : LIKE 문법 활용 )
<출력 결과>
부서ID 부서명 근무지
D001 인사부 서울
D006 인프라서비스부 서울
*/
SELECT *
FROM 부서
WHERE 부서명 LIKE '인%';
/*
6. 부서 테이블을 이용해서 부서명 컬럼의 값이 '사' 를 포함하는 대상의 모든 정보를 출력해주세요.
(힌트 : LIKE 문법 활용 )
<출력 결과>
부서ID 부서명 근무지
D001 인사부 서울
D004 SI사업부 경기
D005 사업부 제주
*/
SELECT *
FROM 부서
WHERE 부서명 LIKE '%사%';
/*
7. 직원 테이블을 이용해서 입사일시가
2022년4월1일 0시0분0초 이후부터 2023년3월11일 23시59분59초 이내에
입사한 직원의 직원ID , 이름 , 입사일시 , 주민등록번호 를 출력하세요.
<출력결과>
직원ID 이름 입사일시 주민등록번호
A0003 이현정 22/11/06 000112-4566123
*/
SELECT 직원ID
, 이름
, 입사일시
, 주민등록번호
FROM 직원
WHERE 입사일시 >= TO_DATE('20220401000000', 'YYYYMMDDHH24MISS')
AND 입사일시 < TO_DATE('20230311235959', 'YYYYMMDDHH24MISS') ;
SELECT 직원ID
, 이름
, 입사일시
, 주민등록번호
FROM 직원
WHERE TO_CHAR(입사일시, 'YYYYMMDD') >= '20220401'
AND TO_CHAR(입사일시, 'YYYYMMDD') <= '20230311';
--------------------------------------------------
--1번 답
SELECT *
FROM 직원주소
WHERE 직원ID != 'A0006'
AND 직원ID != 'A0007';
--혹은
SELECT *
FROM 직원주소
WHERE 직원ID NOT IN ('A0006' , 'A0007') ;
--2번 답
SELECT *
FROM 직원
WHERE 나이 IS NULL
OR 입사일시 IS NULL ;
--3번 답
SELECT 직원ID , 이름 , 연봉 , 부서ID
FROM 직원
WHERE 부서ID IN ('D001' , 'D005');
--4번 답
SELECT 직원ID , 이름 , 나이
FROM 직원
WHERE 나이 BETWEEN 40 AND 49 ;
--5번 답
SELECT *
FROM 부서
WHERE 부서명 LIKE '인%';
--6번 답
SELECT *
FROM 부서
WHERE 부서명 LIKE '%사%';
--7번 답
SELECT 직원ID , 이름 , 입사일시 , 주민등록번호
FROM 직원
WHERE 입사일시 >= TO_DATE('20220401000000' , 'YYYYMMDDHH24MISS')
AND 입사일시 <= TO_DATE('20230311235959' , 'YYYYMMDDHH24MISS');
-- 혹은
SELECT 직원ID , 이름 , 입사일시 , 주민등록번호
FROM 직원
WHERE TO_CHAR(입사일시 , 'YYYYMMDD') >= '20220401'
AND TO_CHAR(입사일시 , 'YYYYMMDD') <= '20230311' ;
-- 혹은
SELECT 직원ID , 이름 , 입사일시 , 주민등록번호
FROM 직원
WHERE 입사일시 BETWEEN TO_DATE('20220401000000' , 'YYYYMMDDHH24MISS') AND TO_DATE('20230311235959' , 'YYYYMMDDHH24MISS');
댓글