목차
산술연산자
=
조회하려는 column에 조건을 부여해서 선택적으로 column을 조회(SELECT) 할 수 있는 기능이다.
1 | SELECT * FROM emp WHERE deptno=10; |
위의 쿼리를 입력하면 아래처럼 데이터가 분류되서 출력됨을 알 수 있다.
<>
조건에 반하는 결과만 조회(SELECT) 할 수도 있다.
1 | SELECT * FROM emp WHERE deptno <> 10; |
deptno가 10이 안되는 데이터만 출력됨을 알 수 있다.
NOT
NOT
키워드를 사용하여 작성할 수 있다.
1 | SELECT * FROM emp WHERE NOT deptno = 10 AND NOT deptno=20; |
WHERE
절 조건으로 deptno=10
이 아니거나 deptno=20
이 아닌 조건으로 조회를 해보았다. deptno=30인 데이터만 조회된 것을 확인할 수 있다.
논리조건 <, >, <=, >=
int형 또는 ASCII코드의 순서에 따라 데이터를 조회(SELECT)할 수도 있다.
1 | SELECT empno, ename, job, hiredate, sal |
emp 테이블에서 empno, ename, job, hiredate, sal 컬럼을 조회(SELECT)하면서 sal 컬럼의 데이터가 2000을 초과할 경우를 조건으로 설정하면 아래의 결과처럼 sal의 데이터가 2000이 넘는 데이터만 조회된다.
BETWEEN
범위를 지정하여 조회할 경우에는
between
을 사용하여 조회할 수 있다.1
2
3
4
5
6
7SELECT empno, ename, job, hiredate, sal
FROM emp WHERE sal > 3000 and sal < 4000;
// 위의 쿼리를 BETWEEN 키워드를 사용하여 바꿔보았다.
SELECT empno, ename, job, hiredate, sal
FROM emp WHERE (sal between 3000 and 4000);
IN
조건 중 공통 column일 경우, 사용할 수 있는 sql 키워드
1
2
3
4
5
6
7SELECT empno, ename, job
FROM emp WHERE job = 'salesman' or job = 'analyst';
// 위의 쿼리를 in 키워드를 사용하여 바꿔보았다.
SELECT empno, ename, job
FROM emp WHERE job in ('salesman', 'analyst');
LIKE
문자열에 대한 연산을 할 수 있다.
ename 컬럼 데이터가 A로 시작하는 데이터 조회
1 | SELECT ename, empno FROM emp |
- ename 컬럼 데이터에 A가 포함되는 데이터 조회
1 | SELECT ename, empno FROM emp WHERE ename LIKE '%A%'; |
- ename 컬럼의 데이터의 두번째 알파벳이 A인 데이터조회
- 언더바(_) 갯수만큼 조회하려는 알파벳의 해당 단어에서의 순위를 뒤로 미룰수 있다.
1 | SELECT ename, empno FROM emp WHERE ename LIKE '_A%'; |
- ename의 데이터가 세글자인 데이터 조회
1 | SELECT ename, empno FROM emp WHERE ename LIKE '___'; |
NULL
- NULL은 연산처리할 수 없으므로
is NULL
,is NOT NULL
을 통해 조회(SELECT)할 수 있다. - 보너스(comm)가 없는 직원들의 사원번호, 이름, 임금, 임금과 보너스의 합 조회.
- 상관이 없는 사람, 즉 회사 대표를 조회하는 쿼리
- null을 0으로 환산해서 연산하고 싶을 경우
- Oracle 내부 함수인
nvl
함수를 통해 null에 해당하는 컬럼 데이터를 0으로 바꿔서 조회하고 연산할 수 있다. 실제 테이블 내 데이터를 변경하는게 아닌 조회시에만 변경해서 조회할 뿐이다. - NVL함수
- Oracle Document - nvl
- Oracle 내부 함수인