연결연산자(||)
여러 데이터를 하나의 데이터로 합쳐 한번에 보여주고 싶을 때 사용한다. 컬럼과 컬럼을 연결 또는 컬럼과 리터럴(문자, 숫자, 날짜 등)을 연결할 수 있다.
SELECT ename||'의 업무는 '||job||'입니다.' 직원업무 FROM emp;
단, 연결연산자는 사칙연산자보다 우선순위가 높기 때문에 연산 순서를 지정해주지 않으면 'Invalid Number Error'가 발생한다. 아래 예제는 문자열과 숫자열을 더하려고 했기 때문에 에러가 발생한 경우이다.
//에러 발생
SELECT ename||' '||sal+10 FROM emp;
//바른 사용
SELECT ename||' '||(sal+100) FROM emp;
중복제거(DISTINCT)
SELECT [DISTINCT/ALL] 컬럼;
중복제거 DISTINCT를 지정하지 않으면 기본형인 ALL이 생략되어 있다.
SELECT job FROM emp;
SELECT DISTINCT job FROM emp;
정렬(ORDER BY 컬럼 [ASC/DESC])
지정된 컬럼을 대상으로 정렬을 수행한다. ASC(오름차순)/DESC(내림차순)를 지정하지 않으면 ASC가 기본값이다. 컬럼이 여러개인 경우 지정한 특정 컬럼으로 정렬할 수 있다. 또 별명, 수식, 검색항목의 순서로도 정렬할 수 있다!
// 별명으로 정렬한다
SELECT eno 사번, ename 이름, sal*12+NVL(comm,0) 연봉 FROM emp ORDER BY 연봉 DESC;
// 첫번째 컬럼으로 정렬한다
SELECT eno, ename, sal FROM emp ORDER BY 1;
정렬대상인 컬럼이 여러 개인 경우 앞에 지정한 컬럼이 동일한 값에 대해서 뒤에 지정된 컬럼으로 정렬된다. 즉, 앞쪽 컬럼의 정렬이 깨지지 않는 범위 내에서 두 번째 컬럼으로 정렬을 수행한다. 아래 예제는 부서와 급여로 정렬하는 경우에 부서로 먼저 정렬된 후 같은 부서 안에서 급여순으로 정렬되는 것을 확인할 수 있다.
SELECT dno 부서번호, eno 사번, ename 이름, sal 급여
FROM emp ORDER BY 부서번호, 급여 DESC;
'Programming > SQL' 카테고리의 다른 글
[Oracle] 06. 자기참조조인(Self Join), 외부조인(Outer Join), 자연조인(Natural Join) (0) | 2019.04.22 |
---|---|
[Oracle] 05. 잘못된 조인 문장 예(카티션 프로덕트, 테이블 별명 누락) (0) | 2019.04.19 |
[Oracle] 04. 다양한 연산자(AND, OR, NOT, LIKE, BETWEEN, IN) (0) | 2019.04.18 |
[Oracle] 03. 자주 쓰는 자료형(DataType) (0) | 2019.04.18 |
[Oracle] 01. DESC, TAB, NVL (0) | 2019.04.17 |