본문 바로가기
Database

SQL

by Doromi 2019. 4. 17.
728x90
반응형

SQL의 의미(structured query language)

 

- 구조화 질의어

- 종합 데이터베이스 언어 역할
단순히 검색만을 위한 데이터 질의어가 아님
- 데이터 정의어(DDL),데이터 조작어(DML),데이터 제어어(DCL)의 기능 모두 제공

SQL의 특징
- 관계 대수 + 확장된 튜플 관계 해석 기초
- 고급, 비 절차적 데이터 언어
사용자 친화적인 인터페이스 제공
- 응용 프로그램에 삽입된 형태로도 사용 가능

- 관계 모델의 공식 용어 대신 일반 용어를 사용
릴레이션 - 테이블, 튜플 - 행, 애트리뷰트 - 열

 

 


SQL 데이터 정의문(DDL)

- 스키마(SCHEMA)

하나의 사용자에 속하는 테이블과 기타 구성 요소 등을 그룹짓기 위한 것


CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;
CREATE DATABASE 명령문도 사용가능

 

- 카탈로그(CATALOG)
SQL 시스템 내에서의 스키마 집합
하나의 특별한 스키마 Information_schema를 포함.

 

- 도메인
하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합
임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고
일부분일 때, 사용자는 그 값의 범위를 도메인이라고 정의할 수 있다.
정의된 도메인 명은 일반적인 데이터 타입처럼 사용한다. 

 

- CREATE DOMAIN  도메인_이름  데이터_타입
  [
기정의 _정의 ]
  [
도메인_제약조건_정의리스트 ]; 

 

도메인_이름 : 일반적인 데이터 타입처럼 사용된다.
데이터_타입 : SQL에서 지원하는 데이터 타입이다.

 

- CREATE DOMAIN DEPT CHAR(4) 

                   DEFAULT '???
 
CONSTRAINT VALID-DEPT
 
CHECK( VALUE IN ('COMP', 'ME', 'EE', 'ARCH', '???'));


 - check : 속성 값에 대한 제약 조건을 지정한다.

 

예제 - 성별을 '남','여'와 같이 정해진 1개의 문자로 표현되는 도메인 SEX를 정의하는 SQL문을 작성
CREATE DOMAIN SEX CHAR(1)s
              DEFAULT '남'
      CONSTRAINT VALD-SEX CHECK(VALUE IN('남'.'여'));

- ALTER DOMAIN 도메인_이름 <변경 내용>

- DROP DOMAIN 도메인_이름 RESTRICT | CASCADE;
 * RESTRICT : 다른 곳에서 이 도메인을 참조하고 있지 않을 때 삭제
 * CASCADE : 이 도메인을 참조하고 있는 뷰나 제약조건도 삭제

 


- 테이블

  1. 기본 테이블(base table)
    create table 문으로 만들어지는 테이블
    DBMS의 화일로 생성되고 저장
  2. 가상 테이블(virtual table)
    create view 문으로 만들어지는 테이블
    어떤 기본 테이블로부터 유도되어 만들어지는 테이블
    독자적으로 존재 불가
  3. 임시 테이블(temporary table)
    질의문 처리 과정의 중간 결과로 만들어지는 테이블
    DDL문으로 만들어지는 것이 아님

- CREATE  TABLE  테이블이름

          ({열이름  데이터타입 [NOT NULL] [DEFAULT ],}+

        [PRIMARY KEY  (열이름_리스트),]

         {[UNIQUE  (열이름_리스트),]}*

         {[FOREIGN  KEY(열이름_리스트)

            REFERENCES  기본테이블[(열이름_리스트)]

            [ON DELETE   옵션]

  [ON UPDATE   옵션] ,]} *

      [CONSTRAINT 이름] [CHECK(조건식)]);

 

– PRIMARY KEY: 기본 키와 개체 무결성 제약조건을 명세

– UNIQUE: 대체 키를 명세, 후보

– NOT NULL: 애트리뷰트 제약조건

– FOREIGN  KEY: 외래 키와 참조 무결성 제약조건을 명세

    •SQL에서는 참조된 테이블의 후보 키도 외래 키로 있음

– 옵션에는 SET NULL, SET DEFAULT, CASCADE 있음

– ON DELETE  SET NULL

    •참조 투플( ) 삭제되면 NULL 설정

– ON UPDATE CASCADE

    •참조 투플( ) 갱신되면 갱신된 값이 파급적으로 갱신됨

– CHECK: 제약조건을 명세

 

 

예제 - 이름, 학번, 전공, 성별, 생년월일로 구성된 <학생>테이블을 정의하는 SQL문을 작성하시오.


* 제약 조건

  • 이름은 NULL이 올 수 없고, 학번은 기본키이다.
  • 전공<학과>테이블의 학과코드를 참조하는 외래키로 사용된다.
  • <학과> 테이블에서 삭제가 일어나면 관련된 튜플의 전공 값을 NULL로 만든다.
  • <학과> 테이블에서 학과코드가 변경되면 전공 값도 같은 값으로 변경한다.
  • 생년월일은 1990-01-01 이후의 데이터만 저장할 수 있다.
  • 제약 조건의 이름은 '생년월일제약'으로 한다.
  • 각 속성의 테이터형은 적당하게 지정한다. 단 성별은 도메인 'SEX'를 사용한다.

 

CREATE TABLE 학생
   (이름 VARCHAR(15) NOT NULL,

     학번 CHAR(8),
     전공 CHAR(5),
     성별 SEX,
     생년월일 DATA,
     PRIMARY KEY (학번),
     FOREIGN KEY (전공) REFERENCES 학과(학과코드)

               ON DELETE SET NULL

               ON UPDATE CASCADE,
     CONSTRAINT 생년월일제약 CHECK(생년월일 >='1990-01-01'));

728x90
반응형

'Database' 카테고리의 다른 글

SQL 데이터 조작문  (0) 2019.04.19
테이블의 제거와 변경  (0) 2019.04.17
관계 대수의 확장  (0) 2019.04.16
순수 관계 연산자(조인,디비전)  (0) 2019.04.16
순수 관계 연산자  (0) 2019.04.15