728x90
- 주의
- NULL 값은 특별한 취급이 필요하며, 일반적인 비교 연산자(=, !=, >, < 등)를 사용하여 NULL 값을 비교할 수 없다.
- 일반적인 비교 연산자 : = , !=, < , > 등등
- null 값 비교 연산자: IS NULL, IS NOT NULL
where title != null; -- 에러
where title is not null; -- 정상 작동
1. where
- where 에 들어가는 것
- 형식
- 값
- 연산자
- subquery - subqueary 블로그에서 설명
- where : 해당 조건일 때만 적용되는 문법
SELECT * FROM STUDENT.S_EMP
WHERE START_DATE < '16/12/31' -- 자동형변환. 별로 좋은 방식 아님
ORDER BY START_DATE ASC -- order By 해도되고 안해도 되고
;
SELECT * FROM STUDENT.S_EMP
WHERE START_DATE < TO_DATE ('16/12/31', 'yy/mm/dd') -- 자동형변환 방지 위한 To_DATE()로 수동 형변환
ORDER BY START_DATE
;
2. 연산자
- 연산자 종류
- 논리 비교 연산자 : !=, =, <> , ^=
- SQL 비교 연산자 : between ~ AND ~ , in, like, IS NULL + Not 붙인 것
- 논리 연산자 : AND, OR, NOT
2.1. 논리 비교 연산자
- a<>b : a와 b의 값이 달라야 true
SELECT NAME, SALARY
FROM STUDENT.S_EMP
WHERE SALARY >= 1000 -- 논리비교연산자
ORDER BY SALARY
;
2.2. SQL 비교 연산자
- SQL 비교 연산자
- 와일드 카드
- % : 0 ~ N 개
- 개수 상관 없이 다 적용 가능
- ex) %1, %1% 1%
- _ : only 1개
- 무조건 1개만, 2자리까지 넘기고 싶으면 _ 여러개 사용하기
- ex) _1 1_ _1_ __1 1__
- % : 0 ~ N 개
- 와일드 카드
- 주의
- DML : update, delete 의 where은 field명 = null이 가능
- SELECT: field명 = null 사용 X, isNull은 사용 가능
SELECT NAME, SALARY
FROM STUDENT.S_EMP
WHERE SALARY BETWEEN 1000 AND 1300-- sql비교 연산
ORDER BY SALARY
;
SELECT NAME, SALARY , DEPT_ID
FROM STUDENT.S_EMP
WHERE DEPT_ID IN (110, 113)-- sql비교 연산, in = or 의미
ORDER BY SALARY
;
SELECT NAME, SALARY , DEPT_ID
FROM STUDENT.S_EMP
WHERE NAME LIKE '김%'
-- sql비교 연산, like = 문자열 패턴 읽음 - 와일드 연산자 사용, % _
ORDER BY SALARY
;
-- %, _ 사용 예시
SELECT *
FROM S_EMP se
WHERE dept_id like '_0_'
;
SELECT *
FROM S_EMP se
WHERE dept_id like '_1_'
;
SELECT *
FROM S_EMP se
WHERE dept_id like '_1'
;
SELECT *
FROM S_EMP se
WHERE dept_id like '1___'
;
SELECT *
FROM S_EMP se
WHERE dept_id like '1%'
;
2.3. 비교 연산자
- 우선 순위
- 논리, sql 비교연산자
- and
- or
SELECT NAME, SALARY , DEPT_ID
FROM STUDENT.S_EMP
WHERE (DEPT_ID=110 OR DEPT_ID=113)
AND SALARY >= 2000
;