들어가기 전에
이 포스팅은 오라클로 배우는 데이터베이스 입문(이지훈 저)을 읽으면서 기억하고자 하는 내용 및 추가적으로 알아본 내용을 담았습니다. 책 전체 내용을 보시고 싶으신 분은 책을 구매하시어 읽어보시길 바랍니다.
SELECT(조회)
SELECT문은 데이터베이스에 저장되어 있는 데이터를 조회할 때 사용됩니다. SELECT문은 출력 데이터를 선정하는 방식에 따라 크게 3가지(셀렉션, 프로젝션, 조인)로 나뉩니다.
먼저 간단하게 이 3가지 방식에 대해 알아보겠습니다.
셀렉션(selection), 프로젝션(projection), 조인(join)
SELECT문의 기본 구조
SELECT [조회하고자 하는 column 이름1], [조회하고자 하는 column 이름2] ...
FROM [조회하고자 하는 table 이름] [조회하고자 하는 table의 별칭(선택)];
구문 | 설명 | 넣을 내용 |
---|---|---|
SELECT | SELECT절은 조회할 열을 지정함 | 조죄할 열 이름 또는 출력할 데이터를 하나 이상 지정할 수 있으며, 전체 열에 대해 출력하고자 할 경우 *(asterisk)를 넣어 전체 열을 지정할 수 있음 |
FROM | FROM절은 조회할 테이블을 지정함 | 조회할 테이블 이름을 넣음 |
- SQL문의 마지막은
;(세미콜론)
이 들어와야 합니다. SELECT 절
에서 테이블 전체의 컬럼을 조회할 경우*(asterisk)
를 사용할 수 있지만, 실무에서는 보통 출력할 열을 하나하나 입력합니다.- 만약, 테이블 구조가 변경되었음을 인지하지 못한 채
*
로 사용하고 있으면 해당 변화에 따른 코드 수정이 어려울 수 있습니다. - 또한,
*
로 사용할 경우 각 컬럼들이 어떤 순서로 출력될지 알 수 없습니다.
- 만약, 테이블 구조가 변경되었음을 인지하지 못한 채
DISTINCT (중복 데이터 제거)
SELECT DISTINCT [조회하고자 하는 column 이름1], [조회하고자 하는 column 이름2] ...
FROM [조회하고자 하는 table 이름];
- SELECT 절에 DISTINCT를 넣으면, 데이터를 조회한 후 중복을 제거합니다.
실제로 DISTINCT를 넣어 조회를 해보면 위와 같은 결과를 확인할 수 있습니다.
- 조회하는 대상(SELECT절의 대상)에 대해 중복을 제거하기 때문에 여러 열에 대해 조회를 할 경우 해당 열들이 모두 중복되어야만 제거됨을 확인할 수 있습니다.
별칭(alias) 설정하기
SELECT문을 실행하면, SELECT절에 명시한 열 이름이 결과의 컬럼명으로 나타남을 확인할 수 있습니다. 이러한 컬럼명은 임의로 지정하여 사용할 수 있으며, 이런 이름을 별칭이라고 합니다. 별칭을 사용하는 이유는, 여러 컬럼들을 이용하여 연산한 값을 조회하고자 할 경우, 결과의 컬럼명이 너무 길거나 어떤 의미인지 알기 어려울 때 주로 사용합니다. 또한, 어떤 연산을 통해 해당 값이 도출되었는지를 숨기고자 할 경우 사용합니다.
아래 예시는, 기존 EMP 테이블
에 존재하는 EMPNO(사원 번호)
, SAL(한달 급여)
, COMM(급여 외 추가 수당)
과 연간 총 수입인 SAL*12+COMM
을 연산한 결과를 반환한 것입니다. 왼쪽 그림에서는 연간 총 수입에 대해 따로 별칭을 지정하지 않아 SAL*12+COMM
으로 뜬 것을 볼 수 있으며, 오른쪽 그림에서는 해당 컬럼에 별칭을 지정하여 별칭으로 뜬 것을 확인할 수 있습니다.
- 참고로, WHERE절은 조건을 걸어주는 것으로
COMM
컬럼의 경우NULL
이 들어가 있는 경우 연간 총 수입 값이NULL
로 뜨고 있어COMM
이NULL
이 아닌 경우에 대해서만 조회하기 위해 조건을 걸어주었습니다. - 별칭을 지정하는 방식은 아래와 같이 4가지 방식이 있습니다.
[별칭을 지정하고자 하는 대상] [별칭]
[별칭을 지정하고자 하는 대상] "[별칭]"
[별칭을 지정하고자 하는 대상] AS [별칭]
- 실무에서 주로 사용하는 방법으로,
AS
를 통해 별칭을 한눈에 보기 위함입니다. - 또한, 큰따옴표(
"
)의 경우, 프로그래밍 언어에서 주로 문자열 데이터의 시작과 끝을 알리는 기호로 사용되어 어떤 용도인지 구분하는 작업이 필요하여 이 방식을 주로 사용합니다.
- 실무에서 주로 사용하는 방법으로,
[별칭을 지정하고자 하는 대상] AS "[별칭]"
ORDER BY (원하는 순서로 출력 데이터 정렬)
ORDER BY 절의 경우, 데이터를 조회할 때에 원하는 정렬 방식으로 출력하기 위해 사용합니다. ORDER BY 절은 SELECT문을 작성할 때 가장 마지막 부분에 작성합니다.
SELECT [조회하고자 하는 column 이름1], [조회하고자 하는 column 이름2] ...
FROM [조회하고자 하는 table 이름]
.
.
.
ORDER BY [정렬하고자 하는 열 이름(여러 열 지정 가능)] [정렬 옵션];
구문 | 설명 | 넣을 내용 |
---|---|---|
ORDER BY | ORDER BY절에 지정한 열은 먼저 지정한 열을 우선으로 정렬함 정렬 옵션을 넣지 않을 경우, 오름차순(ASC) 정렬 | 정렬하고자 하는 열 이름을 하나 이상 지정 정렬 옵션은 오름차순(ASC) 또는 내림차순(DESC) |
- 위 오른쪽 그림의 경우, 첫 번째로 명시된 DEPTNO를 기준으로 오름차순 정렬을 한 뒤, 동일한 DEPTNO 값을 가진 레코드들을 SAL을 기준으로 내림차순 한 것입니다.
- 즉, ORDER BY에 지정한 열은 먼저 지정한 열을 우선으로 정렬합니다.
- ORDER BY 절을 사용한 정렬은 꼭 필요한 경우가 아니라면 사용하지 않는 것이 좋습니다. 특정 기준에 따라 데이터를 정렬하는 것은 많은 자원을 사용하여 서비스 응답 시간이 느려질 수 있습니다.
WHERE (조건절)
SELECT문으로 데이터를 조회할 때에 WHRER절을 이용하면 특정 조건을 기준으로 원하는 레코드들을 출력할 수 있습니다. WHERE절이 존재하면, 조회할 테이블의 각 행에 WHERE절의 조건식을 대입하여 결과가 참일 경우에만 출력합니다.
SELECT [조회하고자 하는 column 이름1], [조회하고자 하는 column 이름2] ...
FROM [조회하고자 하는 table 이름]
WHERE [조회할 행을 선별하기 위한 조건식];
구분 | 설명 | 넣을 내용 |
---|---|---|
WHERE | 조회 시 사용할 조건 | 조건식 |
WHERE절을 사용할 때에는 AND와 OR을 활용해 여러 조건식을 조합해서 사용할 수 있습니다.
참고 자료
- 오라클로 배우는 데이터베이스 입문(이지훈 저)
'DB > Oracle' 카테고리의 다른 글
[Oracle] Oracle Function(오라클 함수) - 문자 함수 (0) | 2022.05.07 |
---|---|
[Oracle] Oracle Database에서 사용되는 연산자 종류 알아보기 (0) | 2022.05.06 |
[Oracle, macOS] Docker를 이용한 Oracle Database 11gR2 XE 설치 및 실행하기(SQLPlus, DataGrip 접속 및 SCOTT 계정 생성) (1) | 2022.05.05 |
[Oracle] 데이터베이스 기본 개념 및 관계형 데이터베이스 알아보기 (0) | 2022.05.05 |
[Oracle, macOS] Docker를 이용한 Oracle Database 18c XE 설치 및 실행하기(SQLPlus) (1) | 2021.08.17 |