< DDL (Data Definition Language) >
- 데이터 정의 언어
- 오라클에서 제공하는 객체(Object)*를 새로이 만들고(CREATE), 구조를 하고(ALTER),
구조 자체를 삭제하는(DROP) 명령문
- 주로 DB관리자, 설계자가 사용하는 데이터 구조 자체를 정의하는 언어
* 오라클에서의 객체(구조)
: 테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE)
인덱스(INDEX), 패키지(PACKAGE), 트리거(TRIGGER)
프로시져(PROCEDUER), 함수(FUNCTION)
동의어(SYNONYM), 사용자(USER)
< ALTER >
- 객체 구조를 수정하는 구문
1-1. 컬럼 추가 (ADD)
[ 표현법 ] ADD 추가할컬럼명 데이터타입 (DEFAULT 기본값)-생략가능
-- CNAME 컬럼 추가
ALTER TABLE DEPT_COPY ADD CNAME VARCHAR2(20);
-- 새로 컬럼이 만들어지고 기본적으로 NULL값으로 채워짐
-- LNAME 컬럼 추가 DEFAULT 기본값'한국'
ALTER TABLE DEPT_COPY ADD LNAME VARCHAR2(20) DEFAULT '한국';
-- 새로 컬럼이 만들어지고 기본값이 NULL이 아닌 DEFAULT값으로 채워짐
1-2. 컬럼 수정 (MODIFY)
- 데이터타입 수정 : [ 표현법 ] MODIFY 수정할컬럼명 바꾸고자하는데이터타입;
❗❗ 현재 담겨있는 값과 완전히 다른 타입으로는 변경 불가
( 문자 → 숫자 X / 문자열 사이즈 축소 X / 문자열 사이즈 확대 O )
- DEAFAULT값 수정 : [ 표현법 ] MODIFY 수정할컬럼명 DEFAULT 바꾸고자하는기본값;
-- LOCATION_ID컬럼의 데이터타입을 VARCHAR2(3)로
ALTER TABLE DEPT_COPY MODIFY LOCATION_ID VARCHAR2(3);
-- LNAME컬럼의 기본값을 '미국'으로 변경
ALTER TABLE DEPT_COPY MODIFY LNAME DEFAULT '미국'; -- 컬럼값이 수정되는 것은 아님
1-3. 컬럼 삭제 (DROP COLUMN)
[ 표현법 ] DROP COLUMN 삭제하고자하는컬럼명;
-- DEPT_ID컬럼 지우기
ALTER TABLE DEPT_COPY2 DROP COLUMN DEPT_ID;
ALTER TABLE DEPT_COPY2 DROP COLUMN DEPT_TITLE;
ALTER TABLE DEPT_COPY2 DROP COLUMN LOCATION_ID;
ALTER TABLE DEPT_COPY2 DROP COLUMN CNAME;
ALTER TABLE DEPT_COPY2 DROP COLUMN LNAME; -- cannot drop all columns in a table
-- 마지막 컬럼 삭제 실행 시, 오류 발생
2-1. 제약조건 추가
- NOT NULL : [ 표현법 ] MODIFY 컬럼명 NOT NULL;
- UNIQUE/CHECK/PRIMARY KEY : [ 표현법 ] ADD 제약조건(컬럼명);
- FOREIGN KEY : [ 표현법 ] ADD FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명(참조할컬럼명);
ALTER TABLE DEPT_COPY
ADD CONSTRAINT DCOPY_PK PRIMARY KEY(DEPT_ID) -- CONSTRAINT로 제약조건명 생성
ADD CONSTRAINT DCOPY_UQ UNIQUE(DEPT_TITLE)
MODIFY LNAME CONSTRAINT DCOPY_NN NOT NULL;
-- 한 테이블 내의 작업은 한 번에 처리 가능
2-2. 제약조건 삭제
- NOT NULL : [ 표현법 ] MODIFY 컬럼명 NULL (NOT NULL → NULL)
- UNIQUE/CHECK/PRIMARY KEY/FOREIGN KEY : [ 표현법 ] DROP CONSTRAINT 제약조건명;
-- DCOPY_PK 제약조건 지우기
ALTER TABLE DEPT_COPY DROP CONSTRAINT DCOPY_PK;
-- LNAME의 제약조건 지우기 NOT NULL => NULL
ALTER TABLE DEPT_COPY MODIFY LNAME NULL;
3-1. 컬럼명 변경 : [ 표현법 ] RENAME COLUMN 기존컬럼명 TO 바꿀컬럼명;
ALTER TABLE DEPT_COPY RENAME COLUMN DEPT_TITLE TO DEPT_NAME;
3-2. 제약조건명 변경 : [ 표현법 ] RENAME CONSTRAINT 기존제약조건명 TO 바꿀제약조건명;
ALTER TABLE DEPT_COPY RENAME CONSTRAINT SYS_C007192 TO DCOPY_98;
3-3. 테이블명 변경 : [ 표현법 ] RENAME TO 바꿀테이블명;
ALTER TABLE DEPT_COPY RENAME TO DEPT_TEST;
< DROP >
- 객체를 삭제하는 구문
- 참조된 부모테이블은 삭제 불가
> 자식테이블을 먼저 삭제하고 부모테이블을 삭제
[ 표현법 ] DROP TABLE 자식테이블; DROP TABLE 부모테이블;
> 부모테이블 삭제할 때, 맞물려있는 제약조건도 함께 삭제
[ 표현법 ] DROP TABLE 부모테이블 CASCADE CONSTRAINT;
'개발 > SQL' 카테고리의 다른 글
[SQL] Oracle - (TCL) 트랜잭션(TRANSACTION) / COMMIT / ROLLBACK / SAVEPOINT (0) | 2022.10.04 |
---|---|
[SQL] Oracle - (DCL) GRANT / REVOKE (0) | 2022.10.04 |
[SQL] Oracle - (DML) INSERT / UPDATE / DELETE (1) | 2022.10.04 |
[SQL] Oracle - (DDL) CREATE / 제약조건(CONSTRAINTS) (0) | 2022.09.29 |
[SQL] Oracle - 서브쿼리(SUBQUERY) / 인라인 뷰(INLINE-VIEW) (0) | 2022.09.29 |