본문 바로가기
SQL(Oracle)/Oracle기초정리(오라클로 배우는 데이터베이스 입문)

[Oracle기초정리] 03. SELECT문의 기본 형식

by ssunooo 2024. 7. 28.

 

 

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

 

  • 행단위로 조회하는 셀렉션

    셀렉션(selection)은 행 단위로 원하는 데이터를 조회하는 방식이다.
    전체 데이터중 몇몇 가로줄의 데이터만 선택할 때 사용한다.


  • 열단위로 조회하는 프로젝션

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


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

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


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

    조인(join)은 두 개 이상의 테이블을 양옆에 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회하는 방식이다.
    테이블은 아니지만 테이블과 같이 행과 열로 구성된 다른 '요소'를 활용하거나
    같은 테이블을 여러 번 사용하여 SELECT문의 조인에 활용할 수도 있다.


03-2. SQL의 기본 뼈대, SELECT절과 FROM절

 

SELECT문은 데이터베이스에 보관되어 있는 데이터를 조회하는 데 사용한다.

FROM절은 조회할 데이터가 저장된 테이블 이름을 명시한다.
그리고 SELECT절은 FRM절에 명시한 테이블에서 조회할 열이나

여러 열에 저장된 데이터의 조합 또는 연산식을 지정할 수 있다.

 

SELECT [조회할 열1 이름], [열2 이름], ... , [열N 이름]
FROM [조회할 테이블 이름];


<SELECT와 FROM의 구분>

키워드 필수 요소 선택 요소 설명
SELECT 조회할 열 이름 또는 출력할 데이터를 하나 이상 지정 또는 애스터리스크(*)로 전체 열을 지정 - SELECT절, 조회할 열을 지정함
FROM 조회할 테이블 이름 - FROM절, 조회할 테이블을 지정함

 

 

  • *로 테이블 전체 열 출력하기

    SELECT * FROM [조회할 테이블 이름];

    조회할 테이블의 열을 전체 출력할 수 있다.


  • 테이블 부분 열 출력하기

    SELECT [열1 이름], [열2 이름], ... , [열N 이름] FROM [조회할 테이블 이름];
     
    쉼표로 구분하여 조회할 열을 골라서 출력할 수 있다.

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

 

DISTINCT는 SELECT절에 열 이름을 명시하기 전에 선택적으로 사용해 중복을 제거한다.

 

 

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

    SELECT DISTINCT [열 이름]
    FROM [조회할 테이블 이름];

    DISTINCT를 사용하면 SQL문의 출력 결과로 SELECT절에 명시한 열 중에서 같은 내용이 두 개 이상일 경우,
    중복 행은 한개만 남겨 두고 그 밖의 행은 모두 제거한다.


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

    SELECT DISTINCT [열1 이름], ... , [열N 이름]
    FROM [조회할 테이블 이름];
     
    열1 이름이 중복된다고 해서 제거되지 않고 열N 이름까지 비교해서 다 중복된다면 제거한다.


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

    SELECT ALL [열1 이름], ... , [열N 이름]
    FROM [조회할 테이블 이름];

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


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

 

SQL문에서는 최종 출력되는 열 이름을 임의로 지정할 수도 있다.

이렇게 본래 열 이름 대신 붙이는 이름을 별칭(alias)이라고 한다.

 

 

  • 열과 연산식

    SELECT [열1 이름], [열2 이름], [열2 이름] * 12 + [열3 이름], [열3 이름]
    FROM [조회할 테이블 이름];

    연산식에서 *는 곱하기, +는 더하기를 의미한다.
    [열2 이름]이 월급이고, [열3 이름]이 추가 수당이라면 [열2 이름]*12+[열3이름]은 '연간 총 수입'임을 알 수 있다.


  • 별칭을 지정하는 방식

    <별칭을 지정하는 4가지 방식>
    사용 방법 설명
    [열1]*12+[열3] [별칭] 연산 및 가공된 문장 이후 한 칸 띄우고 별칭 지정
    [열1]*12+[열3] "[별칭]" 연산 및 가공된 문장 이후 한 칸 띄우고 별칭을 큰따옴표(" ")로 묶어 지정
    [열1]*12+[열3] AS [별칭] 연산 및 가공된 문장 이후 한 칸 띄운 후  'AS', 한 칸 뒤에 별칭 지정
    [열1]*12+[열3] AS "[별칭]" 연산 및 가공된 문장 이후 한 칸 띄운 후  'AS', 한 칸 뒤에 별칭을 큰따옴표(" ")로 묶어 지정


  • 실무에서의 별칭 지정

    실무에서는 4가지 방식 중 세 번째 방식을 선호하는 경향이 있다.
    우선 AS가 붙는 형식을 선호하는 이유는 조회해야 할 열이 수백 개일 경우에 어떤 단어가 별칭인지 알아보기 편하기 때문이다.
    그리고, 프로그래머들 습관으로 큰따옴표를 사용하지 않으려 하기 때문이다.

    대부분의 프로그래밍 언어에서 큰따옴표는 문자열 데이터의 시작과 끝을 알리는 기호로 이미 사용되고 있다.
    따라서 코드에서 사용한 큰따옴표가 SQL문에 사용한 건지 아니면 기존 프로그래밍 코드에서 사용한 건지를 구별하는 추가 작업이 필요하기 때문에 작업효율이 떨어지게 된다.


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

 

SELECT문을 사용하여 데이터를 조회할 때 시간이나 이름 순서 또는 어떤 다른 기준으로 데이터를 정렬해서 출력해야

하는 경우가 종종 생긴다.

이때 데이터를 정렬된 상태로 출력하기 위해 ORDER BY절을 사용한다.

 

SELECT [조회할 열1 이름], [열2 이름], ... , [열N 이름]
FROM [조회할 테이블 이름]
...(그 밖의 절)
ORDER BY [정렬하는 열 이름(여러 열 지정 가능)] [정렬 옵션];


ORDER BY절은 작성할 때 사용하는 여러 절 중 가장 마지막 부분에 쓴다.

 

<ORDER BY에 대한 정의>

키워드 필수 요소 선택 요소 설명
ORDER BY 정렬하려는 열 이름을 하나 이상 지정 정렬하는 열마다 오름차순(ASC), 내림차순(DESC) 지정 ORDER BY절에 지정한 열은 먼저 지정한 열을 우선으로 정렬한다.
만약 정렬 옵션을 지정하지 않을 경우 기본값으로 오름차순(ASC)이 설정된다.

 

 

  • 오름차순 사용하기

    SELECT *
    FROM [조회할 테이블 이름]
    ORDER BY [정렬하려는 열 이름];

    ORDER BY절에는 정렬 기준이 되는 열 이름을 하나 이상 지정한다.


  • 내림차순 사용하기

    SELECT *
    FORM [조회할 테이블 이름]
    ORDER BY [정렬하려는 열 이름] DESC;


  • 각각의 열에 내림차순과 올림차순 동시에 사용하기

    SELECT *
    FROM [조회할 테이블 이름]
    ORDER BY [오름차순 정렬할 열 이름] ASC, [내림차순 정렬할 열 이름] DESC

    ORDER BY절에는 우선순위를 고려하여 여러 개의 정렬 기준을 지정할 수 있다.
    위 코드와 같이 오름차순을 정렬하고, 열 이름이 같은 열끼리 내림차순으로 정렬할 수 있다.


  • ORDER BY절을 사용할 때 주의 사항

    ORDER BY절을 사용한 정렬은 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다.
    데이터를 특정 기준에 따라 순서를 맞추는 것은 많은 자원, 비용을 소모하기 때문이다.


2024.07.28