Select (SQL)
SELECT 문은 하나 또는 그 이상의 테이블에서 데이터를 추출하는 SQL의 데이터 조작 언어(DML) 중 하나이다. 이것은 데이터베이스 중 하나 또는 그 이상의 테이블에서 데이터를 추출하기 위한 명령으로 데이터 조작 언어 (DML)에서 가장 많이 사용된다. 프로그래머는 어떤 결과를 갖고 싶은 것인지를 SQL 문장으로 기술할 필요는 있지만, 그 결과를 얻기 위해 어떤 물리적인 작업이 수행되는 지를 지시하지 않아도, 데이터베이스 시스템(쿼리 최적화)이 SQL 문에서 최적의 쿼리 계획(실행 계획)을 작성한다.
덧붙여 "테이블"은 "표" "행"은 "레코드", "열"은 "항목"이라고 부르기도 한다.
구문
SELECT [ALL | DISTINCT] 컬럼명 [,컬럼명...]
FROM 테이블명 [,테이블명...]
[WHERE 조건식]
[GROUP BY 컬럼명 [HAVING 조건식]]
[ORDER BY 컬럼명]
GROUP BY 컬럼명[,컬럼명...]
ORDER BY 컬럼명[,컬럼명...]
SELECT 절
SELECT 문에서 필수 구성 절. 지정 열을 설명하는 것으로, 열을 보여준다. *로 하면 모든 열이 표시된다. 또한 산술 연산자, 그룹 함수를 사용할 수 있다.
유효성 검사
컬럼명 유효성 검사 주된 것으로는
- 열 이름에 사용할 수 있는 문자는 영문자, 숫자 및 $, #, _ (밑줄)이 있다.
- 열 이름의 첫 글자는 영문 알파벳만 가능.
- 문자 상한는 최대 30자까지.
- 기본값은 대문자로 표시된다. 문자 등으로 표시하려면 단일 행 함수를 사용하거나, ""로 둘러 싸는 등의 처리가 필요하다.
- 각종 DBMS의 예약어는 사용할 수 없는 경우가 있다.
컬럼 별칭
- 컬럼명 [AS] 컬럼 별칭 (AS는 생략 가능)
로 컬럼을 다른 이름으로 표시할 수 있다. 단, WHERE 절, GROUP BY 절, HAVING 절은 컬럼 별칭은 없다. 또한 컬럼명 표시시 기본은 영문 대문자이다. 이것을 문자 등으로 표시할 경우 단일행 함수, 문자 함수를 사용하거나 ""로 묶어서 표시를 한다.
ALL / DISCTINCT 지정
- ALL --- 테이블에 동일한 데이터 행이 있는 경우에도 모든 데이터를 반환한다. 지정하지 않으면 ALL이 선택
- DISTINCT (UNIQUE) --- 테이블에 동일한 데이터 행이있는 경우 중복을 제거한 1 개만을 돌려 준다.
그룹함수는 COUNT만 사용 가능
단일행 함수
단일행 조작 함수에서 하나의 행에 대해 하나의 결과를 반환하는 함수. SELECT 절, WHERE 절, ORDER BY 절에서 사용할 수 있으며, 다음과 같은 종류가 있다. 또한 중첩에 제한은 없다.
- 문자 함수(CHARACTER FUNCTION)
- 문자를 조작하는 함수입니다. LOWER, UPPER, INITCAP, CONCAT, SUBSTR, INSTR, LENGTH, TRIM, REPLACE 등이 있다.
- 숫자 함수(NUMBER FUNCTION)
- 숫자를 조작하는 함수입니다. ROUND (반올림), TRUNC (자르기), MOD (나머지)가 있다.
- 날짜 함수(DATE FUNCTION)
- 날짜를 조작하는 함수입니다.
- 데이터 형식 변환 함수.(Data Type)
- 특정 데이터 형식을 특정 데이터 형식으로 변환 할 수 있다. TO_CHAR, TO_NUMBER, TO_DATE가 있다.
그룹 함수
그룹화를 한 행에 대해 하나의 결과를 반환하는 함수. SELECT 절 (단, GROUP BY 절에 지정된 열만) HAVING 절, ORDER BY 절에서 사용할 수 있다. 중첩은 2단계까지 가능하다. 종류로는 AVG (평균), MAX (최대값), MIN (최소값), SUM (합계), COUNT (반환되는 행 수) 등이 있다.
집합 연산
여러 테이블에서 질의 결과를 참조하는 복합문을 처리하기 위한 연산자를 이용한 구문. UNION (합집합), UNION ALL (전체 집합), INTERSECT (교집합), EXCEPT(예외) 또는 MINUS (차집합)이 있지만, DBMS 환경에서 사용할 수 없거나 연산자의 명칭이 다른 것도 있다. 각 연산자의 우선 순위가 아니라 왼쪽에서 오른쪽으로 순서대로 처리된다. 주요 조건으로 다음과 같다.
- 이 행을 일치시킬 필요가 있다.
- 각 SELECT 절에 해당하는 행의 데이터 타입을 일치시킬 필요가 있다 (일부 데이터 형식에서 호환성 있는).
- 데이터 크기는 일치하지 않아도 된다.
- 조건을 만족하면 열 이름은 달라도 상관없다.
- UNION ALL 이외는 정렬되어 반환된다. 기본값은 전문의 제1열이 기준이 된다.