DDL(Data Define Language)
- 데이터 정의어 : DB 구조, 형식,접근 방식 등 데이터베이스를 구축하거나 수정하는 언어
- 종류: CREATE, ALTER, DROP 등
- 스키마(Schema) : 데이터베이스 구조와 제약 조건 등에 관한 전반적인 명세 기술
- 도메인(Domain) : 사용자 정의 데이터 타입
- 테이블(Table)
- 뷰(View) : 하나 이상의 기본 테이블로부터 만들어지는 가상 테이블
- 인덱스(Index) : 검색 시간을 단축시키기 위한 참조할 수 있는 데이터 구조
DCL(Data Control Language)
- 데이터 제어어 : 데이터 보안, 무결성, 회복, 병행 제어 등을 정의하는 언어
- 종류
- COMMIT
- ROLLBACK
- SAVEPOINT : 백업 시점 설정
- GRANT/REVOKE : 권한 부여, 권한 회수
- TCL(Transaction Control Language) : 트랜잭션 제어어
DML(Data Manipulation Language)
- 데이터 조작어 : 데이터를 실질적으로 관리하는 언어
- 종류
- SELECT ~ FROM ~
- INSERT INTO ~ VALUES ~
- DELETE FROM ~
- UPDATE ~ SET ~
DML-SELECT
- DISTINCT : 중복된 튜플 중 하나만 출력
- LIKE : 문자 패턴 등을 검색하기 위해 사용
- % (모든 글자 대체), _ (한 글자만), # (숫자 하나만)
- 그룹 함수(GROUP BY)
- COUNT, SUM, AVG, MAX, MIN, ROLLUP 등
- 집합 연산자
- UNION : 중복 제거
- UNION ALL : 중복 포함
- INTERSECT : 중복만
- EXCEPT : 모두 포함되지 않는 데이터만
DML-JOIN
- INNER JOIN
- 조건 없는 이너 조인은 크로스 조인과 동일한 결과
- CROSS JOIN : 결과 테이블 행의 수는 두 테이블 행의 수를 곱한 것과 같음
- OUTER JOIN
- 조건에 만족하지 않는 튜플도 결과 출력
- LEFT, RIGHT, FULL OUTER JOIN 등
프로시저(Procedure)
- 일련의 작업을 저장해두고 호출하여 저장한 작업을 수행하는 절차형 SQL
- 주로 일괄(Batch) 작업 등에 사용됨
- DECLARE ~ BEGIN/END ~
트리거(Trigger)
- 특정 동작이 발생할 때 관련 작업을 자동으로 수행하는 절차형 SQL
- 데이터 변경 및 무결성 유지, 로그 메시지 출력 등에 사용
- DCL 사용 불가
- DECLARE ~ EVENT ~ BEGIN/END
ORM(Object-Relational Mapping)
- 객체 지향 프로그래밍의 객체와 관계형 데이터베이스를 연결하는 기술
- ORM 프레임워크 종류: JAVA(JPA, Hibernate) 등
- 객체 종류
- DAO : 추상 인터페이스 제공하는 객체로 세부 내용의 노출 없이 데이터를 조작하는 객체
- VO : 간단한 엔티티를 의미하는 고정 클래스를 가지는 객체
- DTO : 데이터를 전송하는 객체로 저장/회수만 가능한 객체
쿼리 성능 최적화
- 데이터 입출력 애플리케이션의 성능 향상을 위해 코드를 최적화
- APM(Application Performance Management/Monitoring) 사용
- 옵티마이저(Optimizer)
- 최적의 경로를 찾아주는 모듈
- RBO(Rule Based Optimizer) : 데이터베이스 관리자가 정의해둔 규칙에 의해 경로를 찾는 규칙 기반 옵티마이저
- CBO(Cost Based Optimizer) : 각 DBMS에서 산출되는 비용으로 최적의 경로를 찾는 비용 기반 옵티마이저