객체(OBJECT)를 만들고(CREATE), 수정(ALTER)하고, 삭제(DROP) 등 데이터의 전체 구조를 정의하는 언어로 주로 DB관리자, 설계자가 사용한다.
테이블이나 인덱스, 뷰 등 다양한 데이터베이스 객체를 생성하는 구문
테이블로 생성된 객체는 DROP구문을 통해 제거할 수 있다.
CREATE TABLE 테이블명 (
컬럼명 자료형(크기),
컬럼명 자료형(크기),
...);
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석내용';
CREATE TABLE 테이블명
AS 서브쿼리;
사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약.
데이터 무결성 보장을 목적으로 함.
해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
삽입/수정시 NULL값을 허용하지 않도록 컬럼레벨에서 제한
NOT NULL은 컬럼 레벨만 지정 가능하다.
CREATE TABLE 테이블명(
컬럼명 자료형 NOT NULL,
컬럼명 자료형,
...
);
컬럼에 입력 값에 대해서 중복을 제한하는 제약조건
컬럼 레벨에서 설정 가능, 테이블 레벨에서 설정 가능
단, UNIQUE 제약 조건이 설정된 컬럼에 NULL 값은 중복 삽입 가능
CREATE TABLE 테이블명(
-- 컬럼 레벨
컬럼명 자료형 UNIQUE,
컬럼명 자료형 CONSTRAINT 제약조건명 UNIQUE,
-- 테이블 레벨
UNIQUE(컬럼명),
CONSTRAINT 제약조건명 UNIQUE(컬럼명)
);
두 개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약조건을 설정한다.
지정된 모든 컬럼의 값이 일치해야 중복으로 판단
복합키는 테이블 레벨로만 설정 가능하다.
CONSTRAINT 제약조건명 UNIQUE(컬럼명1, 컬럼명2, ...)
테이블에서 한 행의 정보를 찾기위해 사용할 컬럼을 의미한다.
테이블에 대한 식별자 역할을 한다.
NOT NULL + UNIQUE 제약조건의 의미를 가진다
컬럼 레벨, 테이블 레벨 둘 다 설정 가능
여러 개의 컬럼을 묶어서 설정할 수 있다.
CREATE TABLE 테이블명(
-- 컬럼 레벨
컬럼명 자료형 PRIMARY KEY,
컬럼명 자료형 CONSTRAINT 제약조건명 PRIMARY KEY,
-- 테이블 레벨
컬럼명 자료형
, PRIMARY KEY(컬럼명)
, CONSTRAINT 제약조건명 PRIMARY KEY(컬럼명1 [, 컬럼명2, ...])
);
참조된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음
이는 특정 값에 대한 중복을 제거하고(무결성 유지)
두 테이블이 같은 컬럼 값을 지니기에 JOIN을 활용할 수 있다
제공되는 값 외에는 NULL을 사용할 수 있음
FOREIGN KEY 제약조건에 의해서 테이블간의 관계(RELATIONSHIP)가 형성됨
-- 컬럼 레벨
컬럼명 자료형(크기) [CONSTRAINT 제약조건명] REFERENCES 참조할 테이블명 [(참조할 컬럼)] [삭제룰]
-- 테이블 레벨
[CONSTRAINT 제약조건명] FOREIGN KEY (적용할컬럼명) REFERENCES 참조할 테이블명 [(참조할 컬럼)] [삭제룰]
참조할 컬럼 미지정시 그 테이블의 PRIMARY KEY로 설정된 컬럼이 지정됨
컬럼에 기록되는 값에 조건 설정을 할 수 있음
비교값은 리터럴만 사용할 수 있음, 변하는 값이나 함수 사용 불가
-- 컬럼 레벨
컬럼명 자료형 [CONTRAINTS 제약조건명] CHECK(컬럼명 비교연산자 비교값)
-- 테이블 레벨
[CONTRAINTS 제약조건명] CHECK(컬럼명 비교연산자 비교값)
테이블에 정의된 내용을 수정할 때 사용하는 데이터 정의어로
컬럼의 추가/삭제, 제약조건의 추가/삭제, 컬럼의 자료형 변경, DEFAULT 값 변경,
테이블 명/컬럼 명/제약 조건 명 변경 등을 할 수 있음
ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명] 제약조건(컬럼명) [REFERENCES 테이블명[(컬럼명)]];
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
NOT NULL 제약조건은 다루는 방법이 다르다
ALTER TABLE 테이블명 MODIFY 컬럼명 [NOT] NULL;
ALTER TABLE 테이블명 ADD(컬럼명 데이터타입 [DEFAULT '값']);
ALTER TABLE 테이블명 MOIDFY 컬럼명 데이터타입; (데이터 타입 변경)
ALTER TABLE 테이블명 MOIDFY 컬럼명 DEFAULT '값'; (기본값 변경)
ALTER TABLE 테이블명 DROP (삭제할컬럼명);
ALTER TABLE 테이블명 DROP COLUMN 삭제할컬럼명;
ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 변경명;
ALTER TABLE 테이블명 RENAME CONSTRAINT 제약조건명 TO 변경명;
ALTER TABLE 테이블명 RENAME TO 변경명;
DROP TABLE 테이블명 [CASCADE CONSTRAINTS];