관계 연산자 (AND, OR, NOT)
관계 연산자는 WHERE절에서 여러 개의 조건(AND, OR, NOT)을 동시에 이용할 때 사용된다. 복잡한 관계연산은 예상치 못한 결과를 발생시킬 수 있다. 그러므로 두 개 이상의 관계 연산을 이용할 때는 반드시 괄호를 이용해 연산의 우선순위를 SQL 작성자가 직접 결정해야 한다. 우선순위는 NOT > AND > OR 이다.
//20번 부서 사원 중에 급여가 1500이상이고 개발 업무를 담당하는 사원과,
//급여가 3000이상인 사원을 검색한다.
SELECT * FROM emp WHERE (dno=20 AND sal >= 1500 AND job='개발') OR (sal >= 3000);
LIKE 연산자 (WHERE 컬럼 LIKE '비교 문자열')
WHERE절에 사용되는 문자 전용의 비교 연산자. 문자열의 일부만으로 검색하는 경우에 사용된다. 와일드 문자인 '_'(반드시 한개의 문자를 대체)와 '%'(문자열을 대체한다(문자가 없는 경우도 포함))를 사용한다. 'LIKE'를 꼭 써야 한다!!!
'경%' : '경'으로 시작하는 모든 문자열
'%과' : '과'로 끝나는 모든 문자열
'%김%' : '김'이라는 글자가 들어간 모든 문자열
'화_' : '화'로 시작하는 두글자 단어
'__화' : '화'로 끝나는 세글자 단어
'_동_' : '동'이 가운데에 들어가는 세글자 단어
//김씨 성을 가진 사원을 검색
SELECT * FROM emp WHERE ename LIKE '김%';
//이름이 '하늘'인 사원을 검색
SELECT * FROM emp WHERE ename LIKE '%하늘';
//성과 이름이 각각 한 글자인 사원을 검색
SELECT * FROM emp WHERE ename LIKE '__';
WHERE 컬럼 BEWEEN 값1 AND 값2
SQL의 AND연산자와 같은 기능이지만 가독성을 위해 BETWEEN 값1 AND 값2를 사용하는 것이 좋다. 자바에서는 if((값1<=컬럼)&&(컬럼<=값2))와 유사하다고 볼 수 있다.
// 1992년에서 1996년 사이에 입사한 사원을 검색하세요
ALTER SESSION SET nls_date_format = 'YYYY/MM/DD:HH24:MI:SS';
SELECT *
FROM emp
WHERE hdate BETWEEN '1992/01/01:00:00:00' AND '1996/12/31:23:59:59'
ORDER BY hdate;
WHERE 컬럼 IN (값1, 값2...)
일치하는 값이 하나라도 있으면 검색되기 때문에 SQL의 OR연산자, =연산자와 같은 기능이고 가독성이 매우 우수하다. 자바에서는 Switch~case문과 유사하다고 볼 수 있다.
// 개발이나 관리 업무를 담당하는 사원을 검색하세요
SELECT * FROM emp WHERE job IN ('개발', '관리') ORDER BY dno;
'Programming > SQL' 카테고리의 다른 글
[Oracle] 06. 자기참조조인(Self Join), 외부조인(Outer Join), 자연조인(Natural Join) (0) | 2019.04.22 |
---|---|
[Oracle] 05. 잘못된 조인 문장 예(카티션 프로덕트, 테이블 별명 누락) (0) | 2019.04.19 |
[Oracle] 03. 자주 쓰는 자료형(DataType) (0) | 2019.04.18 |
[Oracle] 02. 연결 연산자, 중복제거(DISTINCT), 정렬(ORDER BY) (0) | 2019.04.18 |
[Oracle] 01. DESC, TAB, NVL (0) | 2019.04.17 |