Published 2022. 11. 15. 16:50

1. LIKE

: 비교하고자 하는 컬럼값이 내가 제시한 특정 패턴에 만족되 경우 조회

[표현법]
비교대상컬럼 LIKE  '특정패턴'

- 특정패턴 제시시 '%' , '_' 를 사용할 수 있음 (와일드카드)
   >> '%' : 0글자 이상 
   EX) 비교대상컬럼 LIKE '문자%'  => 비교대상의 컬럼값이 해당 문자로 "시작"될 경우 조회 
       비교대상컬럼 LIKE '%문자'     => 비교대상의 컬럼값이 해당 문자로 "끝"날 경우 조회 
    ✔ 비교대상컬럼 LIKE '%문자%' => 비교대상의 컬럼값에 해당 문자가 "포함"되어있을 경우 조회 (키워드검색) 
       +
       
   >>'_' : 1글자 
   EX) 비교대상컬럼 LIKE '_문자'  => 비교대상의 컬럼값이 어떠한 "한 글자" 뒤에 해당 문자가 올 경우 조회 
         비교대상컬럼 LIKE '__문자' => 비교대상의 컬럼값이 어떠한 "두 글자" 뒤에 해당 문자가 올 경우 조회 

예시1) 이름중에 '하'가 포함되어있는 사원들의 사원명, 주민번호, 전화번호 조회

SELECT EMP_NAME,EMP_NO,PHONE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%하%';

예시2) 이메일 중 '_' 앞글자가 3글자인(이메일의 4번째 자리가 _인) 사원들의 사번, 사원명,이메일 조회
             ESCAPE OPTION 사용 

SELECT EMP_ID,EMP_NAME,EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___$_%'ESCAPE '$'; 
--> 데이터값을 취급하고자하는 값 앞에 나만의 와일드카드를 제시하고, ESCAPE OPTION으로 나만의 와일드카드로 등록

예시3) 전화번호 처음 3자리가 010이 아닌 사원들의 사원명, 전화번호 조회

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

 

2. IS NULL / IS NOT NULL

컬럼값에 NULL이 있을 경우 NULL값 비교할때 사용되는 연산자 

예시1)보너스를 받지 않는 사원(BONUS값이 NULL)들의 사번, 이름, 급여, 보너스 조회

SELECT EMP_ID,EMP_NAME,SALARY,BONUS
FROM EMPLOYEE
WHERE BONUS IS NULL; -- '='으로 비교시 정상조회 안됨

예시2) 부서배치가 아직 안됐고 보너스는 받는 사원들의 이름, 보너스, 부서코드 조회

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

 

3. IN

비교대상 컬럼의 값이 내가 제시한 목록중에 일치하는 값이 있는지 비교할때 사용 

[표현법] 
비교대상 컬럼 IN ('값1', '값2', '값3',..)

예시1) 부서코드가 D6이거나 D8이거나 D5인 부서원들의 이름 , 부서코드, 급여 조회

SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
--WHERE DEPT_CODE = 'D6' OR DEPT_CODE = 'D8' OR DEPT_CODE = 'D5';
WHERE DEPT_CODE IN ('D6','D8','D5'); --12명 조회

 

4.  연산자 우선 순위

  0. ()
  1. 산술연산자
  2. 연결연산자 ||
  3. 비교연산자
  4. IS NULL/ LIKE '특정패턴' / IN
  5. BETWEEN AND 
  6. NOT(논리연산자)
  7. AND(논리연산자)
  8. OR (논리연산자

예시 )직급코드가 J7 이거나 J2인 사원들 중에 급여가 200만원 이상인 사원들의 모든 컬럼 조회

SELECT *
FROM EMPLOYEE
-- WHERE  JOB_CODE = 'J7' OR JOB_CODE = 'J2' AND SALARY >= 2000000 ; 
-- OR연산보다 AND연산이 수행되어 정상조회 안됨 
WHERE (JOB_CODE = 'J7' OR JOB_CODE = 'J2') AND SALARY >= 2000000;

 

5. ORDER BY절

SELECT문 가장 마지막줄에 작성 뿐만아니라 실행 순서 또한 마지막에 실행

[표현법]
   SELECT 조회할 컬럼, 컬럼, 산술연산식 [AS "별칭"],..
   FROM 조회하고자 하는 테이블명
   WHERE 조건식 
   ORDER BY 정렬기준의 컬럼명| 별칭|컬럼순번 [ASC|DESC] [NULLS FIRST | NULLS LAST]

- ASC : 오름차순 정렬 (생략시 기본값)
- DESC : 내림차순 정렬 
   
 - NULLS FIRST : 정렬하고자하는 컬럼값에 NULL이 있을경우 NULL값을 앞에 배치 (생략시 DESC일 경우의 기본값)
 - NULLS LAST : 정렬하고자하는 컬럼값에 NULL이 있을 경우 NULL값을 뒤에 배치 (생략시 ASC일 경우 기본값)

 ** 실행(해석) 되는 순서 **
   1. FROM 절 
   2. WHERE 절
   3. SELECT 절
   4. ORDER BY 절 

SELECT *
FROM EMPLOYEE
--ORDER BY BONUS; --> 오름차순이 기본값 
--ORDER BY BONUS ASC; -- 오름차순일때 NULLS LAST가 기본값 
--ORDER BY BONUS ASC NULLS FIRST;
--ORDER BY BONUS DESC; --> 내림차순일때 NULLS FIRST가 기본값
ORDER BY BONUS DESC, SALARY ASC; -- 여러 조건 제시 가능 (첫번째 기준 컬럼값이 동일할 경우 두번째 기준 컬럼가지고 정렬)

예시) 전사원의 사원명, 연봉 조회 (이때, 연봉별 내림차순정렬)

SELECT EMP_NAME, SALARY*12 "연봉"
FROM EMPLOYEE
--ORDER BY SALARY*12 DESC; --산술연산식 가능
--ORDER BY 연봉 DESC; --별칭사용 가능 
ORDER BY 2 DESC; -- 컬럼순번 사용 가능

 

복사했습니다!