본문 바로가기

자격증/SQLD

DDL (Data Definition Language)

1. 데이터 유형


  • Character : 고정 길이 문자열
    ‘AA’ == ‘AA   ‘

  • Varchar : 가변 길이 문자열
    ‘AA’ != ‘AA  ‘

  • Numeric : 숫자 (실수, 정수 포함)

  • Date : 날짜


2. Create Table


테이블과 칼럼 정의

테이블 : 기본키 + 일반키 ( + 외례 키 )

CREATE TABLE

테이블 생성 규칙

  • 테이블명은 적절한 이름, 단수형 권고

  • 다른 테이블명과 중복 불가

  • 칼럼 명 중복 불가

  • 칼럼은 테이블 이름 지정 후 괄호”()”로 묶어 지정

  • 각 칼럼은 “,”로 구분됨

  • 칼럼은 다른테이블까지 고려하여 데이터베이스 내에서는 일관성 있도록

  • 칼럼 뒤 데이터 유형 표기

  • 대소문자는 구분하지 않음

  • 제약사항은 constraint 구문으로 정의

  • 마지막 칼럼은 “,”를 입력하지 않음


예제

CREATE TABLE UNIT (
ID CHAR(7) NOT NULL, // PK는 반드시 not null!

NAME CHAR(10) NOT NULL,

IP CHAR(12) NOT NULL,

EXPLANE CHAR(100),

X NUMERIC(10,2),

Y NUMERIC(10,2),

GROUP_ID CHAR(7),

CONSTRAINT UNIT_PK PRIMARY KEY (UNIT_ID), // 중요, 제약 조건은 constraint

CONSTRAINT GROUP_FK PRIMARY KEY (GROUP_ID)

);


제약조건

데이터의 무결성을 유지하기 위한 데이터베이스의 보편적 방법


종류

  • PRIMARY KEY
    하나의 테이블에 하나의 기본키만 정의 가능
    UNIQUE + NOT NULL

  • UNIQUE KEY
    고유키, 중복값은 없음, 다만 NULL 이 여러개인건 예외 인정

  • NOT NULL
    NULL 값 입력 금지

  • CHECK
    입력할 수 있는 범위 등을 제한, check제약으로 true | false 평가 가능

  • FOREIGN KEY
    관계 정의시 사용, 기본키를 다른 테이블의 외래키로 복사하는 경우

NULL 의미 : 아직 정의되지 않은 값

DEFAULT 의미 : insert value가 null이라면 기본적으로 default 정의 값이 들어감



SELECT 문장을 통한 테이블 생성 사례

  • CTAS(Create Table ~ As Select ~ )

  • 기존 테이블의 제약조건중 Not null만 적용, 그 외는 적용 안됨

  • 추가적은 ALTER TABLE 기능을 이용해야 함



3. ALTER TABLE


ADD CULUMN

  • 마지막 컬럼이 됨, 위치는 지정 불가능

  • 형식 : ALTER TABLE 테이블 명 ADD 컬럼명 테이터유형 ;


DROP COLUMN

  • 한 번에 하나의 컬럼만 삭제 가능

  • 칼럼 삭제 후 최소 하나 이상의 칼럼이 테이블에 존재

  • 복구가 불가능

  • 형식 : ALTER TABLE 테이블_명 DROP COLUMN 컬럼_명;


MODIFY COLUMN

  • 데이터 유형, default, not null 제약조건에 대한 변경

  • 형식 : ALTER TABLE 테이블_명
    MODIFY (컬럼_명1 데이터유형 [Defualt] [not null],
    컬럼_명2 데이터유형 [Defualt] [not null],
    컬럼_명2 데이터유형 [Defualt] [not null]);

  • 고려사항
    1) 데이터 크기는 늘릴 수만 있으나, NULL값만 있거나 아무 행도 없으면 줄일 수 있음
    2) NULL 값만 가지고 있다면 데이터 유형 변경 가능
    3) defualt 값 변경시 이후 삽인 건에 대해서만 반영
    4) NULL 값이 없을 경우에만 NOT NULL 제약조건 추가 가능


DROP CONSTRAINT

  • 제약 조건 삭제

  • 형식 : ALTER TABLE 테이블_명 DROP CONSTRAINT 제약조건명;


ADD CONSTRAINT

  • 제약 조건 추가

  • 형식 : ALTER TABLE 테이블_명 ADD CONSTRAINT 제약조건명 제약조건 (컬럼);

    ALTER TABLE user ADD CONSTRAINT group_fk FOREIGN KEY(group_id) REFERENCE group(id);


4. RENAME TABLE

  • 테이블 명 변경

  • 형식 : RENAME 변경전_테이블_명 TO 변경후_테이블_명


5. DROP TABLE


  • 테이블 삭제

  • 형식 : DROP TABLE 테이블_명 [CASECADE CONSTRAINT];

  • 참조되는 제약조건도 삭제 됨

  • SQL Server에서는 미리 제약조건 삭제 후 테이블 삭제


6. TRUNCATE TABLE


  • 모든 행들이 제거, 저장 공간을 재사용 가능하도록 해제

  • 정상적인 복구가 불가능!

  • 형식 : TRUNCATE TABLE 테이블_명;