- 3-1) SQL에서의 Language
- 3-2) 무결성 제약조건
- 3-3) SQL 문과 SQL 문 사용방법
- 3-1) SQL에서의 Language
- DDL (Data Definition Language)
- DML (Data Manipulation Language)
- DCL (Data Control Language)
- TCL (Transaction Control Language)
DDL (Data Definition Language)
- DDL은 데이터 구조, 특히 데이터베이스 스키마를 정의하기 위한 컴퓨터 프로그래밍 언어와 유사한 구문이다.
DML (Data Manipulation Language)
- 데이터베이스에서 튜플을 삽입, 수정, 삭제하고 정보들을 query할 수 있는 기능을 제공한다.
Integrity
- DDL은 무결성 제약조건을 지정하는 명령어들이 포함되어 있다.
View definition
- DDL은 view를 정의하는 명령어들이 포함되어 있다.
Transaction control
- transaction의 시작과 끝을 지정하는 명령어가 포함되어 있다.
Embedded SQL and dynamic SQL
- 범용 프로그래밍 언어(여러 언어들, ex. C / C++)에 SQL문을 임베드하는 방법을 정의한다.
Authorization
- relation과 view에 대한 액세스 권한을 지정해주는 명령어가 포함되어 있다.
DDL
SQL DDL은 relation에 대한 정보들을 지정해줄 수 있도록 한다.
- 각 realation을 위한 스키마
- 각 속성과 관련있는 value의 type
- 무결성 제약조건
- 각 relation을 유지하기 위한 indices 집합
- 각 relation에 대한 보안과 권한 정보
- 디스크에 relation에 대한 물리적인 저장 구조 (physical storage structure)
- 3-2) 무결성 제약조건
무결성 제약조건 규칙
- 정보의 quality를 유지하기 위해 사용된다.
- 데이터 삽입, 업데이트 및 기타 프로세스가 데이터 무결성에 영향 미치지 않는 방식으로 수행되도록 한다.
- 무결성 제약조건은 데이터베이스에서 예상치 못한 damage로 부터 보호하기 위해 사용된다.
무결성 제약조건 종류
- Domain constraint (도메인 제약조건)
- Entity Integrity constraint (엔티티 무결성 제약조건)
- Referential Integrity constraint (참조 무결성 제약조건)
- Key constraint (키 제약조건)
- Domain constraint (도메인 제약조건)
- 도메인 제약조건은 속성들의 유효한 값들에 대한 정의로 이루어진다.
- 도메인의 데이터 타입은 string, character, integer, time, date, currency 등.. 이 있다.
- 속성에서 value들은 해당하는 도메인에서 이용할 수 있는 값이어야 한다. (ex. integer로 정의된 속성에서는 integer만)
- Entity integrity constraints (엔티티 무결성 제약조건)
- primary key는 null 값을 가질 수 없다.
- primary key는 relation에서 개별적인 row를 식별하기 위해 사용되기 때문에 null이면 해당하는 행을 식별할 수 없다.
- table에서 primary key가 아니라면 null 값을 가질 수 있다.
- Referential Integrity Constraints (참조 무결성 제약조건)
- 참조 무결성 제약조건은 두 테이블 사이에서 지정된다.
- Table 1의 foreign key가 Table 2의 primary key를 지칭하면 foreign key의 값은 Table 2의 primary key로 존재하거나 null 값이여야만 한다. (Table 2의 primary key로 존재하지 않는 값은 null값이여야 한다.)
- Key constraints (키 제약조건)
- 키는 엔티티 집합에서 엔티티를 고유하게 식별하는데 사용되는 엔티티 집합이다.
- 엔티티 집합은 여러 key들을 가질 수 있고 이 중 하나는 반드시 primary key이여야 한다.
- primary key는 unique한 값들을 포함할 수 있고 null 값은 있으면 안된다.
Primary Key
primary key는 primary keyword라고도 불리고 관계형 데이터베이스에서 각 record에서 unique한 값을 갖는다.
관계형 데이터베이스에서 primary key는 반드시 하나있어야 한다.
Foreign Key
foreign key는 두 테이블 사이를 이어주는 link를 제공해주는 속성이다.
다른 테이블의 primary key를 참조하여 테이블 사이의 연결을 설정하기 때문에 cross-reference(상호참조) 역할을 한다.
- 3-3) SQL 문과 SQL 문 사용 방법
SQL에서의 Domain type
- char(n) : n길이의 고정된 character strings
- varchar(n) : 최대길이 n까지 변할 수 있는 길이의 character strings
- int : integer
- smallint : small integer
- numeric(p, d) : p는 총 길이, d는 소수점 이하 자릿수이다. (ex. numeric(3, 2) = 442.25)
- real, double precision : 각각 real, double과 동의어이다. 소수를 표현하기위한 데이터 타입.
- float(n) : 부동 소수점 수 / 최소 n 비트 정밀도를 뜻한다.
(1) Create Table construct
r은 relation(table)의 이름이다.
A는 속성이름이고 D는 해당 속성의 data type이다.
Create Table에서의 무결성 제약조건 종류
- primary key (A)
- foreign key (A) reference (r)
- not null
(2) Select 문
A는 속성, r은 table, P는 prediacte(=술어, 논리연산자) 이다.
relation(table)을 반환한다.
select 문은 데이터베이스에서 data를 검색하기 위해 사용된다.
select 문은 relational algebra에서 projection 연산자에 대응된다.
SQL에서는 중복된 쿼리 결과를 허용한다. 중복을 제거하기 위해서는 select뒤에 distinct 키워드를 삽입해야한다.
from 절
from 절은 relation algebra에서 Cartesian product 연산자에 대응된다.
from 뒤에 두개의 relation이 등장하면 두 relation에 대해 Cartesian product를 생성한다.
Where 절
where 절은 DML 문과 함께 사용되며 조건문을 뜻하는 부분이다.
relation algebra에서 predicate에 대응된다.
조건들을 and, or, not과 함께 사용할 수 있다.
logical connectives는 비교연산자인 >, >=, <, <=, =, <> 를 포함할 수 있다. (A <> B : A와 B가 다름)
비교연산자로 between이 존재한다.
ex. Attribute between B and C : B<=Attribute<=C
튜플 비교
위와같이 튜플로 비교문을 만들 수 있다.
(위는 instructor.ID가 teaches.ID와 같으면서 dept_name은 'Biology' 인 경우를 뜻한다.)
order by 키워드를 사용하여 정렬할 수 있다. desc는 내림차순, asc는 오름차순을 뜻한다.
ex. order by name desc
'데이터베이스설계' 카테고리의 다른 글
[데이타베이스설계] Intermediate SQL (0) | 2019.12.11 |
---|---|
[데이타베이스설계] SQL (3) (0) | 2019.12.11 |
[데이타베이스설계] SQL (2) (0) | 2019.12.09 |
[데이타베이스설계] 관계형 모델 (0) | 2019.12.07 |
[데이타베이스설계] 데이타베이스 (0) | 2019.11.28 |