Notice
Recent Posts
Recent Comments
Link
쯔이's Dev
DDL(ALTER, DROP)(2) 본문
반응형
[ [ 데이터 정의어 ] ]
객체를 생성(CREATE), 변경(ALTER), 삭제(DROP)하는 구문
<ALTER>
객체를 변경하는 구문
[표현식]
ALTER TABLE 테이블명 변경할 내용
* 변경할 내용
1) 컬럼 추가 / 수정 / 삭제
2) 제약조건 추가 / 삭제 -> 수정은 불가
3) 컬럼명 / 제약조건명 / 테이블명 변경
1) 컬럼 추가 / 수정 / 삭제
1_1) 컬럼 추가
EX) DEPT_TALBE에 CNAME컬럼 추가
ALTER TABLE dept_table ADD cname VARCHAR2(20);
EX) DEPT_TALBE에 LNAME 컬럼 추가(기본값 : 한국)
ALTER TABLE dept_table ADD lname VARCHAR2(20) DEFAULT '한국';

1_2) 컬럼 수정 ( MODIFY )
* 데이터타입 수정
잘못된 데이터 타입을 입력하면 형식오류가 발생한다.
MODIFY 컬럼명 바꾸고자하는 데이터타입
EX)
ALTER TABLE dept_table MODIFY
dept_id CHAR(5);
* DEFAULT값 수정
MODIFY 컬럼명 DEFAULT 변경할기본값
EX)
ALTER TABLE dept_table MODIFY
lname DEFAULT '미국';
* 다중변경가능
ALTER TABLE dept_table MODIFY
dept_title VARCHAR2(40)
MODIFY
lname DEFAULT '미국';
1_3) 컬럼 삭제(DROP COLUMN)
[ 표현법]
ALTER TABLE 테이블명 DROP COLUMN 삭제하고자하는 컬럼명
< 주의 !! >
테이블은 최소 하나이상의 컬럼이 필요하므로 최종적으로 하나의 컬럼만 남은 경우 삭제가 되지 않는다.

2) 제약조건 추가 / 삭제
2_1) 제약조건 추가
* 수정은 삭제하고 다시 추가하면 된다.
* 제약조건명 지정하고자 한다면
[CONSTRAINT 제약조건명] 제약조건
[ 표현법 ]
ALTER TABLE 테이블명 변경할 내용
* PRIMARY KEY
ALTER TABLE 테이블명 ADD PRIMARY KEY(컬럼명);
* FOREIGN KEY
ALTER TABLE 테이블명 ADD FOREIGN KEY(컬럼명) REFERENCES 참조할 테이블명 [컬럼명];
EX)
ALTER TABLE employee ADD FOREIGN KEY ( dept_code )
REFERENCES department;
* UNIQUE
ALTER TABLE 테이블명 ADD UNIQUE(컬럼명);
* CHECK
ALTER TABLE 테이블명 ADD CHECK(컬럼에 대한 조건식);
* NOT NULL
ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL;
EX)
ALTER TABLE EMPLOYEE MODIFY EMP_NO NOT NULL;
EX) DEPT_TABLE에
-- DEPT_ID에 PRIMARY KEY 제약조건 추가(제약조건명 : dtable_pk)
-- DEPT_TITLE에 UNIQUE제약조건 추가(제약조건명 : dtable_uq)
-- LNAME에 NOT NULL 제약조건 추가(제약조건명 dtable_nn)
ALTER TABLE DEPT_TABLE ADD CONSTRAINT dtable_pk PRIMARY KEY ( dept_id )
ADD CONSTRAINT DTABLE_UQ UNIQUE(DEPT_TITLE)
modify lname
CONSTRAINT dtable_nn NOT NULL;
2_2) 제약조건 삭제
DROP CONSTRAINT 제약조건명 / NOT NULL -> 삭제안됨
ex)DEPT_TABLE 테이블에서 기본 키 제약 조건(DTABLE_PK)을 삭제
ALTER TABLE DEPT_TABLE DROP CONSTRAINT DTABLE_PK;
ex)dept_table 테이블에서 제약 조건 DTABLE_UQ를 삭제하고, LNAME 컬럼의 속성을 NULL로 변경
ALTER TABLE dept_table DROP CONSTRAINT DTABLE_UQ MODIFY LNAME NULL ;
2_3) 테이블 삭제
DROP TABLE 테이블명;
< 주의 ! ! >
* 어딘가에 참조되고있는 부모테이블은 함부로 삭제가되지 않는다.
※ 만약 지우고자한다면
1. 자식테이블 먼저 전부 삭제
2. 그냥 부모테이블만 삭제하는데 제약조건까지 삭제하는 방법
DROP TABLE 테이블명 CASCADE CONSTRAINT;
3) 컬럼명/제약조건명/테이블명 변경
3_1) 컬럼명 변경
RENAME COLUMN 기존컬럼명 TO 바꿀 컬럼명
EX)
ALTER TABLE dept_table RENAME COLUMN dept_title TO dept_name;
3_2) 제약조건명 변경
RENAME CONSTRAINT 기존제약조건명 TO 바꿀제약조건명
EX)
ALTER TABLE dept_table RENAME CONSTRAINT sys_c007151 TO dtable_id_nn;
3_3) 테이블명 변경
RENAME TO 바꿀테이블명
EX)
ALTER TABLE dept_table RENAME TO dept_test;
< TRUNCATE >
테이블 초기화
TRUNCATE TABLE dept_test;
728x90
반응형
'SQL > DDL(ALTER, DROP)' 카테고리의 다른 글
DDL(ALTER, DROP) (0) | 2024.08.30 |
---|