쯔이's Dev

DDL(ALTER, DROP)(2) 본문

SQL/DDL(ALTER, DROP)

DDL(ALTER, DROP)(2)

jjhim531 2024. 8. 30. 20:03
반응형

[ [ 데이터 정의어 ] ]

객체를 생성(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