본문 바로가기

sqld

2-2) SELECT 문

SQL 종류

  • TRUNCATE는 구조 변경이 아니라 데이터 삭제이지만 바로 커밋되어 롤백이 불가능 ≫ DDL로 구분
  • SELECT 문은 따로 SQL 종류 중 어디에도 속하지 않아서 SELECT 문을 위한 DQL 등장

 

SELECT 문 구조

  • 6개 절로 구성
  • 각 절의 순서대로 작성해야 함
    • GROUP BY와 HAVING은 서로 바꿀 수 있지만 바꾸지 않는 게 좋음
  • 내부 파싱 (문법적 해석) 순서는 나열된 순서와는 다름
    • FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

 

SELECT 절
  • SELECT 문장을 사용하여 불러올 컬럼명, 연산 결과를 작성하는 절
  • *를 사용하여 테이블 내 전체 컬럼명을 불러올 수 있음
  • 원하는 컬럼을 ,로 나열하여 작성 가능 (순서대로 출력)
  • 표현식이란 원래의 컬럼명을 제외한 모든 표현 가능한 대상 (연산식, 기존 컬럼의 함수 변형식 등)

 

** 문법

 

** 특징

  • SELECT 절에서 표시할 대상 컬럼에 ALIAS (별칭) 지정 가능
  • 대소문자를 구분하지 않아도 인식됨

 

예1) EMP 테이블의 전체 컬럼 조회

 

예2) 표현식을 사용한 원본과 다른 데이터 출력

 

 

컬럼 ALIAS
  • 컬럼명 대신 출력할 임시 이름 (원본 컬럼명은 변경되지 X)
  • 컬럼명 AS 별칭 형태 (AS 생략 가능)

 

특징 및 주의사항
  • SELECT 문보다 늦게 수행되는 ORDER BY 절에서만 컬럼 별칭 사용 가능
  • 한글 사용 가능 (한글 지원 캐릭터셋 설정 시)
  • 이미 존재하는 예약어는 별칭으로 사용 불가
    • 예) avg, count, decode, SELECT, FROM 등
  • 다음의 경우 별칭에 반드시 쌍따옴표 전달 필요
    1. 별칭에 공백을 포함
    2. 별칭에 특수문자를 포함 ("_" 제외)
    3. 별칭 그대로 전달 (입력한 대소문자를 그대로 출력하고자 할 때)

 

예1) 별칭 사용 예 (AS 생략 가능)

 

예2) 별칭 선언 시 쌍따옴표 필요한 경우

  • 공백 포함 "NEW SAL"으로 설정하려고 했지만 쌍따옴표 사용하지 않아 에러 발생

 

 

FROM 절
  • 데이터를 불러올 테이블명 또는 뷰명 전달
  • 테이블 여러 개 전달 가능 (컴마로 구분) ≫ 조인 조건 없이 테이블명만 나열 시 카타시안 곱 발생 주의 !
  • 테이블 별칭 선언 가능 (ORACLE은 AS 사용 불가, SQL Server는 사용/생략 가능)
    • 테이블 별칭 선언 시 컬럼 구분자는 테이블 별칭으로만 전달
    • 예) FROM TABLEA a, TABLEB b ≫ WHERE a.col = b.col
    • TABLEA.col 로 사용 시 에러 발생
  • ORACLE에서는 FROM 절 생략 불가
    • 의미 상 필요 없는 경우 DUAL 테이블 (더미데이터) 선언
    • ORACLE 23c 버전부터는 생략 가능
  • SQL Server에서는 FROM 절 필요 없을 경우 생략 가능
    • 예) 오늘 날짜 조회 등
뷰 (View) : 테이블과 동일하게 데이터를 조회할 수 있는 객체이지만 실제 데이터가 저장된 것이 아닌, SELECT 문 결과에 이름을 붙여 그 이름만으로 조회가 가능하도록 한 기능

 

예1) ORACLE에서의 FROM 절 생략 시 에러 발생 케이스

  • 의미 상 FROM 절 필요 없는 경우 DUAL 전달

 

예2) 테이블 별칭 사용 예제

  • 별칭 지정했을 경우 원래 테이블 이름 식별자로 사용 X
  • EMP를 E로 변경해야 함

 

 

 

 

'sqld' 카테고리의 다른 글

2-4) WHERE 절  (0) 2024.08.21
2-3) 함수  (0) 2024.08.21
2-1) 관계형 데이터베이스 개요  (0) 2024.08.19
1-10) 본질식별자 vs 인조식별자  (0) 2024.08.19
1-9) Null 속성의 이해  (0) 2024.08.19