데이터베이스 18장
1. 관계대수 -절차적언어(절차중심): 원하는 정보를 ‘어떻게’ 유도하는 가에 대해 연산자와 연산규칙을 이용하여 기술한다.
1) 순수관계 연산자 ① SELECT (σ) - 릴레이션에서 주어진 조건을 만족하는 튜플들을 검색 하는 것으로 기호는 그리스 문자의 시그마(σ)를 이용. (행, 수평적 연산) -형식 : σ 조건 (R)
② PROJECT (π) - 릴레이션에서 주어진 조건을 만족하는 속성들을 검색 하는 것으로, 기호는 그리스 문자의 파이(π)를 이용. (열, 수직적 연산) - 형식 : π 속성 (R)
③ JOIN -두개의 릴레이션A와 B에서 공통된 속성을 연결하는 것 -A*B(NATURAL JOIN, 자연조인): 공통 속성값 제거 -A⋈B(EQUI JOIN,동등조인): 공통 속성값 중복
④ DIVISION (÷) - 나누어지는 릴레이션인 A는 릴레이션 B의 모든 내용을 포함한 것이 결과 릴레이션이 된다
* SQLD 단골문제!!
2) 일반집합 연산자
① 합집합(U): 릴레이션 A 또는 B에 속하는 튜플들로 구 성된 릴레이션 (UNION)
② 교집합(∩): 릴레이션 A 와 B에 공통적으로 속하는 튜 플들로 구성된 릴레이션 (INTERSECTION)
③ 차집합(-): : 릴레이션 A에만 있고 B에는 없는 튜플들 로 구성된 릴레이션 (DIFFERENCE)
④ 카티션 프로덕트(cartesian product) (X): A에 속한 각 튜플 a에 대하여 B에 속한 튜플 b를 모두 접속시킨 튜플 들(a b)로 구성된 릴레이션 ※관계 대수 연산자 중 합집합, 교집합, 차집합 연산은 이항 연산으로서 연산에 참가하는 두개의 릴레이션은 차 수와 도메인이 같아야 연산을 수행가능.
2. 관계해석 -비절차적언어(결과중심): 원하는 정보가 ‘무엇’이라는 것 만 정의
튜플관계해석, 도메인관계해석 -기본적으로 관계해석과 관계대수는 데이터베이스를 처 리하는 기능과 능력면에서 동등함.
SQL 1. SQL(Structured Query Language)
1) 관계대수와 관계해석을 기초로 한 고급 데이터 언어
2) 이해하기 쉬운 형태
3) 대화식 질의어로 사용 가능
4) 데이터 정의, 조작, 제어 기능 제공
5) COBOL, C, PASCAL 등의 언어에 삽입 -> 내장 SQL
6) DBMS에서 사용되는 비 절차적 대화형 Language
2. 시스템 카탈로그(=데이터 사전)
1) 시스템 자신이 필요로 하는 여러 가지 객체에 관한 정 보를 포함하고 있는 시스템 데이터베이스이다.
2) 특징 - 사용자도 SQL을 이용하여 검색할 수 있다. (DBMS만 스스로 갱신 유지, 사용자 갱신 안됨) - 객체들로서는 기본 테이블, 뷰, 인덱스, 데이터베이스, 접근 권한 등이 있다.
3. SQL 구분
1)정의어:DDL (CREATE, ALTER, DROP) 정의 변경 제거
2)조작어:DML (SELECT, INSERT, DELETE, UPDATE) 검색 삽입 삭제 갱신
3)제어어:DCL (GRANT, REVOKE, COMMIT, ROLLBACK) 권한부여 권한취소 transaction 제어
4. DDL (데이터정의어) : 도메인, 테이블, 뷰, 인덱스를 정의/변경/제거하는 언어
1) CREATE DOMAIN *CHAR : 문자형, DATE : 날짜형, INTEGER : 정수형 *반복되는 데이터 타입을 사용자 정의 테이터 타입으로 정해서 효률적으로 사용할 수 있다. *도메인 무결성과 관련이 있으므로 개념 이해 중요함. *DEFAULT : 기본값의 의미로써 입력하지 않았을 경우 자동으로 입력되는 값.
2) CREATE TABLE *기본키는 NOT NULL, UNIQUE 으로 자동 설정된다. *UNIQUE 무결성 : 해당 속성은 유일해야 한다. (이름은 중복되어서는 안 된다.)
* NULL 무결성 : 해당 속성은 Null 값을 가질 수 없다. (이름은 Null 값을 가질 수 없다.)
* FOREIGN KEY ~ REFERENCES 옵션 - ON DELETE[UPDATE] CASCADE : 부모 테이블이 삭제/수정되면 관련된 자식 테이블들도 연쇄 삭제/수정된다. - ON DELETE[UPDATE] SET NULL : NULL 이 된다. - ON DELETE[UPDATE] SET DEFAULT : DEFAULT가 된다. - 무 옵션 : 실행 안됨.
3) CREATE VIEW *뷰에 대한 수정, 삽입 연산이 실행될 경우 WHERE 절 조건에 위배될 경우는 실행을 거부
4) CREATE INDEX * 자동으로 기본키가 인덱스로 정의된다. * UNIQUE : 인덱스로 정의되는 속성 값이 중복되어서는 안 된다. (생략시 중복 허용) * 정렬 : ASC (오름차순, 생략시), DESC (내림차순) * CLUSTER : 클러스터드 인덱스를 만들게 되면 기본적 으로 그 행(Index Key)을 기준으로 물리적으로 데이터를 정렬 (기본 오름차순, 내림차순)시킨다. 기본적으로 넌 클 러스터드 인덱스보다 검색 속도가 빠르다. (물리적으로 인접하므로) Æ 한 테이블에 하나의 클러스터드 인덱스만 만들 수 있 다. * INDEX 를 정의하면 테이블 검색 속도는 빨라지나 수 정, 삽입시 수행 속도가 느려질 수 있다. Æ 기억공간 낭비
5. DML(데이터조작어)
1) INSERT(삽입)
2) DELETE(삭제) * DELETE 는 튜플을 삭제하는 명령어 (테이블은 DROP)
3) UPDATE(갱신)
4) SELECT(검색)
(2) 확장구조 SELECT [DISTINCT] 속성 FROM 테이블 [WHERE 조건] [GROUP BY 속성 [HAVING 조건]] [ORDER BY 속성 [ASC | DESC]]; * DISTINCT : 검색 결과에서 중복 배제
* GROUP BY : 그룹별 검색 (예, 과목별 수강생 수를 구하라.) * ORDER BY : 정렬 검색 (오름차순 : A-Z, ㄱ-ㅎ)
*그룹함수 종류 COUNT(속성) : 그룹별 튜플 수 AVG(속성) : 그룹별 평균 SUM(속성) : 그룹별 합계 MAX(속성) : 그룹별 최대값 MIN(속성) : 그룹별 최소값 -COUNT(*) : 튜플의 건수 Æ Null 포함 -COUNT(속성명) : 튜플의 건수 Æ Null 제외 -COUNT(DISTINCT 속성명) : Null, 중복 제외된 건수 반 환 -UNION : 중복 없이 병합 -UNION ALL : 중복 허용 병합
* SQL 수행 순서 : FROM Æ WHERE Æ GROUP BY Æ HAVING Æ SELECT Æ ORDER BY
6. DCL(데이터 제어어) : DBA가 데이터 관리를 목적으로 사용하는 언어로서 보 안,회복,사용자 권한 등을 정의 한다. - GRANT: 권한부여 - REVOKE: 권한취소 - COMMIT :트랜잭션의 성공했을 경우 그 결과를 DB에 적용하여 완 료 시킴.(트랜잭션 완료 Æ DB 적용), -ROLLBACK 트랜잭션의 실패로 작업을 취소하고, 이전 상태로 되돌 림. (트랜잭션 취소 Æ DB 적용 안됨)