SELECT 문은 SELECT 절과 FROM 절로 구성되어 있다. SELECT 절 다음에 FROM 절을 기술하며,
FROM 절이 수행된 후 SELECT 절이 수행된다.
SELECT 절 -- (2)
FROM 절 -- (1)
SELECT 절 -> 조회할 열이나 표현식을 기술
FROM 절 -> 조회할 테이블을 기술
어휘 단위
SQL의 어휘 단위는 아래와 같이 구분되어 있다. 문은 절, 절은 키워드로 구성 된다.
키워드(keyword) -> 개별적인 SQL 요소 : DISTINCT
절 (clause) -> SQL의 한 부분 : SELECT DISTINCT
문 (statement) -> 2개 이상의 절이 결합된 문장 : SELECT DISTINCT deptno FROM emp;
애스터리스크(asterisk, *)를 기술하면 테이블의 전체 열이 조회된다.
ex) SELECT * FROM dept;
DESC 명령어로 테이블의 열 정보를 확인할 수 있다. 명령어 우측에 테이블 명을 기술하면 된다.
ex) DESC dept;
SELECT *, deptno FROM dept; 쿼리문을 실행할 경우
ORA-00923 : FROM 키워드가 필요한 위치에 없습니다. 라는 에러가 발생한다.
애스터리스크를 열과 함께 사용하려면 애스터리스크를 테이블로 한정해야 한다.
SELECT dept.*, deptno FROM dept;
열은 별칭을 지정할 수 있다. 별칭은 대소문자를 구분하지 않고, 숫자로 시작할 수 없으며, 공백이나 특수문자를
포함할 수 없다. 별칭을 큰 따옴표(")로 감싸면 제약을 회피할 수 있다.
가급적 AS 키워드를 사용하고 큰 따옴표를 사용하지 않는 편이 바람직하다.
ex) SELECT deptno dept_no, dname AS dept_nm, loc AS "Location" FROM dept;
SELECT 절에 DISTINCT 키워드나 UNIQUE 키워드를 기술하면 중복 행이 제거된 결과가 반환 된다.
ALL 키워드를 기술하면 중복 행을 제거 하지 않는다. 기본 값은 ALL 이다.
SAMPLE 절을 사용하면 테이블을 샘플링하여 조회할 수 있다. 대용량 테이블에 대한 통계 값을 생성할때 활용 할
수 있다.
ex) SELECT * FROM dept SAMPLE(30);
비율을 30으로 지정했기 때문에 1행만 반환된다.
널(null)은 값이 없거나 정해지지 않은 것을 의미한다.
오라클 데이터 베이스에서는 널과 빈 문자(")을 동일하게 처리한다.
슈도 컬럼은 테이블에 저장되지 않은 의사 칼럼으로 쿼리 수행 시점에 값이 결정 된다.
ROWID는 데이터베이스에서 행을 식별할 수 있는 고유 값이다. 오브젝트, 파일, 블록, 행 번호의 조합으로 계산된다.
ex) AAAWk8AAJAAAACEAAA 라는 ROWID가 반환되었을 경우
AAAWk8 (자릿수 : 6) -> 데이터 오브젝트 번호(data object number)
AAJ (자릿수 : 3) -> 상대적 파일 번호(relative file number)
AAAACE (자릿수 : 6) -> 블록 번호(block number)
AAA (자릿수 : 3) -> 블록 내의 행 번호(row number)
출처 : 불친절한 SQL 프로그래밍(디비안 , 정희락 저)