SELECT *|{[DISTINCT] column|표현식 [별칭],...} FROM table;
■ * 모든 열 선택
명칭
설명
*
SELECT 뒤에 *를 사용하여 테이블에 있는 데이터의 모든 열을 표시
-- Y_DEPT 테이블의 모든 열에 모든 행을 표시SELECT*FROM y_dept;
■ 특정 열의 선택
SELECT 문을 사용할 때 열 이름을 쉼표로 구분하여 지정하면 테이블의 특정 열을 표시
-- Y_DEPT 테이블의 모든 부서 번호와 위치 번호 표시SELECT dept_id, loc_id
FROM y_dept;
■ DISTINCT 중복 행의 제거
명칭
설명
DISTINCT
중복을 제거하고 표시
-- Y_EMP 테이블에서 모든 사원의 부서번호를 중복을 제거하고 표시SELECTDISTINCT dept_id
FROM y_emp;
-- Y_EMP 테이블에서 부서번호와 직급의 중복을 제거하고 표시SELECTDISTINCT dept_id, position
FROM y_emp;
■ 산술식의 사용
명칭
설명
*
곱하기
/
나누기
+
더하기
-
빼기
-- 사원의 이름, 급여 및 연간 총수입을 표시한다.-- 월급에 12를 곱한 후 $300의 상여금을 더하여 계산한다.SELECT emp_name, salary, 12*salary+300FROM y_emp;
괄호()를 사용하여 연산자의 실행 순서를 지정
-- 괄호를 사용하여 연산자의 실행 순서를 지정 가능SELECT emp_name, salary, 12*(salary+300)
FROM y_emp;
■ 날짜 데이터의 연산
-- 사원의 입사일과 입사일로부터 30일 후의 날짜를 사원번호와 함께 표시SELECT emp_id, hiredate, hiredate+30FROM y_emp;
명칭
설명
SYSDATE
현재의 날짜를 표시
SESSION
세션 내에서 날짜 표현 형식을 변경
-- 내장 함수 SYSDATE를 사용하여 현재의 날짜 표시SELECT SYSDATE
FROM dual;
-- 세션 내에서 날짜 표현 형식을 변경ALTER SESSION SET nls_date_format='yyyy/mm/dd hh24:mi:ss';
SELECT sysdate FROM dual;
날짜에 정수를 더하거나 빼는 것은 일 수에 해당되므로 시간 이하의 단위계산은 하루 24시간으로 환산하여 계산
-- 현재로부터 3시간 후와 40분 후의 시간 구하기SELECT sysdate, sysdate+3/24, sysdate+40/(24*60)
FROM dual;
■ NULL 값의 사용과 산술식
NULL이 포함되는 계산식의 결과에서 주의할 사항이 있다.
산술식에서 사용되는 열에서 특정 값이 NULL이면 결과 또한 NULL이 적용된다.
-- NULL을 포함한 계산식SELECT emp_id, salary, comm, (salary*12)+(salary*comm)
FROM y_emp;
NULL이 포함되어 NULL이 나오는 모습
■ 열 머리글과 열 별칭(Column Alias)
-- emp_name은 "Name", comm은 "commission", salary*12는 "Annual Salary"로 표현-- " "를 사용한 열은 열 머리글이 지정한 형식(대소문자, 공백 등)으로 출력-- comm과 같이 큰 따옴표를 사용하지 않은 열은 별칭이 대문자로 출력SELECT emp_name "Name", comm AS commission, salary*12 "Annual Salary"
FROM y_emp;
■ 연결연산자(||)와 Q연산자
명칭
설명
||
다른 열, 산술식 또는 상수 값에 연결하면 좌우에 있는 열이 결합되어 하나의 열로 출력
q 연산자
[], {}, () 또는 <> 문자 쌍 중에서 사용하기 편한 구분자를 임의로 선택하여 사용
-- Y_EMP 테이블에서 이름과 직급을 Employee's Position으로 출력SELECT emp_name || position AS "Employee's Position"
FROM y_emp;
-- 리터럴을 사용해서 이름과 직급사이에 공백을 추가SELECT emp_name ||' '|| position AS "Employee's Position"
FROM y_emp;
-- 영문보고서 작성 시 인용부호를 하나만 사용하는 경우 에러 발생SELECT emp_name ||''s Salary : ' || salary AS "Employee's Position"
FROM y_emp;
-- 이 문제 해결을 위해 인용부호를 짝수로 써서 해결 가능SELECT emp_name ||'''s Salary : '|| salary AS "Employee's Position"
FROM y_emp;
-- 오라클 10G 이상의 경우에는 Q연산자로 가능SELECT emp_name || q'['s Salary : ]' || salary AS "Employee's Position"
FROM y_emp;