자격증/SQLD

SQLD(SQL-Developer) (7)

짱뚱짱 2024. 11. 13. 20:35

<SELECT 문>

💙 SQL 종류

- SQL은 그 기능에 따라 다음과 같이 구분함

구분 종류
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 절에서만 정의 가능, 원본 컬럼명은 변경되지 X)

- 컬럼명 뒤에 AS와 함께 컬럼 별칭 전달(AS는 생략 가능)

 

💙 특징 및 주의사항

- SELECT문보다 늦게 수행되는 ORDER BY절에서만 컬럼 별칭 사용 가능(그 외 절에서 사용시 에러 발생)

- 한글 사용 가능(한글 지원 캐릭터셋 설정 시)

- 이미 존재하는 예약어는 별칭으로 사용 불가

  ex) avg, count, decode, SELECT, FROM 등

 

- 다음의 경우 별칭에 반드시 쌍따옴표 전달 필요

  1) 별칭에 공백을 포함하는 경우

  2) 별칭에 특수문자를 포함하는 경우("_" 제외)

  3) 별칭 그대로 전달할 경우(입력한 대소를 그대로 출력하고자 할 때)

 

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

 

 

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

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

 

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

 

💙 FROM절

- 데이터를 불러올 테이블명 또는 뷰명 전달

- 테이블 여러 개 전달 가능(컴마로 구분)  조인 조건 없이 테이블명만 나열 시 카타시안 곱 발생 주의!

- 테이블 별칭 선언 가능(AS 절대 쓰지 않음)

  ※ 테이블 별칭 선언 시 컬럼 구분자는 테이블 별칭으로만 전달(테이블명으로 사용 시 에러 발생)

- ORACLE에서는 FROM절 생략 불가(의미상 필요 없는 경우 DUAL 테이블 선언)

  ※ ORACLE 23c 버전부터는 생략 가능

- MSSQL 에서는 FROM절 필요 없을 경우 생략 가능(오늘 날짜 조회 시)

 

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

 

 

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

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

 

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

 

 

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

잘못된 사용 예

 

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

 

'자격증 > SQLD' 카테고리의 다른 글

SQLD(SQL-Developer) (8)  (0) 2024.11.18
SQLD(SQL-Developer) (6)  (2) 2024.10.28
SQLD(SQL-Developer) (5)  (2) 2024.10.24
SQLD(SQL-Developer) (4)  (5) 2024.10.18
SQLD(SQL-Developer) (3)  (4) 2024.10.09