[정리노트] SQLD 2024년 개정판 - SELECT(FROM 포함)
SELECT
- SELECT문장을 사용하여 불러올 컬럼명, 연산 결과를 작성하는 절
- * 를 사용하여 테이블 내 전체 컬럼명을 불러올 수 있음
- 원하는 컬럼을 , 로 나열하여 작성 가능 (순서대로 출력)
- 표현식이란 원래의 컬럼명을 제외한 모든 표현 가능한 대상 (연산식, 기존 컬럼의 함수 변형식 포함)
- 명령어 형식:
- SELECT 컬럼명 FROM 테이블명;
- SELECT DISTINCT 컬럼명 FROM 테이블명;
※ DISTINCT (중복제거) - SELECT * FROM 테이블명;
- SELECT 컬럼명 FROM 테이블명;
구조
- SELECT 문읜 다음과 같이 6개 절로 구성
- 각 절의 순서대로 작성해야함 (GROUPBY와 HAVING은 서로 바꿀 수 있지만 보통 사용하지 않음)
- SELECT 문의 내부 파싱(문법적 해석 순서는 나열된 순서와는 다름
- 실행 우선순위
- FROM > Group by > Having > Select > Order by
SELECT * | 컬럼명 | 표현식 <-- '|' = or 의미
FROM 테이블명 또는 뷰명
WHERE 조회 조건
GROUP BY 그룹핑 컬럼명 <-- ex) 성별, B부서 평균 연봉
HAVING 그룹핑 필터링 조건 <-- ex) B부서 평균 연봉 2000만원 이상
ORDER BY 정렬컬럼
ALIAS (별칭)
- 컬럼명 대신 출력할 임시 이름 지정(SELECT 절에서만 정의 가능, 원본 컬럼명은 변경되지 않음)
- SELECT 문보다 늦게 수행되는 ORDER BY 절에서만 컬럼 별칭 사용 가능 (그 외 절에서 사용시 에러 발생)
- 컬럼명 뒤에 AS와 함께 컬럼 별칭 전달 (AS는 생략 가능)
- 이미 존재하는 예약어는 별칭으로 사용 불가
- avg, count, decode, SELECT, FROM 등 (함수나 문장)
- 예시
SELECT NAME AS 이름,
EMPNO 사번,
SAL * 1.1 AS NEW_SAL
FROM EMP;
- AS 사용 시 반드시 쌍따옴표 필요한 경우
- 별칭에 공백을 포함하는 경우
- 별칭에 특수문자를 포함하는 경우 (“_”제외)
- 별칭 그대로 전달할 경우 (입력한 대소를 그대로 출력하고자 할 때)
SELECT 연산자의 활용
- 산술 연산자: 수학의 사칙연산, NUMBER / DATE 등의 데이터에 사용
- 괄호 ( ): 가장 먼저 처리해야 할 것 가정
- *, /, +, -: 사칙연산
- %: 나머지 연산 (SQL Server)
SELECT 1+1, 10/2
FROM DUAL;
SELECT C1+C2 AS A, C1-C2 AS B FROM sample_t;
- 문자 연결 연산자: 여러개의 문자열을 하나의 문자열로 합성
- ||(오라클), + (SQL 서버)
SELECT 'H' || 'I' AS HI
FROM DUAL;
SELECT NAME || '선수, HIGHT || 'cm'
FROM member_t;
- 참조
- 문자열 합성 연산자: ‘+’, CONCAT, ‘||’ (오라클)
- DUAL: 오라클이 제공하는 기본 더 테이블, 연산 수행위해 사용
FROM
- 데이터를 불러올 테이블명 또는 뷰(View)명 전달
※ 뷰(View): 테이블과 동일하게 데이터를 조회할 수 있는 객체지만 테이블처럼 실제 데이터가 저장된 것이 아닌, SELECT문 결과에 이름을 붙여 그 이름만으로 조회가 가능하도록 한 기능 - 테이블 여러 개 전달 가능 (컴마로 구분) > 조인 조건 없이 테이블명만 나열 시 카티시안 곱 발생 주의!
- 테이블 별칭 선언 가능 (ORACLE은 AS 사용 불가, SQL Server는 사용/생략 가능)
※ 테이블 별칭 선언 시 컬럼 구분자는 테이블 별칭으로만 전달 (테이블명으로 사용 시 에러 발생) - ORACLE에서는 FROM 절 생략 불가 (의미상 필요 없는 경우 DUAL 테이블 선언), ORACLE 23c 버전부터 생략 가능
- SQL Server에서는 FROM 절 필요 없을 경우 생략 가능 (오늘 날짜 조회 시)
- ex) Oracle에서의 FROM 절 생략 시 에러 발생 케이스 (DUAL 테이블 사용)
SELECT 24 * 123
잘못된 사용 예시
- 테이블 별칭 사용 예제
SELECT E.ENAME, EMP.SAL, E.DEPTNO <-- EMP.SAL 여기는 부적합한 식별자 E.SAL로 써야함
FROM EMP E
WHERE E.DEPTNO = 10;
반응형
'스터디 > SQL' 카테고리의 다른 글
[정리노트] SQLD 2024년 개정판, WHERE (55) | 2024.08.20 |
---|---|
[정리노트] SQLD 2024년 개정판 - 함수 (49) | 2024.08.20 |
[정리노트] SQLD 2024년 개정판 - 관계형 데이터베이스 개요 (41) | 2024.08.19 |
[기출문제] 1과목 - 데이터 모델링의 이해 (2024 개정판, 해설 포함) (3) | 2024.08.19 |
[정리노트] SQLD 2024년 개정판 - 본질 식별자 vs 인조 식별자 (39) | 2024.08.19 |