3. sql
3. sql
3. SQL (23. 10. 19)
SQL
- SQL(Structured Query Language)는 가장 널리 사용되는 상용 관계 데이터베이스 언어
- IBM에서 수행한 System-R 프로젝트의 수행 결과
- SQL이 발표된 후 많은 RDBMS 벤더들이 SQL을 자사 제품에 구현, 현재는 표준으로 사용됨
- RDBMS 뿐만 아닌 비 관계 데이터베이스에서도 SQL을 구현
- ANSI/ISO등의 표준 기관에서 SQL 표준을 정의
- 비 절차적 언어
SQL 구성
- 데이터 조작어(Data Manipulation Language – DML)
- 데이터베이스의 데이터를 조회하거나 검색하기 위한 명령 및 데이터베이스 테이블의 데이터에 변형(삽입, 수정, 삭제)을 가하는 질의어
- 데이터 정의어(Data Definition Language – DDL)
- 테이블, 무결성 등의 데이터 구조를 정의하는데 사용되는 명령어들로 데이터 구조와 관련된 질의어
- 데이터 제어어(Data Control Language – DCL)
- 데이터베이스에 접근하고 개체들을 사용하도록 권한을 주고 회수하는 질의어
- 트랜잭션 제어어(Transaction Control Language – TCL)
- 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 트랜잭션별로 제어하는 질의어
DDL
CREATE
릴레이션(테이블), 뷰, 인덱스, 저장 프로시저 등 데이터베이스 객체 생성
DROP
존재하는 데이터베이스 객체 삭제
ALTER
존재하는 데이터베이스 객체 수정
TRUNCATE
테이블 내 데이터의 완전 삭제
DML
- SELECT
- 관계 대수에서 프로젝션(Projection - π) 연산과 일치, 결과에 나타날 속성을 나열하는데 사용됨
- FROM
- 관계 대수의 카티션 프로덕트에 해당하며, 질의에서 조회할 릴레이션을 나열
- WHERE
- 관계대수에서 셀렉션(Selection - σ) 연산과 일치, FROM 절에 나타나는 릴레이션 속성들의 조건으로 구성
Set operation
UNION
- 일반적으로 합집합 연산
- 두 SQL 질의의 결과가 합병 가능 조건이면
UNION
연산 가능 SELECT
절과는 다르게 기본적으로 중복을 제거함
INTERSECT
- 교집합
SELECT
절과는 다르게 기본적으로 중복을 제거함- 중복을 유지하고자 한다면
INTERSECT ALL
을 사용 - MySQL은 릴레이션 집합 간의 교집합을 산출하는 INTERSECT 연산을 지원하지 않는다.
EXCEPT
- 차집합
- 두 SQL 질의의 결과가 합병 가능 조건이면
EXCEPT
연산 가능 SELECT
절과는 다르게 기본적으로 중복을 제거함EXCEPT ALL
을 사용하여 모든 중복을 유지할 수 있음
Subquery
- 단일 질의 안에 질의가 포함된 형태의 쿼리
- 관계 대수 질의 결과는 릴레이션을 반환함
- 서브 쿼리의 결과를 주 쿼리에서 받아서 처리는 형식으로,
포함된 쿼리(Nested Query)
라라고도 부름
- 서브 쿼리 (Subquery)
- 가장 많이 사용되는 형태로, WHERE 절에서 셀렉션 연산의 값을 산출하기 위해 사용하는 질의
- 인라인 뷰(Inline View)
FROM
절에서 질의의 결과를 테이블처럼 사용하는 용도의 질의
- 스칼라 서브 쿼리(Scala Subquery)
SELECT
문에서 사용되는 서브 쿼리로, 주로 계산 결과값을 쿼리 결과에 포함시키는데 사용되는 질의
- 연관 서브 쿼리
- 서브 쿼리에서 주 쿼리의 필드값과 연관되어 사용하는 질의
ORDER BY
- 데이터베이스 질의의 결과는 테이블 내의 투플의 위치(삽입된 순서)대로 산출됨
ORDER BY
절에 사용되는 컬럼을 기준으로 데이터를 정렬- 오름차순(DESC)와 내림차순(ASC – 기본 값)으로 데이터를 정렬 함
limit 1
등으로 최댓값을 추출가능offset 2
등으로 몇번 부터 출력할지도 조절 가능
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.