WHERE
비교하려는 값이 특정한 패턴을 만족시키면 조회하는 연산자.
WHERE 컬럼명 LIKE '패턴'
LIKE (1)
LIKE 패턴(와일드카드) : ' % ' (포함) , ' - ' (글자 수)
- 'A%' : 문자열이 A로 시작하는 모든 컬럼 값.
- '%A' : 문자열이 A로 끝나는 모든 컬럼 값.
- '%A%' : 문자열에 A가 포함되어 있는 모든 컬럼 값.
ex)
-- EMPLOYEE 테이블에서 성이 '전'씨인 사원의 사번, 이름 조화
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE
WHERE EMP_NAME LIKE '전%';
LIKE (2)
- ' A_' : A 뒤에 아무거나 한 글자.
- '___A' : A 앞에 아무거나 세 글자 (4글자 문자열이면서 A로 끝나야 함).
ex)
-- EMPLOYEE 테이블에서
-- 이메일에 _앞글자가 세글자인 사원의 사번, 이름 , 이메일 조회
SELECT EMP_ID, EMP_NAME PHONE, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___$_%' ESCAPE '$';
-- $ ESCAPE OPTION을 이용하여 일반 문자로 처리할 '_', '%' 앞에 아무 특수문자나 붙임
-- 뒤 한 글자만 일반 문자 취급하게 된다.
연산자 우선순위
- 산술연산자
- 연결연산자
- 비교연산자
- IS NULL / IS NOT NULL, LIKE, IN / NOT IN
- BETWEEN AND / NOT BETWEEN AND
- NOT(논리연산자)
- AND(논리연산자)
- OR(논리연산자)
IN
비교하려는 값과 목록에 작성된 값 중 일치하는 것이 있으면 조회하는 연산자
OR 연산을 연달아 작성한 효과
칼럼명 IN (값1, 값2, 값3 ...)
ex)
-- 사번이 200, 205, 210인 사원의 사번, 이름 조회
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE
WHERE EMP_ID IN (200, 205, 210);
| 연산자
여러 값을 하나의 컬럼 값으로 연결하는 연산자
자바의 문자열 + (이어쓰기) 효과
ex)
SELECT EMP_NAME || '의 급여는 ' || SALARY || '원 입니다' AS 결과
FROM EMPLOYEE;
NULL 처리 연산자
DB에서 NULL : 컬럼 값이 없다
(JAVA에서 NULL : 참조하는 객체 주소가 없다)
- IS NULL : 컬럼 값이 NULL인 경우 조회.
- IS NOT NULL : 컬럼 값이 NULL이 아닌 경우 조회.
ex)
-- EMPLOYEE 테이블에서 전화번호가 없는 사원의 사번, 이름, 전화번호 조회
SELECT EMP_ID, EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE IS NULL;
ORDER BY
SELECT 문의 조회 결과(RESULT SET)을 정렬할 때 작성하는 구문
☆ SELECT문 가장 마지막에 해석됨. ☆
작성법
-- 3 : SELECT 컬럼명 AS 별칭, 컬럼명, 컬럼명 ...
-- 1 : FROM 테이블명
-- 2 : WHERE 조건식
-- 4 : ORDER BY 컬럼명 |(또는) 별칭 | 컬럼순서 [정렬 방식(오름/내림)] [NULL SIRST | LAST]
-- 하나의 셀렉트문에서 가장 마지막에 해석이 된다.
- 오름차순 ASC (ascending)
-- EMPLOYEE 테이블에서 급여 오름차순으로 이름, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
ORDER BY SALARY ASC;
- 내림차순 DCS (descending)
-- EMPLOYEE 테이블에서 급여 내림차순으로 이름, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
ORDER BY SALARY DSC;
☆ 정렬은 숫자, 문자, 날짜 모두 사용 가능하다 ☆
SELECT EMP_NAME
FROM EMPLOYEE
ORDER BY EMP_NAME;
SELECT EMP_NAME, HIRE_DATE
FROM EMPLOYEE
ORDER BY 2 DESC;
두번째 칼럼(HIRE_DATE)를 내림차순으로 정렬한다.
정렬 중첩
큰 분류를 먼저 정렬하고 내부에 작은 분류를 정렬
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
ORDER BY DEPT_CODE, SALARY DESC;
- EMPLOYEE 테이블에서 부서코드 오름차순 정렬 후
- 부서별 급여 내림차순 정렬
'Programming language > SQL' 카테고리의 다른 글
SQL - 06 DML (0) | 2022.04.09 |
---|---|
SQL - 05 JOIN (0) | 2022.04.09 |
SQL - 04 GROUP BY & SET OPERATION (0) | 2022.04.09 |
SQL - 03 함수 (0) | 2022.04.09 |
SQL - 01 SELECT(1) (0) | 2022.04.09 |