728x90

 

ESCAPE 식별자

escape 식별자로 like 연산자를 사용하여 '%' 및 '_' 가 포함된 문자 패턴을 검색할 수 있다.

 

컬럼명 != '김%' 과 컬럼명 LIKE ‘김%’의 차이

= 혹은 != '김%'으로 검색하면 '김%' 데이터자체를 검색

LIKE '김%' 뒤에 어떤게 오든 상관없다. LIKE와 사용하는 % _ 는 와일드카드 적용받는다

 

SELECT EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE NOT LIKE '010%';
-- WHERE NOT PHONE LIKE '010%';

 

IS NULL

컬럼값이 NULL이냐

WHERE BONUS IS NULL;

IS NOT NULL

컬럼값이 NULL이 아니냐

  - NOT의 위치는 컬럼명 앞도 가능

WHERE BONUS IS NOT NULL;

 

IN

목록에 일치하는 값이 있으면 TRUE가 되어 값 반환

장점 : 코드가 상당히 짧아진다

SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
-- WHERE DEPT_CODE = 'D6' OR DEPT_CODE = 'D9';
WHERE DEPT_CODE IN ('D6','D9');

 

연결 연산자 : ||

문장으로 연결해서 쓰고 싶을 경우 필요

 

-- EMPLOYEE테이블에서 ' "사원명"의 월급은 "급여"원입니다' 형식으로 조회
SELECT EMP_NAME ||'의 월급은'|| SALARY||'원입니다'
FROM EMPLOYEE;

 

--  ESCAPE 식별자

-- EMPLOYEE테이블에서 김씨 성이 아닌 직원의 사번, 이름, 고용일 조회
SELECT EMP_ID, EMP_NAME, HIRE_DATE
FROM EMPLOYEE
--WHERE EMP_NAME NOT LIKE '김%';
WHERE NOT EMP_NAME LIKE '김%';


--WHERE NOT EMP_NAME LIKE '김%';
-- NOT 순서 : 해당 컬럼명 앞뒤 둘 다 가능

/*
WHERE EMP_NAME != '김%'; 
 = 혹은 != '김%'으로 검색하면 '김%' 데이터자체를 검색
LIKE '김%' 뒤에 어떤게 오든 상관없다
LIKE와 사용하는 % _ 는 와일드카드 적용받는다    
    LIKE는 문자에 대한 패턴 검색하는 것

!= '김%'에서는 이름이 김%인 사람을 찾는 것(리터럴 김% 데이터를 찾는 것)
    여기서 %는 와일드카드로 적용이 되지 않고 그냥 순수 기호 %인 것

*/

-----------실습문제-----------
--1.EMPLOYEE 테이블에서 이름 끝이 '연'으로 끝나는 사원 이름 조회
--2.EMPLOYEE 테이블에서 전화번호 처음 세자리가 010이 아닌 사원의 이름, 전화번호 조회
--3.EMPLOYEE 테이블에서 메일주소 _의 앞이 4자이면서 DEPT_CODE가 D9 또는 D6이고
--  고용일이 90/01/01 ~ 00/12/01이고, 급여가 2700000만 이상인 사원의 전체 정보 조회

SELECT EMP_NAME
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%연';

SELECT EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE NOT LIKE '010%';

SELECT *
FROM EMPLOYEE
WHERE EMAIL LIKE '____!_%' ESCAPE '!'
        AND (DEPT_CODE = 'D9' OR DEPT_CODE = 'D6')
        -- AND (HIRE_DATE >= '90/01/01' AND HIRE_DATE <= '00/12/01')
        AND HIRE_DATE BETWEEN '90/01/01' AND '00/12/01'
        AND SALARY >= 2700000;

------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------

-- IS NULL
-- IS NOT NULL
-- 컬럼값이 NULL이냐
-- 컬럼값이 NULL이 아니냐

--EMPLOYEE 테이블에서 보너스를 받지 않는 사원의 사번, 이름, 급여, 보너스 조회
SELECT EMP_ID, EMP_NAME,SALARY,BONUS
FROM EMPLOYEE
WHERE BONUS IS NULL;


--WHERE BONUS = NULL; 값 안나옴
--WHERE BONUS = (null); 값 안나옴

--EMPLOYEE 테이블에서 보너스를 받는 사원의 사번, 이름, 급여, 보너스 조회
SELECT EMP_ID, EMP_NAME,SALARY,BONUS
FROM EMPLOYEE
WHERE BONUS IS NOT NULL;
WHERE NOT BONUS IS NULL;


-- WHERE NOT BONUS IS NULL; 
-- NOT은 컬렴명 앞에 붙어도 가능

--WHERE BONUS NOT LIKE '%(null)%';


-- EMPLOYEE 테이블에서 관리자도 없고 부서 배치도 받지 않은 직원의 이름, 관리자, 부서코드 조회
-- EMPLOYEE 테이블에서 부서 배치를 받지 않았지만 보너스를 지급받는 직원의 이름,  보너스, 부서코드 조회
SELECT EMP_NAME, MANAGER_ID, DEPT_CODE
FROM EMPLOYEE
WHERE MANAGER_ID IS NULL AND DEPT_CODE IS NULL;


SELECT EMP_NAME, BONUS, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE IS NULL AND BONUS IS NOT NULL;

------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------

--IN
-- 목록에 일치하는 값이 있으면 TRUE가 되어 값 반환
-- 목록에 일치하는 값이 있으면 TRUE를 반환


-- D6부서와 D9부서원들의 이름, 부서코드, 급여 조회
-- 직급코드가 J1, J2, J3, J4인 사람들의 이름, 직급코드, 급여 조회
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE = 'D6' OR DEPT_CODE = 'D9';

SELECT EMP_NAME, JOB_CODE, SALARY
FROM EMPLOYEE
--WHERE JOB_CODE = 'J1' OR JOB_CODE = 'J2' OR JOB_CODE = 'J3' OR JOB_CODE =  'J4';
WHERE JOB_CODE IN ('J1','J2','J3','J4');

------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------


-- 연결 연산자 ||
-- 자바에서의 or논리연산자의 기호가 SQL에서는 연결연산자
-- EMPLOYEE테이블에서 사번, 이름, 급여를 연결해서 조회 (EX. 200선동일8000000)

SELECT EMP_ID || EMP_NAME || SALARY
FROM EMPLOYEE;
SELECT EMP_ID || EMP_NAME || SALARY 전체결과
FROM EMPLOYEE;

-- EMPLOYEE테이블에서 ' "사원명"의 월급은 "급여"원입니다' 형식으로 조회
SELECT EMP_NAME ||'의 월급은'|| SALARY||'원입니다'
FROM EMPLOYEE;

 

 

 

 

 

728x90
반응형

+ Recent posts