Database 5. DDL (SQL)

업데이트:
2 분 소요

DDL

SQL ( Structured Query Language )

  • 관계형 데이터베이스 (RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적 프로그래밍 언어
  • 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를
    위해 고안됨.
  • 많은 수의 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택하고 있음.
  • 데이터에 구조화된( = 사전에 지정된 ) 질문을 하는 언어
  • 대소문자 구별하지 않음

SQL의 용도

    사용자 <---> SQL 작성 및 명령 수행 <---> DBMS (시스템 소프트웨어) <---> 데이터베이스

ORACLE 계정 생성

오라클 구 버전 방식으로 사용자 계정 생성을 위한 설정

  ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE ; -- 사용자 계정 생성을 위한 설정

  CREATE USER EZEN IDENTIFIED BY 0824;		-- "ezen" 사용자 계정을 생성
  ALTER USER ezen account unlock;
  GRANT CONNECT, RESOURCE, DBA TO ezen;		-- "ezen" 사용자 계정에게 권한 줌

테이블 스페이스

    CREATE tablespace ezen_data
    datafile 'C:\app\ezen\product\18.0.0\oradata\XE\ezen_data.dbf' SIZE 2G
    autoextend ON NEXT 512M maxsize unlimited
    logging
    ONLINE 
    permanent
    extent management LOCAL autoallocate
    blocksize 8K
    segment SPACE management auto
    flashback ON;

temp

    CREATE TEMPORARY tablespace ezen_temp
    tempfile 'C:\app\ezen\product\18.0.0\oradata\XE\ezen_temp.dbf' SIZE 500M
    autoextend ON NEXT 100M maxsize unlimited;
  • 생성한 테이블 스페이스를 ezen 사용자 계정의 default 테이블 스페이스로 지정
    ALTER USER ezen DEFAULT tablespace ezen_data;
    ALTER USER ezen TEMPORARY tablespace ezen_temp;

DDL (Data Definition Language)

데이터 정의어

  • DB, 테이블의 스키마를 정의, 수정하는 기능
  • 테이블 생성, 컬럼 추가, 타입 변경, 각종 제약조건 지정, 수정 등

1. CREATE TABLE

  • 테이블 생성
    CREATE TABLE 테이블이름 (
        속성이름  데이터타입 [NOT NULL][DEFAULT 기본값]
        [PRIMARY KEY(속성)]
        [UNIQUE (속성)]
        [FOREIGN KEY(속성) REFERENCES 테이블이름(속성)]
        [ON DELETE 옵션]
        [CONSTRAINT 이름]
        [CHECK(조건)]
    );

제약 조건 (constraint)

  • 사용자가 원하는 조건의 데이터만 유지하기 위해 생성함.
  • 데이터의 무결성을 유지하기 위한 DB의 보편적인 방법으로 테이블의 특정
    컬럼에 설정하는 제약

NOT NULL

  • 속성이 널 값을 허용하지 않음을 의미하는 키워드
  • NULL값의 입력을 금지, 필수적으로 값이 들어가야하는 컬럼이 됨.

DEFAULT

  • 속성의 기본 값을 지정하는 키워드

PRIMARY KEY

  • 기본키를 지정하는 키워드
  • 테이블에 저장된 행을 고유하게 식별하기 위함
  • 하나의 테이블에 단 하나의 기본 키만 정의 가능.
  • 기본 키 생성 시 DBMS는 자동으로 UNIQUE 인덱스를 생성
  • 기본 키 컬럼에는 null 입력 불가.

FOREIGN KEY

  • 참조 무결성 제약조건 유지를 위해 참조되는 테이블에서 투플(행) 변경 시 처리 방법을
    지정
  • 다른 테이블에 기본키를 외래 키로 지정하는 경우 생성함.

  • on update no action : 투플을 변경하지 못하게 함.
  • on update cascade : 관련 투플에서 외래키 값을 함께 변경함.
  • on update ser null : 관련 투플의 외래키 값을 null로 변경함.
  • on update set default : 관련 투풀의 외래키 값을 미리 지정한 기본값으로 변경함.

CHECK

  • 테이블에 정확하고 유효한 데이터를 유지하기 위해 특정 속성에 대한 제약조건을 지정
  • 입력할 수 있는 값 종류 및 범위를 제한함.
    CREATE TABLE customer (
	cusID varchar(20) NOT NULL,
	cusName varchar(10)NOT NULL, 
	cusAge int,
	grade varchar(10)NOT null,
	job   varchar(20),
	point int DEFAULT 0,
	PRIMARY key(cusID)
);

alt

2. DROP TABLE

  • 테이블 삭제
    DROP TABLE CUSTOMER;
    ex) alter table customer drop constraint check_age;

만약, 삭제할 테이블을 참조하는 테이블 있다면?

  • 테이블 삭제가 수행되지 않음
  • 관련된 외래키 제약조건을 먼저 삭제해야 함

3. ALTER TABLE

  • 테이블 변경

새로운 속성 추가

    alter table 테이블이름 add 속성이름 데이터타입 [not null] [default]
    ex)  alter table customer add createDate date;

기존 속성 삭제

    alter table 테이블이름 drop column 속성이름;
    ex)  alter table customer drop column createDate;
만약, 삭제할 속성과 관련된 제약조건이 존재하면
  • 속성 삭제가 수행되지 않음
  • 관련된 제약조건을 먼저 삭제해야 함

새로운 제약조건 추가

    alter table 테이블이름 add constraint 제약조건이름 제약조건내용;
    ex) alter table customer add constraint check_age check (cusage >= 20) ;

기존 제약조건 삭제

    alter table 테이블이름 drop constraint 제약조건이름;
    ex) alter table customer drop constraint check_age;

속성의 데이터 타입

VARCHAR(n)

  • 최대길이가 n인 가변길이의 문자열

INT

  • 정수

DATE

  • 연,월,일로 표현되는 날짜

태그:

카테고리:

업데이트:

댓글남기기