- SQL
5.1 SQL 개요
- SQL 개요
- SQL(Structured Query Language)은 관계 대수에 기초하여 관계형 DB의 데이터를 관리하기 위해 설계된 언어
- 1986년 ANSI, 1987년 ISO에서 표준으로 제정
- 특징
비절차적 언어, 필요한 데이터만 기술
인간의 언어와 매우 유사하고 간단, 명료
5.2 데이터 정의
- 데이터 정의 언어(Data Definition Language; DDL)
- 데이터(테이블 및 인덱스)의 구조를 생성, 수정, 삭제 하는 등의 정의
- 데이터가 준수해야 하는 제약조건을 기술
- 데이터 조작 언어(Data Manipulation Language)
- 데이터를 추가, 수정 및 삭제 등의 명령 포함
- 데이터베이스로부터 데이터를 검색
- 데이터 타입
- 컬럼이 가질 수 있는 값의 범위, 즉 도메인 결정
- 기본 데이터형
- INTEGER: 부호있는 4바이트 2진 정수
- SMALLINT: 부호있는 2바이트 2진 정수
- NUMERIC(p [,g]): 부호있는 10진 p자리 정수, g자리 소수
- FLOAT: 부동 소수점수
- CHAR(n): n 크기 고정길이 문자열
- VARCHAR(n): n 크기 가변길이 문자열
- DATETIME: 년-월-일 시:분:초 형식의 날짜시간
- 스키마 정의
- 테이블 생성
- 새로운 2차원 형태의 테이블을 생성
- 구문형식
- 테이블 수정
- 테이블에 새로운 컬럼을 추가, 삭제 및 수정하여 구조를 변경
- 구문형식
- 테이블 제거
- 테이블을 데이터베이스에서 제거
- 구문형식
5.3 데이터 조작
- INSERT문
- 테이블에 새로운 레코드를 삽입
- 모든 속성 또는 부분 속성에 대한 속성값을 삽입
- 구문형식
- UPDATE 문
- 조건을 만족하는 레코드의 특정 컬럼값을 수정
- 구문형식
- DELETE 문
- 조건을 만족하는 레코드를 삭제
- 구문형식
- 기본 SELECT 질의
- 테이블에서 조건을 만족하는 전체 또는 특정 레코드를 검색
- 구문형식
- 복수의 테이블에 대한 SELECT 질의
- 하나 이상의 테이블에서 정보를 추출
- 구문형식
- 집합 연산이 포함된 SELECT 질의
- 집합 연산을 주어진 두 릴레이션에 적용
- 두 릴레이션의 스키마가 반드시 동일
- 집합 연산(A 연산자 B 형식)
- UNION(합집합): A 또는 B에 존재하는 모든 레코드의 집합
- INTERSECT(교집합): A 와 B 양쪽 모두에 존재하는 레코드의 집합
- EXCEPT(차집합): B 릴레이션에는 없고 A 릴레이션에만 존재하는 레코드의 집합
- 집계 함수를 사용한 SELECT 질의
- 복수의 레코드에 존재하는 특정 컬럼값에 집계 함수를 통해 다양한 계산을 수행할 수 있는 기능
- 집계 함수의 종류
- COUNT: 컬럼에 있는 값들의 개수
- SUM: 컬럼에 있는 값들의 합
- AVG: 컬럼에 있는 값들의 평균
- MAX: 컬럼에서 가장 큰 값
- MIN: 컬럼에서 가장 작은 값
- 그룹 질의
- 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
- 구문형식
*주의 - 출력되는 컬럼에 그룹의 기준과 집계함수 이외의 컬럼은 포함될 수 없음
- HAVING 절을 사용한 그룹 질의
- 레코드를 그룹화하고 집계 함수를 적용한 결과에 조건을 기술
- 구문 형식
*주의 - WHERE 절은 레코드에 적용되는 조건을 기술
HAVING 절은 레코드 그룹에 적용되는 조건을 기술
- 중첩 질의
- SELECT 문 내부에서 독립적으로 실행 가능한 또다른 SELECT 문이 내포되어 있는 질의
- FROM 절에서의 중첩 질의 활용
- 구문형식
- WHERE 절에서의 중첩 질의 활용
- WHERE 절에서의 결과 집합을 활용하여 외부 질의에서 레코드의 출력 여부를 결정
- IN, NOT IN, EXISTS, NOT EXISTS 사용
- 구문형식
- 뷰
- 하나 이상의 원본 테이블로부터 유도되어 일반 테이블처럼 조작할 수 있는 가상 테이블
- 물리적으로 저장되지 않음
- 구문형식