공부했던 자료 정리하는 용도입니다.
재배포, 수정하지 마세요.
예제는 Oracle Database에서 기본으로 제공되는 SCOTT계정 데이터로 진행됩니다.
데이터를 조회하는 3가지 방법
- 셀렉션(selection) : 행 단위로 원하는 데이터를 조회하는 방식
- 프로젝션(projection) : 열 단위로 원하는 데이터를 조회하는 방식
- 셀렉션과 프로젝션을 함께 사용하는 방법
+ 조인 : 두 개 이상의 테이블을 양 옆에 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회하는 방식
SELECT절과 FROM절
SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름];
- SELECT : 조회할 열을 지정하는 절 (*을 쓰면 전체 열 지정)
- FROM : 조회할 테이블을 지정
중복 데이터 삭제 (DISTINCT)
SELECT DISTINCT DEPTNO
FROM EMP;
SELECT 절에 DISTINCT 를 사용하면 SQL의 출력 결과로 SELECT 절에 명시한 열의 중복을 제거한다.
( SELECT 절의 열이 여러 개인 경우 선택된 열의 값들이 모두 일치하는 데이터만 중복 제거된다.)
JOB 이름이 MANAGER 인 데이터들은 JOB 이름은 중복되지만, DEPTNO 까지 중복되지 않아서 제거되지 않은 것을 확인할 수 있다.
중복 없이 모두 출력(ALL)
SELECT ALL JOB, DEPTNO
FROM EMP;
ALL 은 DISTINCT 와 반대로 데이터의 중복을 제거하지 않고 그대로 출력한다.
SELECT 절에서 중복 설정이 없을 경우 DEFAULT 값으로 사용된다.
Alias(별칭)
열 이름 대신 붙이는 이름을 의미한다. 보통 수식 때문에 열의 이름이 길어질 때 사용하지만 보안이나 데이터 노출 문제 때문에도 Alias를 사용한다.(현재 데이터가 나오기까지의 진행 과정을 숨기는 용도 ex) 별칭을 사용하지 않으면 계산식이 열 이름에 노출되어 버린다.)
별칭을 붙이는 방법은 아래의 표와 같이 4가지지만 다른 프로그래밍 언어와 구별하기 위해서 세 번째 방식을 많이 사용한다.
사용방법 | 설 명 |
SAL*12+COMM ANNSAL | 연산 및 가공된 문장 이후 한 칸 띄우고 별칭지정 |
SAL*12+COMM "ANNSAL" | 연산 및 가공된 문장 이후 한 칸 띄우고 별칭을 ""로 묶어 지정 |
SAL*12+COMM AS ANNSAL | 연산 및 가공된 문장 이후 한 칸 띄운 후 'AS', 한 칸 뒤에 별칭 지정 |
SAL*12+COMM AS "ANNSAL" | 연산 및 가공된 문장 이후 한 칸 띄운 후 'AS', 한 칸 뒤에 별칭을 ""로 묶어 지정 |
출력 데이터 정렬(ORDER BY)
SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름]
.
.
.
ORDER BY [정렬하려는 열 이름(여러 열 지정 가능)] [정렬 옵션];
데이터를 정렬해서 출력할 때 ORDER BY 절을 사용한다. SELECT 문을 작성할 때 사용할 수 있는 여러 절 중 가장 마지막 부분에 쓴다. ORDER BY 절은 정렬하기 위해 많은 자원을 소모하기 때문에 꼭 필요한 경우가 아니라면 가급적 사용하지 않는 것이 좋다. ( ORDER BY 절은 SELECT 문을 통해 조회할 데이터를 모두 확정한 상태에서 ORDER BY 절의 명시된 기준에 따라 정렬한다. 데이터의 양 또는 정렬 방식에 따라 출력 데이터를 선정하는 시간보다 정렬하는 데 시간이 더 걸리는 경우도 있다.)
■ 정렬 옵션
- ASC : 오름차순(decending)
- DESC : 내림차순(aascending)
■ 올림차순과 내림차순 동시에 사용하기
SELECT *
FROM EMP
ORDER BY DEPTNO ASC. SAL DESC;
위의 코드처럼 사용하면 부서 번호( DEPTNO )를 오름차순으로 정렬하고, 부서 번호가 같은 사원일 경우 급여( SAL )를 기준으로 내림차순으로 정렬한다.
'Back end > Database' 카테고리의 다른 글
[Oracle] 숫자 함수, 날짜 함수, 형변환 함수, NULL처리 함수, DECODE와 CASE (0) | 2019.09.03 |
---|---|
[Oracle] 함수의 종류와 문자함수 (0) | 2019.09.02 |
[Oracle] WHERE절과 연산자 (0) | 2019.08.28 |
[Oracle] 관계형 데이터베이스와 오라클 데이터베이스 (0) | 2019.08.05 |
[Oracle] Database, DBMS (0) | 2019.08.02 |