NOW OR NEVER

[DataBase] 데이터 정의어(DDL) 본문

Back-End/Database

[DataBase] 데이터 정의어(DDL)

LAURA 2022. 4. 24. 21:44
반응형

데이터 정의어(DDL)

  • create : 테이블 생성
  • alter : 이미 있는 테이블 구조 변경
  • drop : 테이블 삭제

create 문

  • 테이블을 구성하고 속성과 속성에 관한 제약을 정의하고 기본키 및 외래키를 정의하는 명령
  • create table 테이블이름(속성이름 데이터타입 제약, ... )
    • 속성들은 ,로 구분

데이터 타입

  • 정수형 : number
  • 가변형 문자타입 : varchar2(글자수)
    • varchar2의 괄호 안은 최대 늘어날 수 있는 크기(글자 수)를 뜻한다.
    • 넣은 데이터가 3바이트라면 3바이트만큼만 차지한다.
    • ex) varchar(20) : 최대 20바이트까지 저장할 수 있다. 단 한글은 3바이트 차지한다.

제약

  • 속성이름 데이터타입 [not null | unique | default 기본값 | chect 체크조건] [primary key | foreign key]

not null

  • 생략할 수 없음
  • not null 인지만 판단하고 중복은 허용한다.

unique

  • 중복할 수 없음
  • 해당 컬럼의 값이 유일해야 할 때 설정하는 제약
  • unique는 유일한지만 판별하기 때문에 null인 값을 허용한다.

check

  • 조건을 만족해야 함
    • check(조건식)
    • 컬럼의 값이 특정조건을 만족해야 하는 경우 설정
    • 조건 만족하지 않을 경우 에러 발생 : 체크 제약조건이 위배되었습니다

default

  • 기본 값 설정
  • 값을 넣을 때 값을 생략할 경우 기본값이 자동으로 추가됨 or 아니면 기본 값 넣을 자리에 default 작성해도 기본 값추가됨
  • 값을 넣는다면 기본값은 무시됨

primary key

  • 기본 키 설정
  • 다른 레코드와 구별하기 위해 생략할 수 없고, 중복할 수 없도록 설정하는 것을 말함
  • 다른 레코드와의 구별을 위하여 식별자로 사용할 때에 설정(주 식별자)
  • 관계형 데이터베이스에서 모든 테이블에는 반드시 주 식별자를 설정하여야 한다.
  • 때로는 두 개 이상의 컬럼이 합쳐져서 주 식별자가 되기도 한다.
  • 설정 방식
    • 컬럼 레벨에서의 설정 : primary key 설정할 때 컬럼에서 설정(컬럼이름 자료형 primary key)
    • 테이블 레벨에서의 설정 : 맨 뒤에서 몰아서 설정(테이블 맨 뒤에 primary key(컬럼명1,컬럼명2,...))
    • 2개 이상의 컬럼이 합쳐진 primary key 설정하기 : 테이블 레벨에서 설정 혹은 테이블 구조 변경(alter 문)으로 설정
  • not null + unique와 비슷 : null을 허용하지 않고 중복을 허용하지 않는다

foreign key

  • 참조 키(외래 키) 설정
  • 참조키 : 어떤 칼럼의 값이 이미 있는 다른 테이블의 값을 참조해야 하는 경우에 사용하는 것
    • 부모 테이블 : 참조되는 이미 있는 테이블
    • 자식 테이블 : 참조하는 테이블
    • 부모 테이블과 자식 테이블은 참조 키로 서로 관계(주종관계: 부모 자식 관계) 있다라고 한다.
    • 오라클을 관계형 데이터 베이스(RDB : Relational DataBase)라 한다.
    • 관계형 데이터 베이스 테이블을 개체(entity)라 표현하기도 한다.
  • 참조 키를 설정 할 때 반드시 부모 테이블의 primary key로 설정된 주 식별자만이 참조 키로 설정될 수 있다.
  • 어떤 컬럼의 값이 반드시 이미 있는 다른 컬럼의 값을 참조해야 되는 경우 참조키 설정
  • 이미 있는 다른 테이블의 값을 반드시 참조해야 하는 것을 말함
  • 설정방식
    • 컬럼 레벨에서의 설정 : 컬럼 자료형 references 다른테이블(컬럼)
    • 테이블 레벨에서의 설정 : 맨 뒤에서 몰아서 설정(테이블 맨 뒤에 foreign key(컬럼이름) references 다른테이블(컬럼))
  • 참조 키를 설정 후 자식테이블에 레코드 생성시 부모테이블에 레코드가 반드시 먼저 insert가 되어 있어야 한다.
  • 참조되고 있는 자식테이블이 있는 부모테이블을 삭제할 수 없다. 그래서 관계에 있는 테이블을 삭제할 때에는 자식테이블을 먼저 삭제해야 한다.
  • foreign key(속성이름) references 다른테이블(컬럼) on delete cascade : 참조 키를 설정할 때 부모의 참조하고 있는 레코드가 삭제될 때 연쇄하여 자식의 레코드도 삭제하기 위한 옵션

개체 무결성과 참조 무결성

  • 개체 무결성
    • 모든 레코드(tuple)는 primary key로 설정된 주 식별자에 의해서 구별이 가능해야 함을 말한다.
    • primary key는 null이 될 수 없고 중복을 허용하지 않는다.
    • 이것을 만족하지 않는 경우를 개체 무결성에 위배된다라고 말한다.
  • 참조 무결성
    • 참조 키로 설정된 컬럼의 값은 반드시 부모테이블에 나타난 값이여야 한다.
    • 그렇지 않은 경우 참조 무결성에 위배된다라고 말한다.

insert 문

  • 테이블에 자료를 추가하는 방법
  • insert into 테이블이름 values(값1, 값2, ...)
    • 값의 수와 순서는 테이블의 구조와 동일해야 한다.
  • insert into 테이블이름(컬럼이름1, 컬럼이름2, ...) values(값1, 값2,...)
    • 컬럼이름 순으로 값이 와야 한다.
    • not null로 설정된 컬럼의 이름은 반드시 값을 지정해줘야 한다.

alter 문

  • 테이블의 구조 변경
  • 새로운 컬럼 추가: alter table 테이블명 add 컬럼명 자료형;
  • 컬럼 자료형 변경 : alter table 테이블명 modify 컬럼명 자료형;
  • 컬럼 삭제 : alter table 테이블명 drop column 컬럼명;
  • 컬럼에 null/not null 부여 : alter table 테이블명 modify 컬럼명 null / not null;
    • 해당 컬럼 값 중 null 포함되어 있을 경우 부여 불가능
  • 컬럼에 primary key 설정 : alter table 테이블명 add primary key(컬럼명);
    • 다른 레코드와 식별하고자 할 때 컬럼명이 두 개 이상을 가져와 합쳐 primary key(=주 식별자)로 설정할 수 있다.
  • 컬럼에 foreign key 설정 : : alter table 테이블명 add foreign key(컬럼명) references 부모테이블(컬럼명);

drop문

  • drop table 테이블명
  • 테이블을 삭제하는 명령(데이터만 삭제 : delete 테이블 where 조건문)
Comments