공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

예제는 Oracle Database에서 기본으로 제공되는 SCOTT계정 데이터로 진행됩니다.

 

 

 

 

데이터를 조회하는 3가지 방법

  1.  셀렉션(selection)  : 단위로 원하는 데이터를 조회하는 방식
  2.  프로젝션(projection)  : 단위로 원하는 데이터를 조회하는 방식
  3. 셀렉션프로젝션을 함께 사용하는 방법

  +  조인  : 두 개 이상의 테이블을 양 옆에 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회하는 방식

 

 

 

 

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 )를 기준으로 내림차순으로 정렬한다.

 

실행결과

 

 

 

+ Recent posts