- 데이터베이스에서 데이터를 정의,조작,제어하기 위해 사용하는 언어
- ANSI(American National Standards Institude) 표준어인 SQL를 사용한다.
DQL(Data Query Language)
- 데이터베이스에 저장된 데이터를 조회하는 명령어
- select
DML(Data Manipulation Language)
- 데이터베이스에 데이터를 입력, 수정 ,삭제하는 명령어
- insert, update, delete, merge
TCL(Transaction Control Language)
- 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구시키기 위한 명렁어
- commit, rollback, savepoint
DCL(Data Control Language)
- 데이터베이스에 저장된 데이터를 관리하기 위하여 데이터의 보안성 제어하기 위한 명령 권한관리
- grant, revoke
DDL(Data Definition Language)
- 데이터베이스나 테이블등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어
- create,alter,drop, truncate, rename, comment
데이터베이스에서 데이터를 검색하는 명령어이다.
projection : query(쿼리)에 의해 반환되는 테이블의 열을 선택한다. 열 추출
select employee_id from employees;selection : query(쿼리)에 의해 반환되는 테이블의 행을 선택한다. 행 추출
select * from employees where employee_id=100;join : 서로 다른 테이블에서 내가 원하는 데이터를 추출
select e.employee_id, d.department_name from employees e, departments d where e.department_id = d.department_id;
- SQL문은 대소문자를 구분하지 않습니다.
- 하지만 성능의 관점에서 생각하면 대소문자를 구분해서 수행하자.
대소문자 구분하지 않을경우 실행계획을 공유하지 않아 메모리 과다사용됨
공백문자는 구분한다.
select employee_id,last_name from employees; select employee_id, last_name from employees;
- 이 또한 마찬가지로 실행계획을 공유하지 않아 메모리 과다사용됨
tab key, enter key 구분한다.
select employee_id, last_name from employees; select employee_id, last_name from employees;
- 서로다른 절은 다음절로 작성하는 습관을 갖자
-NUMBER : *,/,+,-
-DATE : +,-
-VARCHAR2, CHAR : 사칙연산 불가능
1순위 *,/ 동급
2순위 +,- 동급
dual(dummy table,가상테이블) : 오라클에서는 from dual이 필수, 다른 DBMS에서는 생략가능
desc : describe

데이터품질, OLTP, OLAP
if commission_pct is null then
0;
else
commission_pct;
end if
SELECT
employee_id,
salary,
commission_pct,
((salary 12) + (salary 12 * nvl(commission_pct,0)) as res
FROM hr.employees;
작은 따옴표로 묶어 있는 문자를 리터럴 문자열이라고 한다.
SELECT '사원 번호는 '|| employee_id ||' 입니다.'
FROM hr.employees;
작은 따옴표를 리터럴문자로 보는게 아니라 단어로 보고 싶을때
'(')
q의 활용
q'[리터럴문자]'
q'<리터럴문자>'
q'{리터럴문자}'
q'(리터럴문자)'
q'!리터럴문자!'


employees 테이블에서 employee_id, last_name과 first_name은 연결해서 표시하고(공백으로 구분) 열 별칭은 화면 결과처럼 쿼리문을 작성해 주세요.
<화면결과>
Emp# Employee Name 100 King Steven 101 Kochhar Neena 102 De Haan Lex select employee_id as "Emp#", last_name || ' ' || first_name as "Employee Name" from hr.employees;
employees 테이블에서 컬럼중에 last_name, job_id를 연결해서 표시하고(쉼표와 공백으로 구분) 열 별칭은 화면 결과처럼 쿼리문을 작성하세요.
<화면결과>
Employee and Title Abel, SA_REP Ande, SA_REP select last_name || ',' || ' ' || job_id as "Employee and Title" from hr.employees;
departments 테이블에 있는 데이터에서 department_name , manager_id 칼럼을 가지고 화면결과 처럼 출력하는 쿼리문을 작성하세요.
<화면결과>
Department and Manager Administration Department's Manager Id: 200 Marketing Department's Manager Id: 201 with temp_01 as ( select department_name || q'[ Department's Manager Id: ]' || manager_id as "Department and Manager" ,row_number() over (order by department_name || q'[ Department's Manager Id: ]' || manager_id) as rnum from hr.departments ) select "Department and Manager" from temp_01 where rnum <=2;