TIL: 스스로 이해한 것을 바탕으로 정리하였기에 오류가 있을 수 있습니다. 틀린 부분은 댓글로 알려주시면 감사하겠습니다.
WHERE 절
조회하고자 하는 테이블에 특정 조건을 제시하여 만족하는 데이터만 조회하는 구문
[표현법]
SELECT 조회할컬럼, 컬럼, . . .
FROM 테이블명
WHERE 조건식;
조건식에는 다양한 연산자 사용이 가능하다.
WHERE 절에 쓸 수 있는 연산자
* 비교연산자
> < >= <= = != ^= <>
ex. EMPLOYEE라는 테이블로부터 급여가 400만 원 이상인 사원들 조회하기
SELECT EMP_NAME
FROM EMPLOYEE
WHERE SALARY >= 4000000;
ex. 부서코드가 D1이 아닌 사원들 조회하기
SELECT EMP_NAME
FROM EMPLOYEE
WHERE DEPT_CODE != 'D1';
* 논리연산자
여러 개의 조건을 엮을 때 사용
AND ( ~이면서, 그리고)
OR ( ~이거나, 또는)
ex. 부서 코드가 D1이면서 급여가 400만 원 이상인 사원 조회
SELECT EMP_NAME
FROM EMPLOYEE
WHERE DEPT_CODE = 'D1' AND SALARY >= 4000000;
* BETWEEN AND
몇 이상 몇 이하인 범위에 대한 조건을 제시할 때 사용
[표현법]
비교대상컬럼명 BETWEEN 하한값 AND 상한값
[NOT표현법 2가지]
비교대상컬럼명 NOT BETWEEN 하한값 AND 상한값
NOT 비교대상컬럼명 BETWEEN 하한값 AND 상한값
ex. 급여가 350만원 이상이고 600만원 이하인 사원 조회
SELECT EMP_NAME
FROM EMPLOYEE
WHERE SALARY BETWEEN 3500000 AND 6000000;
ex. 입사일이 '90/01/01' ~ '01/01/01'인 사원 조회
SELECT EMP_NAME
FROM EMPLOYEE
WHERE HIRE_DATE BETWEEN '90/01/01' AND '01/01/01';
* LIKE
비교하려는 컬럼값이 내가 지정한 특정 패턴에 만족될 경우 조회
[표현법]
비교대상컬럼명 LIKE '특정패턴'
[NOT표현법 2가지]
NOT 비교대상컬럼명 LIKE '특정패턴'
비교대상컬럼명 NOT LIKE '특정패턴'
특정패턴의 와일드카드인 '%'와 '_' 를 가지고 제시할 수 있다.
% | 0글자 이상 |
_ | 글자수 |
비교대상컬럼 LIKE '문자%' | 컬럼값중에 '문자'로 시작되는 값 조회 |
비교대상컬럼 LIKE '%문자' | 컬럼값중에 '문자'로 끝나는 값 조회 |
비교대상컬럼 LIKE '%문자%' | 컬럼값중에 '문자'가 포함되는 값 조회 |
ex. 이름에 '혜'가 포함된 사원 조회
SELECT EMP_NAME
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%혜%';
ex. 전화번호 4번째 자리가 2로 시작하는 사원 조회
SELECT EMP_NAME
FROM EMPLOYEE
WHERE PHONE LIKE '____2%';
ex. 이름 가운데 글자가 '혜'인 사원 조회
SELECT EMP_NAME
FROM EMPLOYEE
WHERE EMP_NAME LIKE '_혜_';
와일드카드와 문자열을 구분하고 싶을 땐,
나만의 와일드카드를 만들어 ESCAPE로 등록해주기
ex. $을 ESCAPE로 만들기
WHERE EMAIL LIKE '____$_%' ESCAPE '$';
* IS NULL / IS NOT NULL
NULL값은 A = NULL 이 아닌 A IS NULL로 표기해야 한다.
[표현법]
비교대상컬럼 IS NULL : 컬럼값이 NULL일 경우
비교대상컬럼 IS NOT NULL : 컬럼값이 NULL이 아닌 경우
* IN
비교대상컬럼값에 내가 제시한 목록중에 일치하는 값이 있는지
[표현법]
비교대상컬럼 IN (값, 값, 값 . . .)
[NOT표현법]
비교대상컬럼 NOT IN (값, 값, 값 . . .)
ex. 부서 코드가 D1이거나 또는 D2이거나 또는 D3인 사원 조회( WHERE DEPT_CODE = 'D1' OR DEPT_CODE = 'D2' OR DEPT_CODE = 'D3'와 동일)
SELECT EMP_NAME
FROM EMPLOYEE
WHERE DEPT_CODE IN ('D1', 'D2', 'D3');
* 연결 연산자 | |
여러 컬럼값들을 마치 하나의 컬럼인 것처럼 연결시켜주는 연산자
(자바에서 System.out.println(" A : " + A ); 에서 + 역할)
* 연산자 우선순위
0. ()
1. 산술연산자
2.
3. 비교연산자
4. IS NULL LIKE IN
5. BETWEEN AND
6. NOT
7. AND (논리연산자)
8. OR (논리연산자)
'SQL' 카테고리의 다른 글
[Oracle] 함수? 문자열 관련 함수 정리 (0) | 2021.02.13 |
---|---|
[Oracle] ORDER BY절 (0) | 2021.02.13 |
[Oracle] 리터럴과 DISTINCT (0) | 2021.02.13 |
[Oracle] SELECT? 데이터 조회와 컬럼명에 별칭 지정하기 (0) | 2021.02.13 |
[Oracle] DQL, DML, DDL, TCL? (0) | 2021.02.13 |
댓글