포스트

09. DDL(ALTER, DROP)

DDL(Data Definition Language)

  • 객체를 만들고(CREATE), 바꾸고(ALTER), 삭제(DROP)하는 데이터 정의 언어
  • 테이블에서 수정할 수 있는 것
    • 제약조건(추가/삭제)
    • 컬럼(추가/수정/삭제)
    • 이름변경(테이블명, 제약조건명, 컬럼명)

1) 제약 조건(추가 / 삭제)

1
2
3
4
5
6
7
[`작성법`]
1) `추가` : 
ALTER TABLE `테이블명` ADD [CONSTRAINT `제약조건명`] `제약조건`(`지정할컬럼명`)
[REFERENCES `테이블명`[(`컬럼명`)]]; --> FK인 경우 추가

2) `삭제` :
ALTER TABLE `테이블명` DROP CONSTRAINT `제약조건명`;
1
2
3
4
5
6
7
8
9
-- 테이블 복사
CREATE TABLE DEPT_COPY AS SELECT * FROM DEPARTMENT;

-- DEPT_TITLE에 UNIQUE 제약조건 추가
ALTER TABLE DEPT_COPY ADD CONSTRAINT DEPT_COPY_TITLE_U
UNIQUE(DEPT_TITLE)

-- DEPT_COPY에 있는 DEPT_COPY_TITLE_U 제약조건 삭제
ALTER TABLE DEPT_COPY DROP CONSTRAINT DEPT_COPY_TITLE_U;
1
2
3
4
5
6
7
8
9
10
11
12
13
DEPT_COPY`의` DEPT_TITLE `컬럼에` NOT NULL `제약조건 추가/삭제`

ALTER TABLE DEPT_COPY
ADD CONSTRAINT DEPTCOPY_TITLE_NN NOT NULL(DEPT_TITLE);
-- ORA-00904: : 부적합한 식별자
-- NOT NULL 제약조건은 새로운 조건을 추가하는 것이 아닌 컬럼 자체에 NULL 허용/비허용을 제어하는 성질 변경의 형태로 인식됨

MODIFY(`수정하다`) `구문을 사용해서` NULL `제어`
ALTER TABLE DEPT_COPY MODIFY DEPT_TITLE NOT NULL;
-- DEPT-TITLE 컬럼을 NOT NULL 제약조건 설정으로 수정

ALTER TABLE DEPT_COPY MODIFY DEPT_TITLE NULL;
-- DEPT-TITLE 컬럼을 NOT NULL 제약조건 해제

2) 컬럼(추가 / 수정 / 삭제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 컬럼 추가
ALTER TABLE `테이블명` ADD(`컬럼명 데이터타입` [DEFAULT '값']);

-- 컬럼 수정
ALTER TABLE `테이블명` MODIFY `컬럼명 데이터 타입`; ➡️ `데이터 타입 변경`
ALTER TABLE `테이블명` MODIFY `컬럼명` DEFAULT '값' ➡️ DEFAULT `값 변경`
ALTER TABLE `테이블명` MODIFY `컬럼명` NULL/NOT NULL ➡️ NULL `여부 변경`

-- 컬럼 삭제
ALTER TABLE `테이블명` DROP(`삭제할 컬럼명`);
ALTER TABLE `테이블명` DROP COLUMN `삭제할 컬럼명`;
➡️ `의미는 같으나 표기법만 다르다`

-- 컬럼 삭제 시 주의사항!!
➡️ `테이블이란 행과 열로 이루어진 DB에서 가장 기본적인 객체로 테이블에 데이터가 저장된다`
➡️ `테이블은 최소 1개 이상의 컬럼이 존재해야 되기 때문에 모든 컬럼을 다 삭제할 순 없다`