CS/SQL

[SQLD] SELECT문

hyunji1109 2025. 2. 20. 00:46

SQL 종류

  • SQL은 그 기능에 따라 다음과 같이 구분함
  • DDL
    • 데이터베이스 구조(테이블, 스키마 등)를 정의하거나 수정하는 데 사용
    • CREATE, ALTER, DROP, TRUNCATE
  • DML
    • 데이터를 삽입, 수정, 삭제, 조회하는 데 사용
    • INSERT, UPDATE, DELETE
  • DCL
    • 데이터베이스에 대한 권한을 부여하거나 취소하는 데 사용
    • GRANT, REVOKE
  • TCL
    • 트랜잭션의 처리 과정을 관리하는 데 사용
    • COMMIT, ROLLBACK, SAVEPOINT
  • DQL
    • 데이터를 조회하는 데 사용한다. DQL 명령어는 보통 하나로 간주
    • SELECT
구분 특징
DDL
(Data Definition Language)
CREATE, ALTER, DROP, TRUNCATE
DML
(Data Manipulation Language)
INSERT, DELETE, UPDATE, MERGE
DCL
(Data Control Language)
GRANT, REVOKE
TCL
(Transaction Control Language)
COMMIT, ROLLBACK
DQL
(Data Query Language)
SELECT

💥 사실 SELECT문은 따로 SQL 종류 중 어디에도 속하지 않아서 SELECT 문을 위한 DQL등장

 

SELECT문 구조

  • SELECT문은 다음과 같이 6개 절로 구성
  • 각 절의 순서대로 작성해야 함
    • GROUPBY 와 HAVING은 서로 바꿀 수 있지만 보통 사용하지 않음
  • SELECT문의 내부 파싱(문법적 해석) 순서는 나열된 순서와는 다름
  • FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY 순서대로 실행함

 

 

SELECT 절

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

 

문법

 

특징

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

 

 

① emp 테이블의 전체 컬럼 조회

 

 

② emp 테이블에서 특정 컬럼 조회

 

 

③ 표현식을 사용하여 원본과 다른 데이터 출력 가능


👉 SAL * 1.1이라는 컬럼은 없지만 기존 컬럼의 값을 사용하여 연산결과를 SELECT 절에서 정의하여 출력할 수 있음.

👉 이런 표현 가능한 모든 수식을 표현식이라고 함 (함수식, 연산식 등)

 

 

컬럼 Alias(별칭)

  • 컬럼명 대신 출력할 임시 이름 지정
  • SELECT 절에서만 정의 가능, 원본 컬럼명을 변경되지 않음
  • 컬럼명 뒤에 AS와 함께 컬럼 별칭 전달(AS는 생략 가능)

 

특징 및 주의사항

  • SELECT문보다 늦게 수행되는 ORDER BY절에서만 컬럼 별칭 사용 가능
    • 그 외 절에서 사용시 에러 발생
  • 한글 사용 가능 (한글 지원 캐릭터셋 설정 시)
  • 이미 존재하는 예약어는 별칭으로 사용 불가
    ex) avg, count, decode, SELECT, FROM 등

 

  • 다음의 경우 별칭에 반드시 쌍따옴표 전달 필요
    1) 별칭에 공백을 포함하는 경우
    2) 별칭에 특수문자를 포함하는 경우("_" 제외)
    3) 별칭 그대로 전달할 경우 (입력한 대소를 그대로 출력하고자 할 때)

 

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

 

 

② 별칭 선언 시 쌍따옴표가 필요한 경우

👉 쌍따옴표 사용하지 않아 에러 발생함

 

👉 별칭에 공백 포함 시 반드시 쌍따옴표와 함께 전달

 

 

FROM 절

  • 테이블을 불러올 테이블명 또는 뷰명 전달
  • 테이블 여러 개 전달 가능(컴마로 구분) -> 조인 조건 없이 테이블명만 나열 시 카타시안 곱 발생 주의!
  • 테이블 별칭 선언 가능(AS 쓰지 않음)
    💥 테이블 별칭 선언 시 컬럼 구분자는 테이블 별칭으로만 전달(테이블명으로 사용 시 에러 발생)
  • ORACLE에서는 FROM절 생략 불가(의미상 필요 없는 경우 DUAL 테이블 선언)
    💥 ORACLE 23c 버전부터는 생략 가능
  • SQL Server에서는 FROM절 필요 없을 경우 생략 가능 (오늘 날짜 조회 시)

 

💥 뷰 : 테이블과 동일하게 데이터를 조회할 수 있는 객체이지만 테이블처럼 실제 데이터가 저장된 것이 아닌, SELECT문 결과에 이름을 붙여 그 이름만으로 조회가 가능하도록 한 기능

 

①ORACLE에서의 FROM절 생략 시 에러 발생 케이스 (DUAL 테이블 사용)

👉 ORACLE에서 FROM절 생략 시 에러 발생

 

👉 의미상 FROM 절이 필요 없는 경우 DAUL 전달

 

 

② 테이블 별칭 사용 예제


👉 잘못된 사용 예


👉 테이블 별칭을 선언한 경우 컬럼참조(동일한 이름의 컬럼을 구분하기 위해 테이블명 또는 별칭을 컬럼명 앞에 전달)는 테이블명으로 사용 불가