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개 이상의 컬럼이 존재해야 되기 때문에 모든 컬럼을 다 삭제할 순 없다`