[홍쌤의 데이터랩, SQLD n과목 완벽 정리] 영상를 개인이 정리하여 [원작자의 허가 이후] 올린 글이며,
[개인이 추가로 정리한 내용]이 포함되어 있습니다.
목차
SQL의 순서
작성 순서
SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY
=> GROUP BY와 HAVING은 바꿀 수 있지만 잘 사용하지 않음
실행 순서
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
별칭 (Alias)
테이블이나 컬럼에 임시적인 이름을 부여하여, 쿼리의 가독성을 높이거나 작업을 단순화하는데 사용
- SELECT절 별칭 선언 시, 실행 순서가 후순위인 ORDER BY절에서만 사용 가능
- 대소문자를 구분하지 않아도 인식
- 예약어 사용 불가
별칭을 쌍따옴표로 감싸야 할 경우
1. 별칭에 공백 포함
2. 별칭에 특수문자 포함 (_ 제외)
3. 별칭의 대소문자를 그대로 출력
DUAL 테이블
- Oracle에서 기본 제공
- 테이블을 생성할 필요 없이, 연산의 결과를 간략하게 표시하기 위한 가상/더미 테이블
- DUMMY라는 이름의 단일 행/열 테이블 반환, 기본 값은 문자 "X"
e.g.
1) 사용 예시 - 연산 결과
SELECT 1+1
FROM DUAL;
2) 사용 예시 - 현재시간
SELECT SYSDATE
FROM DUAL;
SQL 쿼리 구성 요소
1. SELECT절
- 연산 및 집계의 결과, 이를 표현할 컬럼명 등 정의
- 단일행(집계 등)과 복수행 혼재 사용 불가 유의 => GROUP BY 사용
2. FROM절
- 테이블 여러개 전달 가능
- 조인 조건 없이 테이블명 나열 시, 카타시안 곱 발생 주의
- 생략 가능 여부 상이 (SQL Server는 생략 가능, ORACLE은 23c부터/이전 버전은 DUAL 테이블 활용)
3. WHERE절
- NULL 조회 시 IS NULL / IS NOT NULL 연산자 사용 ( '=' 연산자 활용 불가)
- 호환되는 타입끼리 자동 형변환 수행, 그러나 성능 및 안정성 문제로 권장하지 않음
4. GROUP BY절
- 각 행을 특정 조건에 따라 그룹화하는 구문식
- WHERE절에서 비대상 컬럼 미리 제외 (WHERE절 먼저 실행되므로)
- 그룹에 대한 조건은 WHERE절에서 사용 불가 (HAVING 사용)
- 그룹화한 데이터를 그룹화 이전 데이터와 혼재 출력 불가
- 사용 시 SELECT문에 그룹화한 컬럼, 집계 함수 외 컬럼 사용 불가
5. HAVING절
- 그룹 함수 결과를 조건으로 사용할 때 사용하는 구문식
- 집계함수 조건식을 주로 사용 (일반 조건식도 사용 가능하나 WHERE절에서 수행 권장)
- SELECT절 별칭 사용 불가
6. ORDER BY절
- 기본 ASC(오름차순), 이 외 DESC(내림차순)
- 유일하게 SELECT절 별칭 사용 가능
- SELECT절에 선언된 순서대로의 숫자로 표시 가능(컬럼명이나 별칭 없이)
- 정렬 시, ORACLE은 NULL을 마지막에 배치, SQL Server는 처음에 배치
=> 추가로, ORACLE은 ORDER BY절에 NULLS LASH | NULLS FIRST 지정 가능
e.g.
1) 컬럼 명을 숫자로 치환하여 사용
SELECT id, name, salary
FROM employees
ORDER BY 3; -- salary 컬럼을 기준으로 오름차순 정렬
'CS - 강의, 서적 > [SQLD] 홍쌤의 데이터랩' 카테고리의 다른 글
[SQLD] 2-9. 서브 쿼리 (스칼라 서브 쿼리, 인라인 뷰, WHERE절 서브 쿼리 다수) (0) | 2024.09.18 |
---|---|
[SQLD] 2-7~8. 조인 (USING/ON, Oracle/ANSI 표준별 조인) (1) | 2024.09.16 |
[SQLD] 2-1. 관계형 데이터베이스 개요 (데이터 무결성, SQL) (0) | 2024.09.16 |
[SQLD] 1-9. Null 속성의 이해 (0) | 2024.09.16 |
[SQLD] 1-8. 모델이 표현하는 트랜잭션의 이해 (트랜잭션, ACID, 필수적/선택적 관계) (0) | 2024.09.16 |