Chapter 11. DDL (ALTER, DROP)

김승현·2021년 10월 16일
0

ALTER


  • 객체의 정의된 내용을 수정 할 때 사용하는 데이터 정의어
    • 테이블로 예를 들면 컬럼명, 데이터 타입 등
  • 컬럼의 추가, 삭제, 변경 및 제약조건의 추가, 삭제, 수정, 테이블명, 컬럼명, 제약조건명 등을 수행
  • UPDATE는 데이터 수정이고, ALTER는 테이블같은 객체들을 수정
ALTER작성법
컬럼 추가 ALTER TABLE 테이블명 ADD(컬럼명 데이터타입 [DEFAULT] );
데이터 타입 수정
(DEFAULT 값 수정 가능)
ALTER TABLE 테이블명 MODIFY(컬럼명 데이터타입 [DEFAULT]);
제약 조건 추가
(제약조건명 지정해야함)
PRIMARY KEY, FOREIGN KEY, UNIQUE는 ADD
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY | FOREIGN KEY | UNIQUE(컬럼명);
NOT NULL, CHECK 는 MODIFY
ALTER TABLE 테이블명 MODIFY 컬럼명 CONSTRAINT 제약조건명 NOT NULL | CHECK;
테이블 이름 변경ALTER TABLE 테이블명 RENAME TO 테이블명(변경후);
RENAME 테이블명 TO 테이블명(변경후);
컬럼명 수정ALTER TABLE 테이블명 RENAME COLUMN 컬럼명(변경전) TO 컬럼명(변경후);
제약 조건 이름 변경ALTER TABLE 테이블명 RENAME CONSTRAINT 제약조건명(변경전) TO 제약조건명(변경후);
컬럼 삭제참조하고있는 컬럼이 있다면 컬럼 삭제 불가능
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
삭제시 연결되어 있는 제약 조건도 모두 없애기
ALTER TABLE 테이블명 DROP COLUMN 컬럼명 CASCADE CONSTRAINT;
제약 조건 삭제ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명 ;



  • EX) 연습용 TABLE 생성
CREATE TABLE TEST(
    USER_NO NUMBER PRIMARY KEY,
    USER_ID VARCHAR2(20),
    USER_PWD CHAR(20)
);

  • EX) 새로운 컬럼(USER_NAME, USER_AGE) 추가
ALTER TABLE TEST ADD(USER_NAME VARCHAR2(20));
ALTER TABLE TEST ADD(USER_AGE NUMBER DEFAULT 0);

  • EX) 컬럼(USER_PWD)의 데이터 타입 수정(CHAR(20) -> VARCHAR2(20)) / USER_AGE 기본값 99로 변경
ALTER TABLE TEST 
MODIFY(USER_PWD VARCHAR2(20))
MODIFY(USER_AGE DEFAULT 99);

  • EX) USER_ID에 UNIQUE 제약 조건 추가
ALTER TABLE TEST ADD CONSTRAINT TEST_ID_UNQ UNIQUE(USER_ID);

  • EX) USER_PWD에 NOT NULL 제약 조건 추가
ALTER TABLE TEST MODIFY USER_PWD CONSTRAINT TEST_PWD_NN NOT NULL;

  • EX) 컬럼명 수정 USER_PDW -> USER_PASSWORD
ALTER TABLE TEST RENAME COLUMN USER_PWD TO USER_PASSWORD;

  • EX) 설정되 있는 PRIMARY KEY에 대한 제약조건 이름 변경
ALTER TABLE TEST RENAME CONSTRAINT SYS_C007222 TO TEST_NO_PK;

  • EX) USER_ID의 제약 조건 삭제
-- 제약조건명 확인

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,TABLE_NAME FROM USER_CONSTRAINTS
WHERE TABLE_NAME='TEST';
-- 제약조건 삭제
ALTER TABLE TEST DROP CONSTRAINT TEST_ID_UNQ ;



DROP


  • DROP은 테이블같은 객체를 완전히 삭제 할때 사용하는 구문
  • DELETE나 TRUNCATE처럼 데이터를 삭제하는것이 아닌, 테이블 자체를 삭제

DROP작성법
테이블 삭제DROP TABLE 테이블명;
테이블 삭제+제약조건 삭제DROP TABLE 테이블명 CASCADE CONSTRAINT;
profile
개발자로 매일 한 걸음

0개의 댓글