DDL

ㅎㄱㅇ·2024년 1월 30일
0

DB공부

목록 보기
11/14

💖 DDL (Data Definition Language) : 데이터 정의 언어


  • 객체를 생성하고, 구조를 변경하고, 구조 자체를 삭제하는 언어
    (객체 : 테이블, 사용자, 시퀀스, 뷰, 프로시저, ... 등)
  • 실제 값이 아닌 규칙 자체를 정의한다.



✨CREATE - 객체 생성


사용자(USER) 생성

CREATE USER 유저이름 IDENTIFIED BY 비밀번호;

테이블 생성

CREATE TABLE 테이블명(
	컬럼명 자료형(데이터 크기),
    컬럼명 자료형
    ...
);

테이블 복사

CREATE TABLE 테이블명
AS (SELECT 컬럼명
	FROM 테이블명)

COMMENT ON COLUMN

  • 컬럼에 설명 추가
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석 내용';



제약 조건

원하는 값을 유지하기 위해 설정하는 제약

CONSTRAINT

제약 조건에 이름 부여하기
컬럼레벨방식

컬럼명 자료형 [CONSTRAINT 제약조건명] 제약조건

테이블레벨방식

[CONSTRAINT 제약조건명] 제약조건

NOT NULL

  • NULL 값을 허용하지 않는 제약
  • 컬럼레벨방식만 가능

컬럼레벨방식

컬럼명 자료형 NOT NULL

ALTER

ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL;

UNIQUE

  • 데이터의 중복을 허용하지 않는 제약
  • 컬럼레벨 / 테이블레벨 방식 사용 가능

컬럼레벨방식

컬럼명 자료형 UNIQUE

테이블레벨방식

, UNIQUE(컬럼명)

ALTER

ALTER TABLE 테이블명 ADD UNIQUE(컬럼명);

CHECK

  • 해당 컬럼에 저장할 데이터의 조건을 설정하는 제약

컬럼레벨방식

컬럼명 자료형 CHECK(조건식)
gender char(3) check(gender in ('남','여'))

테이블레벨방식

CHECK(조건식)

ALTER

ALTER TABLE 테이블명 ADD CHECK(조건식);

PRIMARY KEY(기본키)

  • 테이블 내 한 행(데이터)마다 식별하기 위해 사용되는 컬럼을 설정하는 제약
  • 기본적으로 NOT NULL, UNIQUE제약이 설정되어 있음 (NULL 비허용, 중복 비허용)

컬럼레벨방식

  • 한 개만 설정 가능
컬럼명 자료형 PRIMARY KEY

테이블레벨방식

  • 여러 개 설정 가능 (복합키)
PRIMARY KEY(컬럼명[, 컬럼명])

ALTER

ALTER TABLE 테이블명 ADD PRIMARY KEY(컬럼명);

FOREIGN KEY(외래키)

  • 다른 테이블에 존재하는 값을 사용하기 위한 컬럼을 설정하는 제약
  • 보통 다른 테이블의 기본키에 해당하는 값을 연결
  • 연결할컬럼명을 생략할 경우 참조하는 테이블의 기본 키가 연결

컬럼레벨방식

컬럼명 자료형 REFERENCES 참조할테이블명 [(연결할컬럼명)]

테이블레벨방식

FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명[(연결할컬럼명)]

삭제 옵션

부모테이블에서 데이터 삭제 시 자식 테이블에서 사용중인 데이터가 있을 경우 어떻게 처리할 지에 대한 옵션

ON DELETE RESTRICTED

  • 따로 설정 하지 않을 시 기본값임
  • 사용중인 데이터가 있으면 삭제 불가

ON DELETE SET NULL

  • 사용중인 데이터가 있으면 NULL 값으로 변경

ON DELETE CASCADE

  • 사용중인 데이터가 있으면 같이 삭제
RETERENCES 참조테이블명[(연결컬럼명)] ON DELETE SET NULL

ALTER

ALTER TABLE 테이블명 ADD FOREIGN KEY(컬럼명) REFERENCES 참조테이블명[(연결컬럼명)]

DEFAULT

기본값 설정하기

  • 데이터 추가 시 NULL 이 아닌 기본 값을 사용하고자 할 때 설정
컬럼명 자료형 DEFAULT 기본값



✨ALTER


1. 테이블 구조 변경

ALTER TABLE 테이블명 [변경할 내용];

1-1. COLUMN

컬럼 추가

ALTER TABLE 테이블명 ADD 컬럼명 자료형 -- [기본값 제약조건]

컬럼 수정

ALTER TABLE 테이블명 MODIFY 컬럼명 [변경내용]
	+ 변경내용 : 자료형, 기본값

컬럼 삭제

ALTER TABLE 테이블명 DROP COLUMN 컬럼명

1-2. 제약조건

제약조건 추가

ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 제약조건(컬럼명)

제약조건 삭제

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명
  • NOT NULL 제약조건은 수정만 가능 (추가 / 삭제 불가)
ALTER TABLE 테이블명 MODIFY 컬럼명 [CONSTRAINT 제약조건명] NOT NULL || NULL 

1-3. 이름 (컬럼명, 제약조건명, 테이블명)

컬럼명 변경

ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 바꿀컬럼명

제약조건명 변경

ALTER TABLE 테이블명 RENAME CONSTRAINT 기존제약조건명 TO 바꿀제약조건명

테이블명 변경

ALTER TABLE 테이블명 RENAME TO 바꿀테이블명



✨DROP


테이블 삭제

DROP TABLE 테이블명;

💢 다른 테이블에서 데이터를 사용하고 있는 경우 삭제가 되지 않음

  1. 다른 테이블에서 사용중인 데이터를 삭제한 후 테이블을 삭제
  2. 부모 테이블만 삭제하고 자식테이블의 제약조건까지 삭제
DROP TABLE 테이블명 CASCADE CONSTRAINT
--> ROLLBACK 불가

0개의 댓글