Seojoo21 2022. 2. 18. 14:21

*출처: <비전공자도 기초부터 확실하게! 오라클로 배우는 데이터베이스 입문>, 이지훈, 이지스퍼블리싱 

 

 

4-2. 데이터를 조회하는 3가지 방법 - 셀렉션, 프로젝션, 조인

- 데이터베이스에 보관되어 있는 데이터를 조회하는데 사용하는 SELECT문은 출력 데이터를 선정하는 방식에 따라 크게 세 가지 방식으로 나뉜다. 

 

1) 행 단위로 조회하는 셀렉션 

- 셀렉션(selection)은 행 단위로 원하는 데이터를 조회하는 방식이다. 

- 테이블 전체 데이터 중 몇몇 가로줄의 데이터만 선택할 때 사용한다. 

 

2) 열 단위로 조회하는 프로젝션 

- 프로젝션(projection)은 열 단위로 원하는 데이터를 조회하는 방식이다.

 

3) 셀렉션과 프로젝션 함께 사용하기

- 특정 테이블에서 조회하려는 행과 열을 모두 선별할 때 셀렉션과 프로젝션을 함께 사용할 수 있다.

 

4) 두 개 이상의 테이블을 사용하여 조회하는 조인 

- 조인(join)은 두개 이상의 테이블을 양 옆에 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회하는 방식이다.

 

4-3. SQL의 기본 뼈대, SELECT절과 FROM절 

//기본 형식
SELECT [조회할 열1 이름], [열2 이름], ...., [열N 이름] // 전체 열을 지정할 때는 * 
FROM [조회할 테이블 이름];

-SELECT문은 기본적으로 출력되는 데이터의 정렬 순서를 보장하지 않는다. 하지만 ORDER BY 절을 사용하여 출력 순서를 설정할 수 있다. 

 

4-4. 중복 데이터를 삭제하는 DISTINCT

- SELECT문으로 데이터를 조회한 후 DISTINCT를 사용하여 중복을 제거한다. DISTINCT는 SELECT절에 열 이름을 명시하기 전에 선택적으로 사용할 수 있다.

 

1) DISTINCT로 열 중복 제거하기(열이 한 개인 경우)

SELECT DISTINCT DEPTNO FROM EMP;
// DEPTNO 열에서 중복 행은 한 개만 남겨 두고 그 밖의 행은 모두 제거한다.

 

2) DISTINCT로 열 중복 제거하기(열이 여러 개인 경우)

SELECT DISTINCT JOB, DEPTNO FROM EMP;
//JOB열과 DEPTNO열의 값이 공통으로 중복되는 행을 한 개만 남겨두고 그 밖의 행은 모두 제거

 

3) ALL로 중복되는 열 제거 없이 그대로 출력하기 

- ALL 은 DISTINCT와 반대로 데이터 중복을 제거하지 않고 그대로 출력한다. 

- SELECT절에서 중복 설정이 없을 경우에 ALL을 기본으로 사용한다. 

 

4-5. 한눈에 보기 좋게 별칭 설정하기 

- SQL 문에서는 최종 출력되는 열의 이름을 임의로 지정할 수도 있다. 이렇게 본래 열 이름대신 붙이는 이름을 별칭(alias)이라고 한다. 

 

1) 열과 연산식

- 연산식을 새로운 열의 이름으로 주어 연산의 결과를 새로운 열에 넣어 가져올 수도 있다. 

SELECT ENAME, SAL, SAL*12+COMM, COMM FROM EMP;
// SAL*12+COMM: 연산식

2) 별칭을 지정하는 방식

- 긴 열 이름을 짧고 간단한 다른 이름으로 알기 쉽게 출력할 때 별칭을 사용한다.

- 단순히 긴 열 이름의 불편함 외에도 보안이나 데이터 노출 문제 때문에 별칭을 사용해야 할 때도 더러 있다. 

- 위에서 실습한 SAL*12+COMM 열의 별칭을 annual salary의 약어인 ANNSAL로 하여 별칭을 지정하는 4가지 방식은 아래와 같다.

* 실무에서는 굵게 표시한 세번째 형식을 제일 많이 사용한다. 

사용 방법 설명
SAL*12+COMM ANNSAL 연산 및 가공된 문장 이후 한 칸 띄우고 별칭 지정 
SAL*12+COMM "ANNSAL" 연산 및 가공된 문장 이후 한 칸 띄우고 별칭을 큰따옴표(" ")로 묶어 지정
SAL*12+COMM AS ANNSAL 연산 및 가공된 문장 이후 한 칸 띄우고 'AS', 한 칸 뒤에 별칭 지정
SAL*12+COMM AS "ANNSAL" 연산 및 가공된 문장 이후 한 칸 띄우고 'AS', 한 칸 뒤에 별칭을 큰따옴표(" ")로 묶어 지정 

예)

SELECT ENAME, SAL, SAL*12+COMM AS ANNSAL, COMM FROM EMP;

 

4-6. 원하는 순서로 출력 데이터를 정렬하는 ORDER BY

- 기준에 맞춰 데이터를 정렬해서 출력해야 할 때 ORDER BY절을 사용한다. 

- ORDER BY절은 SELECT문을 작성할 때 사용할 수 있는 여러 절 중 가장 마지막 부분에 쓴다.

- ORDER BY절을 사용할 때 주의사항:

* 데이터를 정렬하는데는 시간이 많이 소요되므로 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다. 

//기본 형식
SELECT [조회할 열1 이름], [열2 이름], ...., [열N 이름] // 전체 열을 지정할 때는 * 
FROM [조회할 테이블 이름];
.
. (그 밖의 절)
.
ORDER BY [정렬하려는 열의 이름(여러 열 지정 가능)] [정렬 옵션];
키워드 필수 요소 선택 요소 설명
ORDER BY 정렬하려는 열 이름을 하나 이상 지정 정렬하는 열마다 오름차순(ASC),내림차순(DESC) 지정 ORDER BY절에서 지정한 열은 먼저 지정한 열을 우선으로 정렬한다. 만약 정렬 옵션을 지정하지 않을 경우 기본값으로 오름차순(ASC)이 설정된다. 

 

1) 오름차순 사용하기

SELECT * FROM EMP ORDER BY SAL; // 정렬옵션을 별도로 지정하지 않으면 기본값으로 오름차순(ASC)이 설정됨

 

2) 내림차순 사용하기 

SELECT * FROM EMP ORDER BY SAL DESC;

 

3) 각각의 열에 내림차순과 오름차순 동시에 사용하기 

SELECT * FROM EMP ORDER BY DEPTNO ASC, SAL DESC;
//부서 번호를 오름차순으로 정렬, 부서 번호가 같을 경우 급여를 기준으로 내림차순