[SQL] SELECT 문 기초 - NULL, alias, ||연산자, ROWNUM(Oracle) 핵심 정리
by 우와한개발자
1. SELECT 문 구조
SELECT [DISTINCT] {* | 컬럼명 [[AS] 별칭], ... }
FROM 테이블명
SELECT [DISTINCT] {* | 컬럼명 [[AS] 별칭], ... }
FROM 테이블명_또는_뷰
JOIN 테이블이름_또는_뷰
ON 조인조건
WHERE 조건
GROUP BY 그룹화할열
HAVING 그룹조건
ORDER BY 정렬할열 [[ASC]|DESC];
- 대괄호는 생략 가능
- SELECT문장은 대소문자 구분 하지 않음
- 모든 SQL구문의 끝에 세미콜롬(;) 사용 필수
⚠️ SELECT 쿼리의 실행 순서
: FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMIT
FROM : 각 테이블 확인 → ON : JOIN 조건 확인 → JOIN : 조인 실행 → WHERE : 지정한 조건이 개별 행에 적용 → GROUP BY : 지정된 열의 공통 값을 기준으로 그룹화 (집계기능이 있는 경우에만 사용) → HAVING : GROUP BY절이 쿼리에 있을 경우 HAVING 절의 제약조건이 그룹화된 행에 적용 → SELECT : 마지막으로 적용 → DISTINCT : 표현된 행에서 중복된 행은 삭제 → ORDER BY : 지정된 데이터를 기준으로 오름차순, 내림차순 지정 → LIMIT : LIMIT에서 벗어나는 행들은 제외되어 출력
2. NULL
- 값이 없음을 의미
- 숫자 0이나 공백과는 다름
3. alias 별칭
- 열(column)에 별칭
- AS 키워드 사용하기도 함.(생략 가능)
- 공백이나 특수문자, 대소문자 구분이 필요한경우 쌍따옴표 (“”) 사용
SELECT emp_name AS 사원명, salary AS 급여
FROM employees;
4. || 연산자 : 리터럴 문자 연결
- 리터럴 문자열은 홑따옴표(‘’) 사용 (숫자는 사용안함.)
- 쌍따옴표 아님
SELECT emp_name || '님의 직무는 ' || job || '입니다.' AS emp_info
FROM employees;
“”
5. DISTINCT : 중복행 제거
- 전체 컬럼 값이 모두 동일한 행만 중복으로 판단하여 제거
SELECT DISTINCT job
FROM employees;
6. ROWID, ROWNUM 의사열
- 테이블에 실제로 저장된 컬럼은 아니지만 조회 시 자동으로 생성되는 컬럼 (Pseudo Column)
- 주로 SELECT 절에서 많이 사용
1) ROWID
- 행의 물리적 저장 위치를 나타내는 고유 값 (예 AAAPr9AAEAAAACXAAA)
- 각 행마다 유일함 (PK처럼 사용 가능)
SELECT ROWID, employee_id
FROM employees;
-- 특정 ROWID 조건 검색
SELECT ROWID, employee_id
FROM employees
WHERE ROWID = 'AAASvEAAHAAAADtAAA';
2) ROWNUM
- 조회 결과에 순서를 부여하는 번호
- 조회되는 순서대로 1부터 증가
SELECT employee_id, ROWNUM
FROM employees;
-- 상위 3개 조회
SELECT *
FROM employees
WHERE ROWNUM <= 3;
⚠️ WHERE 절에서 ROWNUM 사용 시 주의사항
- ROWNUM은 1부터 순차적으로 부여되고 쿼리 실행 순서상 ROWNUM이 부여되기 전에 조건이 먼저 적용되기 때문에 ROWNUM > n 조건은 바로 사용할 수 없음
-- ❌ 원하는 결과 안 나옴 SELECT * FROM employees WHERE ROWNUM > 3;
'데이터베이스 > SQL' 카테고리의 다른 글
| [SQL] 문자함수 - SUBSTR, INSTR, TRIM, REPLACE 등 핵심 정리 (0) | 2026.03.19 |
|---|---|
| [SQL] WHERE 절 기초 - 연산자, LIKE, IS NULL, IN/ANY/NOT, ORDER BY 핵심 정리 (0) | 2026.03.19 |
| [SQL] JOIN이란? 개념과 종류, ON과 USING 차이까지 (0) | 2026.01.14 |
| [SQL] SQL이란? DDL/ DML / DCL / TCL (0) | 2026.01.13 |
| [SQL] SQL 연산자와 함수, 집계함수 (0) | 2026.01.12 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자