반응형
DDL : ALTER
객체를 수정하는 구문
컬럼 추가/삭제/변경
(행은 DML)
제약조건 추가/삭제/변경
테이블명 변경
제약조건 이름 변경
1 . 테이블 객체 수정 작성 방법
ALTER TABLE 테이블명 수정할내용;
컬럼 추가시 ADD, 삭제는 DROP
2 . 컬럼 추가, 삭제
- 테이블에 최소 한 개 이상의 컬럼이 남아있어야 하므로 모든 열을 삭제할 수는 없음
- 컬럼 삭제 시 참조하고 있는 컬럼이 있다면 삭제할 수 없음
- 제약 조건도 함께 삭제한다면 컬럼을 삭제할 수 있음
추가
ALTER TABLE DEPT_COPY
ADD (LNAME VARCHAR2(20));
삭제
ALTER TABLE DEPT_COPY
DROP COLUMN LNAME;
3 . 컬럼 생성 시 DEFAULT 값 지정
ALTER TABLE DEPT_COPY
ADD (CNAME VARCHAR2(20) DEFAULT '한국');
4. 제약조건 추가 가능
(1) DEPT_COPY2에 PK 제약조건 추가
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT PK_DEPT_ID2 PRIMARY KEY(DEPT_ID);
(2) DEPT_COPY2의 DEPT_TITLE에 UNIQUE 제약조건 추가
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT UN_DEPT_TITLE2 UNIQUE(DEPT_TITLE);
(3) DEPT_COPY2의 DEPT_TITLE에 NOT NULL 제약조건 추가
ALTER TABLE DEPT_COPY2
MODIFY DEPT_TITLE CONSTRAINT NN_DEPT_TITLE2 NOT NULL;
=> NOT NULL 제약조건의 경우 ADD가 아닌 MODIFY 사용
5. 제약조건 삭제
◇작성 방법
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
(1) 제약조건 1개 삭제 시
ALTER TABLE CONST_EMP
DROP CONSTRAINT CK_MARRIAGE;
(2) 제약조건 여러 개 삭제 시
ALTER TABLE CONST_EMP
DROP CONSTRAINT FK_JID
DROP CONSTRAINT FK_MID
DROP CONSTRAINT FK_DID;
(3)NOT NULL 제약 조건 삭제 시 MODIFY 사용
ALTER TABLE CONST_EMP
MODIFY (ENAME NULL, ENO NULL);
6. 컬럼 자료형 수정
- ADD가 아닌 MODIFY사용
- 컬럼의 크기를 줄이는 경우에는 변경하려는 크기를 초과하는 컬럼 값이 없을 때만 변경할 수
ALTER TABLE DEPT_COPY2
MODIFY DEPT_ID CHAR(3)
MODIFY DEPT_TITLE VARCHAR2(30)
MODIFY LOCATION_ID VARCHAR2(2);
7. 컬럼 DEFAULT 값 변경
ALTER TABLE DEPT_COPY
MODIFY CNAME DEFAULT '미국';
DERAULT값 별경할 행 INSERT
INSERT
INTO DEPT_COPY
VALUES
(
'D0'
, '생산부'
, 'L2'
, DEFAULT
);
8. 컬럼, 제약조건, 테이블 이름 변경
(1) 컬럼 이름 변경
ALTER TABLE 테이블명
RENAME COLUMN 기존컬럼명 TO 변경할컬러명;
(2)제약조건 이름 변경
ALTER TABLE 테이블명
RENAME CONSTRAINT 기존이름 TO 변경할이름;
(3)테이블 이름 변경
ALTER TABLE 테이블명
RENAME TO 변경할이름;
9. 테이블 삭제
DROP TABLE 테이블명;
ALTER 명령어 정리
명령어 유형 | 기능 |
ALTER RENAME | 이름 변경 |
ALTER ADD | 추가 |
ALTER MODIFY | 데이터 유형 또는 크기 변경 / NULL제약 조건 추가 |
ALTER DROP | 삭제 |
ALTER READ | 읽기 / 쓰기 |
반응형
'프로그래밍 > SQL_Oracle' 카테고리의 다른 글
11_OracleDB SQL : TCL (Transaction Control Language/ 트랜잭션 제어 언어)_COMMIT, ROLLBACK (0) | 2022.07.20 |
---|---|
10_OracleDB SQL : SEQUENCE (시퀀스생성 및 삭제, NEXTBAL , CURRVAR 사용) (0) | 2022.07.20 |
07_OracleDB SQL : DML (INSERT, DELETE, UPDATE, SELECT) (0) | 2022.07.20 |
06_OracleDB SQL : DDL(CREATE TALBE) 및 제약조건_테이블만들기 (0) | 2022.07.20 |
05_OracleDB SQL : SUBQUERY(서브쿼리) (0) | 2022.07.20 |