Eggs Sunny Side Up
본문 바로가기
Computer Engineering/DB_Oracle

복습용문제_20230302

by guswn100059 2023. 3. 2.
/* 
다음 문항은 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');

'Computer Engineering > DB_Oracle' 카테고리의 다른 글

ANSI문법  (0) 2023.03.02
FROM_조인(join)  (0) 2023.03.02
FROM_기본  (0) 2023.02.28
WHERE_부정연산, NULL조건, SQL 연산자  (0) 2023.02.28
WHERE_논리조건.연산자의 우선순위  (0) 2023.02.28

댓글