Chapter 3 SELECT문의 기본 형식

Ruinak·2021년 5월 10일
0

Database

목록 보기
3/6
post-thumbnail
  • SQL문을 작성 할때 테이블 이름과 열 이름은 대문자로 쓰기를 권장함
    - 많은 프로그래밍 언어에서는 대·소문자를 구분함
    - SQL문은 대·소문자를 구분하지 않음
    - 따라서 대·소문자가 섞여 있는 프로그래밍 언어와 SQL문을 구분하고 가독성을 높이기 위해 실무에서는 SQL문 전체를 대문자로 사용하는 경우도 흔하게 볼 수 있음

3-1 실습용 테이블 살펴보기

사원 정보가 들어 있는 EMP 테이블

  • EMP는 employee의 약어이며 사원 데이터를 보관 및 관리하는 테이블

예제 3-1 EMP 테이블 구성 살펴보기

  • byte 크기와 문자의 관계
    - 10byte 크기일 경우에 영문은 10글자, 한글은 5글자까지 들어갈 수 있음
    - 즉 영문은 한 글자당 1byte, 한글은 한 글자당 2byte를 차지
    (하지만 지금 제가 사용하는 오라클은 한글 한 글자당 3byte였습니다)
  • 가변형 문자열이란 여러 문자가 모여 있는 문자열을 의미

회사 부서 정보가 들어 있는 DEPT 테이블

  • DEPT는 department의 약어이며 회사를 구성하는 부서 데이터를 관리하는 테이블입니다.

예제 3-2 DEPT 테이블 구성 살펴보기

  • DEPT 테이블의 DEPTNO 열은 EMP 테이블의 외래키로 사용할 수 있음
    - EMP 테이블을 구성하는 DEPTNO 열이 DEPT 테이블의 DEPTNO 열을 참조하여 부서 관련 데이터를 확인할 수 있기 때문

사원들의 급여 정보가 들어 있는 SALGRADE 테이블

  • SALGRADE 테이블은 EMP 테이블에서 관리하는 사원들의 급여와 관련된 테이블

예제 3-3 SALGRADE 테이블 구성 살펴보기

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

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

행 단위로 조회하는 셀렉션

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

예제 3-4 셀렉션 예시

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

  • 프로젝션(projection)은 열 단위로 데이터를 조회하는 방식
  • 테이블 전체 데이터 중 몇몇 세로줄의 데이터만 선택할 때 사용

예제 3-5 프로젝션 예시

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

  • 특정 테이블에서 조회하려는 행과 열을 모두 선별할 때 셀렉션과 프로젝션을 함께 사용할 수 있음
  • 셀렉션과 프로젝션을 함께 사용하면 더욱 상세한 데이터 조회가 가능

예제 3-6 셀렉션과 프로젝션 함께 사용할시 예시

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

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

예제 3-7 두 개의 테이블을 조인을 사용하여 조회하기

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

  • SELECT문은 데이터베이스에 보관되어 있는 데이터를 조회하는데 사용
  • SELECT절과 FROM절을 기본 구성으로 SELECT문을 작성
  • FROM절은 데이터가 저장된 테이블 이름을 명식
  • SELECT절은 FORM절에서 명시한 테이블에서 조회할 열이나 여러 열에 저장된 데이터의 조합 또는 연산식을 지정 가능함
    • SELECT문 기본 형식
      SELECT : [조회할 열1 이름], [열2 이름], ..., [열N 이름]
      FROM : [조회할 테이블 이름];

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

  • 전체 열을 보면 총 12명의 사원 데이터가 저장되어 있는 것을 확인할 수 있음
    • 기본형식 SELECT * FROM [테이블명];

예제 3-8 EMP 테이블 전체 열 조회하기

테이블 부분 열 출력하기

  • 특정 열만을 조회할 때는 쉼표( , ) 로 구분해서 조회가 가능함

예제 3-9 열을 쉼표로 구분하여 출력하기

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

  • SELECT문으로 데이터를 조회한 후 DISTINCT를 사용하여 중복을 제거할 수 있음
  • DISTINCT는 SELECT절에 열 이름을 명시하기 전에 선택적으로 사용 가능함
  • 삭제는 한 줄만, 여러 줄, 전체 삭제 모두 가능

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

  • SELECT절에 명시한 열 중에서 같은 내용이 두개 이상일 경우, 중복 행은 한 개만 남겨두고 그 밖의 행은 모두 제거함

예제 3-10 DISTINCT로 열의 중복 제거하기

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

  • JOB은 같아도 부서번호가 다르므로 같은 JOB이 출력이 됨

예제 3-11 여러개 열을 명시하여 중복 제거하기

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

  • ALL은 DISTINCT와 반대로 데이터 중복을 제거하지 않고 그대로 출력
  • SELECT절에서 중복 설정이 없을 경우에 ALL을 기본으로 사용함

예제 3-12 직책, 부서 번호 출력하기(ALL 사용)

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

  • SELECT문의 결과를 보면 SELECT절에 명시한 열 이름이 결과 화면의 위쪽에 출력되는 것을 확인할 수 있음
  • SQL문에서는 최종 출력되는 열 이름을 임의로 지정할 수 있음
  • 본래 열 이름 대신 붙이는 이름을 별칭(alias)이라고 함
  • 긴 열 이름을 '짧고 간단한 다른 이름'으로 알기 쉽게 출력할 때 별칭을 사용

열과 연산식

  • 열에 열, 숫자, 연산식을 함꼐 사용할 수 있음

예제 3-13 열에 연산식을 사용하여 출력하기

별칭을 지정하는 방식

  • 오라클에서 별칭을 지정하려면 4가지 방식 중 하나를 선택하여 SELECT절에 사용함
  • 별칭은 최종적으로 출력되기를 원하는 열 이름을 직접 지정할 때 주로 사용함
  • 형식 : [열 이름] AS [지정할 열 이름]

예제 3-14 별칭을 사용하여 사원의 연간 총 수입 출력하기

실무에서의 별칭 지정

  • 실무에서는 위에서 사용한 방식을 선호하는 경향이 있음
  • 다른 세 가지 방법은 따로 언급하지 않겠음

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

  • 데이터를 정렬된 상태로 출력하기 위해 ORDER BY절을 사용
  • ORDER BY절은 SELECT문을 작성할 때 사용할 수 있는 여러 절 중 가장 마지막 부분에 사용

기본 형식

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

오름차순 사용하기

  • ORDER BY만 사용하면 낮은 행부터 높은 행으로 오름차순으로 정렬

예제 3-15 EMP 테이블의 모든 열을 급여기준으로 오름차순 정렬하기

내림차순 사용하기

  • 마지막에 DESC를 붙이면 높은 행부터 낮은 행으로 내림차순으로 정렬이 가능

예제 3-16 EMP 테이블의 모든 열을 급여 기준으로 내림차순 정렬하기

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

  • 각각의 열에 정렬 옵션을 지정할 시 우선순위 순으로 정렬이 됨
  • ASC : 오름차순 정렬 옵션

예제 3-17 EMP 테이블의 모든 열을 부서 번호(오름차순)와 급여(내림차순)로 정렬하기

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

  • 흩어져 있는 데이터를 특정 기준에 따라 정렬하는 것은 많은 비용을 소모하기 때문에 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋음
  • 정렬을 사용하지 않으면 결과를 더 빨리 출력할 수 있음
  • SQL문의 효율이 낮아지는 것은 서비스 응답 시간이 느려진다는 것을 뜻함
profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글