ALTER TABLE :
테이블에 변경사항을 적용하고자 할 때 사용된다
UNIQUE : ALTER TABLE 테이블명 ADD UNIQUE(컬럼명);
CHECK : ALTER TABLE 테이블명 ADD CHECK(컬럼에 대한 조건식);
PRIMARY KEY : ALTER TABLE 테이블명 ADD PRIMARY KEY(컬럼명);
FOREIGN KEY : ALTER TABLE 테이블명 ADD FOREIGN KEY(컬럼명) REFERNECES 참조할 테이블명[참조할 컬럼명]
DEFAULT 옵션 : ALTER TABLE 테이블명 MODIFY 컬럼명 DEFAULT 기본값
ALTER :객체를 변경하는 구문
* 변경되는 내용
-제약조건 추가/수정(삭제 -> 추가)/ 삭제
-컬럼명/데이터 타입/제약조건명/테이블명 변경
* 컬럼 추가/수정/삭제
ALTER TABLE 테이블명 ADD 컬럼명 자료형 [기본값|제약조건]
ALTER TABLE DEPT_TABLE ADD CNAME VARCHAR2(20);
ALTER TABLE 테이블명 ADD 컬럼명 자료형
컬럼 수정(MODIFY) :
- 데이터 타입 수정 : ALTER TABLE 테이블명 MODIFY 컬럼명 변경할 데이터 타입
1) ALTER TABLE DEPT_TABLE MODIFY DEPT_ID CHAR(5);
- 기본값 수정 : ALTER TABLE 테이블명 MODIFY 컬럼명 DEFAULT 변경할 기본값
ALTER TABLE DEPT_TABLE MODIFY DEPT_ID NUMBER;
기존에는 문자타입에서 변경하고자 하는 값이 숫자타입일 경우
형식 오류가 발생된다.
ALTER TABLE DEPT_TABLE MODIFY DEPT_TITLE VARCHAR2(10);
일부 값이 너무 커서 열 길이를 줄일 수 없다
크기 오류가 발생한다.
ALTER TABLE DEPT_TABLE MODIFY DEPT_TITLE VARCHAR2(40);
35바이트에서 50바이트로 변경이 가능하다.
-- 여러 개의 컬럼도 변경이 가능하다.
ALTER TABLE DEPT_TABLE
MODIFY DEPT_TITLE VARCHAR2(55)
MODIFY LNAME DEFAULT '코리아';
DROP COLUMN : 컬럼 삭제
-- 테이블 복사
CREATE TABLE DEPT_COPY
AS SELECT * FROM DEPT_TABLE;
SELECT * FROM DEPT_COPY;
ALTER TABLE DEPT_COPY DROP COLUMN LNAME;
ALTER TABLE DEPT_COPY DROP COLUMN CNAME;
ALTER TABLE DEPT_COPY DROP COLUMN LOCATION_ID;
ALTER TABLE DEPT_COPY DROP COLUMN DEPT_TITLE;
ALTER TABLE DEPT_COPY DROP COLUMN DEPT_ID; -- 오류 발생!
-- 테이블에 최소한의 한개의 컬럼은 존재해야 한다.
제약 조건 추가/삭제 (수정 : 삭제 -> 추가)
* 기본키 (PRIMARY KET) : ALTER TABLE 테이블명 ADD PRIMARY KEY(컬럼명)
* 외래키(FOREIGN KEY) : ALTER TABLE 테이블명 ADD FOREUGN KEY (컬럼명) REFERENCES 참조할 테이블명 ()
생략 시 테이블에 있는 기본 키
* UNIQUE : (중복을 허용하지 않는 제약조건) : ALTER TABLE 테이블명 ADD UNIQUE(컬럼명)
* CHECK (특정 값들만 저장하고자 할때 사용하는 제약조건, NULL값 가능)
: ALTER TABLE 테이블명 ADD CHECK (컬럼에대한 조건식
* NOT NULL (NULL값을 허용하지 않는 제약조건) : ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL
제약 조건 삭제 :
ALTER TABLE DROP 테이블명 DROP CONSTRAINT 제약조건명 / NOT NULL 은 예외
ALTER TABLE 테이블명 MODIFY 컬럼명 NULL
ALTER TABLE DEPT_TABLE
ADD CONSTRAINT DT_PK PRIMARY KEY(DEPT_ID)
ADD CONSTRAINT DT_UQ UNIQUE(DEPT_TITLE)
MODIFY LNAME NOT NULL;
ALTER TABLE DEPT_TABLE DROP CONSTRAINT DT_PK;
ALTER TABLE DEPT_TABLE
DROP CONSTRAINT DT_UQ
MODIFY LNAME NULL;
DROP TABLE DEPT_TABLE;
참조되고 있는 부모테이블은 삭제가 되지 않는다.
지우고자 할 경우 1) 자식테이블을 먼저 삭제 후 부모테이블을 삭제
2) 부모테이블만 삭제하는데, 제약조건까지 삭제
DROP TABLE 테이블명 CASCADE CONSTRAUNT
1) 컬럼명 변경 : RENAME COLUMN 기존 컬럼명 TO 바꿀 컬럼명 :
ALTER TABLE DEPT_TABLE RENAME COLUMN DEPT_TITLE TO DEPT_NAME;
-- DEPT_TITLE --> DEPT_NAME으로 변경
1) ALTER TABLE
2) 테이블명
2) RENAME COLUMN
2) 기존 컬럼명
3) TO
4) 바꿀 컬럼명
2) 제약조건명 변경 : RENAME CONSTRAINT 기존제약조건명 TO 바굴제약조건명
ALTER TABLE DEPT_TABLE RENAME CONSTRAINT SYS_C008501 TO DT_DEPTID_NN;
3) 테이블명 변경 : RENAME TO 바꿀 테이블명
ALTER TABLE DEPT_TABLE RENAME TO DEPT_END;
TRUNCATE : 테이블 초기화
- > DROP과는 다르게 테이블의 데이터만을 전부 삭제하여 테이블의 초기상태로 돌려주는 것
TRUNCATE TABLE DEPT_END;
'ORACLE SQL' 카테고리의 다른 글
ORACLE SQL SEQUENCE (0) | 2024.07.29 |
---|---|
ORACLE PL/SQL (0) | 2024.07.29 |
ORACLE SQL DDL_01 (0) | 2024.07.27 |
SQL 1회독 (0) | 2024.07.26 |
ORACLE SQL 2회독 문제 풀이 (0) | 2024.07.25 |