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

WHERE_부정연산, NULL조건, SQL 연산자

by guswn100059 2023. 2. 28.

<부정연산>

SELECT *
  FROM 직원
 WHERE NOT 이름 = '이현정' ;
 
SELECT *
  FROM 직원
 WHERE 이름 != '이현정' ;

 

SELECT *
  FROM 직원
 WHERE NOT 나이 >= 28 ;
 
SELECT *
  FROM 직원
 WHERE 나이 < 28 ;

 

문제)

문제 1)
SELECT 직원ID
     , 구분코드
     , 연락처
  FROM 직원연락처
 WHERE 구분코드 != '휴대폰' ; //구분코드 <> '휴대폰' 로 쓸 수도 있음.
 
문제 2)
SELECT 직원ID
     , 이름
     , 성별
     , 나이
  FROM 직원
 WHERE 나이 >= 50 ;

 

<NULL 조건>

문제) 

문제 1) 
SELECT *
  FROM 직원
 WHERE 나이 IS NOT NULL ;
 
문제 2)
SELECT *
  FROM 직원
 WHERE 입사일시 IS NULL ;

 

<SQL 연산자_IN / BETWEEN / LIKE 조건>

 

[IN]

 

[BETWEEN]

SELECT *
  FROM 직원
 WHERE 나이 >= 20
   AND 나이 <= 29 ;
   
SELECT *
  FROM 직원
 WHERE 나이 BETWEEN 20 AND 29 ;
--BETWEEN은 무조건 ~이상 ~이하(초과, 미만은 절대 사용 노노)
--BETWEEN은 무조건 앞이 뒤보다 작거나 같아야한다.

 

[LIKE]

 

예시문제)

예시 1) 
SELECT *
  FROM 직원
 WHERE 이름 LIKE '강%' ;
 
예시 2)
SELECT *
  FROM 직원
 WHERE 이름 LIKE '%홍%' ;
 
예시 3) 
SELECT *
  FROM 직원
 WHERE 패스워드 LIKE '%123' ;
 
예시 4)
SELECT *
  FROM 직원
 WHERE 이름 LIKE '__수' ;
 
예시 5)
SELECT *
  FROM 부서
 WHERE 부서명 LIKE '__부' ;

+) 보너스 문제. WHERE에 형변환 함수 사용하기

보너스 문제)
1. TO_CHAR을 활용한 방법
SELECT *
  FROM 직원
 WHERE TO_CHAR(입사일시, 'YYYY') = '2015' ;
 
2. TO_DATE를 활용한 방법
SELECT *
  FROM 직원
 WHERE 입사일시 >= TO_DATE('20150101')
   AND 입사일시 < TO_DATE('20160101') ;
   
SELECT *
  FROM 직원
 WHERE 입사일시 >= TO_DATE('20150101000000', 'YYYYMMDDHH24MISS') 
   AND 입사일시 < TO_DATE('20160101000000', 'YYYYMMDDHH24MISS') ;

 

문제)

// 문제1) 직원 테이블에서 이름에 '철'이 포함되는 직원의 직원ID, 이름, 나이를 출력해주세요.
SELECT 직원ID
     , 이름
     , 나이
  FROM 직원
 WHERE 이름 LIKE '%철%' ;
 
// 문제2) 직원 중에 2015년도에 입사를 했거나, 입사일시가 정해지지 않은 직원의 모든 정보를 출력해주세요.
SELECT *
  FROM 직원
 WHERE 입사일시 >= TO_DATE('20150101000000', 'YYYYMMDDHH24MISS') 
   AND 입사일시 < TO_DATE('20160101000000', 'YYYYMMDDHH24MISS') 
    OR 입사일시 IS NULL ;
// TO_CHAR(입사일시, 'YYYY') = '2015'    

// 문제3) 2017년 이후부터 현재 시점까지 입사한 모든 직원을 출력해주세요.
SELECT *
  FROM 직원
 WHERE 입사일시 >= TO_DATE('20170101') ;
   
// 문제4) 직원 중에 연봉이 7000~9000 사이인 직원들의 직원ID, 연봉, 입사일시를 출력해주세요.
SELECT 직원ID
     , 연봉
     , 입사일시
  FROM 직원
 WHERE 연봉 BETWEEN 7000 AND 9000 ;
 
// 문제5) 직원주소 테이블에서 주소가 '동구'로 시작하는 모든 데이터를 출력해주세요.
SELECT *
  FROM 직원주소
 WHERE 주소 LIKE '동구%' ;

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

복습용문제_20230302  (0) 2023.03.02
FROM_기본  (0) 2023.02.28
WHERE_논리조건.연산자의 우선순위  (0) 2023.02.28
230228_복습용문제  (0) 2023.02.28
WHERE_01. 비교조건과 논리조건  (0) 2023.02.27

댓글