: 관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어
: 원하는 데이터를 찾는 방법이나 절차를 기술하는 것이 아닌 조건을 기술하여 작성
-- 자료형 크기 제시 안해도 되는 타입 : NUMBER, DATE
: 데이터를 조회한 결과를 Result Set이라고 하는데 SELECT구문에 의해 조회된 행들의 집합을 의미
: Result Set은 0개 이상의 행이 포함될 수 있고 Result Set은 특정한 기주에 의해 정렬 가능
: 한 테이블의 특정 컬럼, 특정 행, 특정 행/컬럼 또는 여러 테이블의 특정 행/컬럼 조회 가능
[작성법]
SELECT 컬럼 명 [, 컬럼명, ...]
FROM 테이블명
WHERE 조건식;
SELECT
: 조회하고자 하는 컬럼명 기술
: 여러 컬럼을 조회하는 경우 컬럼은 쉼표로 구분하고, 마지막 컬럼 다음은 쉼표를 사용하지 않음
: 모든 컬럼 조회 시 컬럼 명 대신 '*' 기호 사용 가능하며 조회 결과는 기술한 컬럼 명 순으로 표시 됨
FROM : 조회 대상 컬럼이 포함된 테이블 명 기술
WHERE
: 행을 선택하는 조건 기술
: 여러 개의 제한 조건을 포함할 수 있으며, 각각의 제한 조건은 논리 연산자로 연결
: 제한 조건을 만족시키는 행들만 Result Set에 포함
SELECT 예시
-- 직원 전부의 사번과 이름, 월급을 조회하는 구문
SELECT EMP_ID, EMP_NAME, SALARY
FROM EMPLOYEE;
-- EMPLOYEE 테이블에서 모든 사원의 사번, 이름, 급여, 연봉(급여12) 조회
SELECT EMP_ID, EMP_NAME, SALARY, SALARY 12 FROM EMPLOYEE;
-- EMPLOYEE 테이블에서 이름, 입사일, 오늘 날짜 조회
SELECT EMP_NAME, HIRE_DATE, SYSDATE FROM EMPLOYEE;
SYSDATE : 시스템상의 현재 시간(날짜)를 나타내는 상수
SELECT SYSDATE -1, SYSDATEM SYSDATE+1
FROM DUAL;
-- 날짜에 +/- 연산 시 일 단위로 계산이 진행 됨
: SELECT 조회 결과의 집합인 RESULT SET에 출력되는 컬럼명을 지정
컬럼명 AS 별칭 : 별칭 띄어쓰기 하면 안됨, 특수문자 안됨, 문자만 가능
컬럼명 AS "별칭" : 별칭 띄어쓰기 가능, 특수문자 가능, 문자도 가능
(AS는 생략 가능)
: 임의로 지정한 값을 기존 테이블에 존재하는 값처럼 사용하는 것
--> (필수) DB의 리터럴 표기법은 ' ' 홑따옴표
--> " " 쌍따옴표는 특수문자, 대소문자, 기호 등을 구분하여 나타낼 때 사용하는 표기법
--> 쌍따옴표 안에 작성되는 것들이 하나의 단어이다.
SELECT EMP_NAME, SALARY, '원' AS 단위 FROM EMPLOYEE;
: 조회 시 컬럼에 포함된 중복 값을 한 번만 표기
-- 주의사항 1) DISTINCT 구문은 SELECT 마다 딱 한번씩만 작성 가능
-- 주의사항 2) DISTINCT 구문은 SELECT 제일 앞에 작성되어야 한다.
SELECT DISTINCT DEPT_CODE, JOB_CODE FROM EMPLOYEE;
: >, < >=, <=, =(같다), !=, <>(같지 않다)
-- EMPLOYEE 테이블에서 급여가 300만원 초과인 사원의 사번, 이름, 급여, 부서코드를 조회
SELECT EMP_ID , EMP_NAME , SALARY , DEPT_CODE
FROM EMPLOYEE
WHERE SALARY > 3000000;
-- EMPLOYEE 테이블에서 부서코드가 'D9'인 사원의 사번, 이름, 부서코드, 직급코드 조회
SELECT EMP_ID ,EMP_NAME ,DEPT_CODE ,JOB_CODE
FROM EMPLOYEE
WHERE DEPT_CODE ='D9';
-- EMPLOYEE 테이블에서 급여가 300만 미만 또는 500만 이상인 사원의사번, 이름, 급여, 전화번호 조회
SELECT EMP_ID , EMP_NAME , SALARY ,PHONE
FROM EMPLOYEE
WHERE SALARY < 3000000 OR SALARY >= 5000000;
-- EMPLOYEE 테이블에서 급여가 300만 이상 500만 미만인 사원의 사번, 이름, 급여, 전화번호 조회
SELECT EMP_ID , EMP_NAME , SALARY ,PHONE
FROM EMPLOYEE
WHERE SALARY >= 3000000 AND SALARY < 5000000;
-- 300만 이상, 600만 이하
SELECT EMP_ID , EMP_NAME , SALARY ,PHONE
FROM EMPLOYEE
WHERE SALARY BETWEEN 3000000 AND 6000000;
-- NOT 연산자 사용 가능
SELECT EMP_ID , EMP_NAME , SALARY ,PHONE
FROM EMPLOYEE
WHERE SALARY NOT BETWEEN 3000000 AND 6000000;
-- 날짜(DATE)에 BETWEEN 이용하기
-- EMPLOYEE 테이블에서 입사일이 1990-01-01 ~ 1999-12-31 사이인 직원의 이름, 입사일 조회SELECT EMP_NAME, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE BETWEEN '1990-01-01' AND '1999-12-31';
: ~처럼, ~같은
: 비교하려는 값이 특정한 패턴을 만족 시키면 조회하는 연산자
[작성법]
WHERE 컬럼명 LIKE '패턴이 적용된 값'