반응형

안녕하세요. 신기한 연구소입니다.

SQL 문장의 종류에 보면 데이터 정의어(DDL)가 있습니다.

해당 용어에 대해 간단히 정리해보겠습니다.

 

오라클 기준으로 설명할께요.

데이터 정의어(DDL)는 테이블에 관련된 명령어입니다.

 

테이블(TABLE)

정리되지 않은 데이터들을 특정 주제와 목적으로 정리해서 만든 집합 개념이라 할 수 있습니다.

행과 열이 존재하는 2차원적 구조이며 흔히 엑셀을 생각하면 쉽게 이해할 수 있습니다.

열(컬럼, 속성)은 더 이상 나눌 수 없는 원자 값을 가질 수 있는 속성을 말합니다.

행은 키가 되는 데이터 그리고 관련된 정보들이 한 줄로 구성되어 있습니다.

 

기본키(Primary key)

테이블에 있는 각 행의 데이터를 명확히 구분 지어 특정할 수 있는 한 개 이상의 컬럼을 말합니다.

우리가 회사의 직원을 구분할 때나 국민으로 사람을 구분할 때 사용할 수 있는데..

회사면 직원코드나 사번일 거고 국민은 주민번호가 기본키가 될 수 있습니다.

이름은 중복(동명)될 수 있지만 사번, 주민번호는 중복될 수 없으니깐요.

기본키가 되면 자동으로 DBMS에서 UNIQUE INDEX를 생성하면서 동시에 NOT NULL도 지정됩니다.

 

외부키(Foreign key)

다른 테이블의 기본키를 가지고 있는 겁니다.

직원 정보 테이블에 부서 코드를 넣을 수 있는데 부서 테이블의 키를 가지고 있는 경우 직원 정보 테이블에서 해당 부서 코드를 외부키로 구성합니다.

 

CREATE TABLE

테이블 생성

새로운 테이블을 생성하는 명령어입니다. 릴레이션을 생성한다고 표현하기도 합니다.

기본 문법은

CREATE TABLE 테이블 명 (

   COULMN1 DATATYPE [DEFALUT TYPE],  -- 컬럼명, 데이터 타입, 속성 설정

   COULMN2 DATATYPE [DEFALUT TYPE],

   ...

   CONSTRAINT [제약조건],

   ...

);

입니다.

사원 정보 테이블을 샘플로 만들어 본다면 다음과 같습니다.

CREATE TABLE EMP (

   EMP_ID CHAR(5) NOT NULL,

   EMP_NM VARCHAR(10) NOT NULL,

   DEPT_ID CHAR(5) NOT NULL,

   BIRTH_DT CHAR(8)

   CONSTRAINT EMP_PK PRIMARY KEY(EMP_ID),  --EMP_ID를 기본키로 설정

   CONSTRAINT EMP_FK FOREIGN KEY(DEPT_ID) REFERENCES DEPT(DEPT_ID) 

        --DEPT테이블의 DEPT_ID를  외래키로 설정

);

컬럼명, 데이터타입, 속성을 필요한 만큼 정의한 뒤 제약조건을 넣어주면 됩니다.

위 구문을 보면 CONSTRAINT가 있는데 제약조건이라고 합니다.

 

제약조건(CONSTRAINT)

PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, NOT NULL, CHECK를 설정합니다.

 

ALTER TABLE

테이블 수정

COLUMN이나 CONSTRAINT를 추가, 삭제할 경우에 사용합니다.

 

ALTER TABLE EMP

ADD (PHONE VARCHAR2(13) NULL DEFAULT "000-0000-0000");

PHONE 컬럼을 추가하는데 타입은 VARCHAR2(13)이고 NULL 허용에 기본값은 "000-0000-0000"입니다.

 

ALTER TABLE EMP

MODIFY(PHONE VARCHAR2(13) NOT NULL DEFALUT "XXX-XXXX-XXXX");

PHONE 컬럼을 수정합니다. NULL에서 NOT NULL로 DEFAULT 값도 "XXX-XXXX-XXXX"로 변경했습니다.

ALTER TABLE EMP

DROP COLUNM PHONE;

PHONE컬럼만 삭제합니다.

 

ALTER TABLE EMP

RENAME COLUMN PHONE TO CELL_PHONE;

PHONE 컬럼명을 CELL_PHONE으로 변경합니다.

 

ALTER TABLE EMP

DROP CONSTRAINT EMP_FK;

EMP 테이블의 FK 제약조건을 삭제합니다.

 

ALTER TABLE EMP

ADD CONSTRAINT EMP_FK FOREIGN KEY (DEPT_ID) REFERENCES DEPT(DEPT_ID);

EMP테이블에 FK(DEPT_ID) 제약조건을 추가합니다.

 

RENAME  테이블명 수정

RENAME EMP TO SAWON;

EMP 테이블 명을 SAWON으로 수정합니다.

 

DROP TABLE

테이블의 모든 데이터와 테이블 자체를 삭제

DROP TABLE EMP [CASCADE | RESTRICT];

DROP 명령을 사용하면 해당 테이블의 존재 자체가 사라진다고 보면 됩니다.

 

TRUNCATE TABLE

테이블의 모든 행만 삭제하고 테이블 구조는 살아있음.

TRUNCATE TABLE EMP;   

주의할 점은 시스템 부하가 DELETE에 비해 적은데 복구가 불가능하기에 유의해서 사용해야 합니다.

 

기타

NULL은 '', "", 0, 조회값없음 등과 전혀 다른 값입니다. 아직 할당이 안되었다로 보면 됩니다.

DEFAULT는 INSERT로 데이터를 입력할 때 아무런 값도 입력하지 않아도 기본적으로 셋팅할 수 있는 명령어입니다. DEFAULT "Y"로 하면 값을 입력하지 않을 시 해당 필드는 "Y"가 자동 입력됩니다.

 

개발하면서 도움이 되길 바랍니다.

잘못된 정보가 있으면 댓글 주세요. 감사합니다.

 

반응형