본문 바로가기

데이터베이스설계

[데이타베이스설계] SQL (1)

  • 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)

SQL

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 constraints

 

Primary Key

primary key는 primary keyword라고도 불리고 관계형 데이터베이스에서 각 record에서 unique한 값을 갖는다.

관계형 데이터베이스에서 primary key는 반드시 하나있어야 한다.

 

Foreign Key

foreign key는 두 테이블 사이를 이어주는 link를 제공해주는 속성이다.

다른 테이블의 primary key를 참조하여 테이블 사이의 연결을 설정하기 때문에 cross-reference(상호참조) 역할을 한다.

Foreign Key 예1
Foreign Key 예2

 

 

 


 

  • 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

 

create 문
create 문

r은 relation(table)의 이름이다. 

A는 속성이름이고 D는 해당 속성의 data type이다.

 

Create Table에서의 무결성 제약조건 종류

        - primary key (A)

        - foreign key (A) reference (r)

        - not null

create table에서의 무결성 제약조건 예

 

 

(2) Select 문

select 문

A는 속성, r은 table, P는 prediacte(=술어, 논리연산자) 이다.

relation(table)을 반환한다.

relation 정의

 

select 문은 데이터베이스에서 data를 검색하기 위해 사용된다.

select 문은 relational algebra에서 projection 연산자에 대응된다. 

SQL에서는 중복된 쿼리 결과를 허용한다. 중복을 제거하기 위해서는 select뒤에 distinct 키워드를 삽입해야한다.

select distinct 예

from 절

 

두 개의 relation

from 절은 relation algebra에서 Cartesian product 연산자에 대응된다.

from 뒤에 두개의 relation이 등장하면 두 relation에 대해 Cartesian product를 생성한다.

두 relation의 Cartesian product

 

Where 절

where 절은 DML 문과 함께 사용되며 조건문을 뜻하는 부분이다.

relation algebra에서 predicate에 대응된다.

조건들을 and, or, not과 함께 사용할 수 있다.

logical connectives는 비교연산자인 >, >=, <, <=, =, <> 를 포함할 수 있다. (A <> B : A와 B가 다름)

logical connectives : and 예

비교연산자로 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

order by 예