오라클 DDL (ALTER, ,DROP)

최주영·2023년 4월 10일
0

오라클

목록 보기
16/22

지난번에는 DDL 중 CREATE를 먼저 공부해봤는데, 나머지 ALTER과 DROP에 대해서 공부해보겠다


✅ ALTER

  • 오라클에 정의되어있는 OBJECT를 수정할 때 사용하는 명령어
  • 컬럼의 추가/삭제, 제약조건의 추가/삭제, 컬럼의 자료형 변경
  • DEFAULT 값 변경, 테이블 명/ 컬럼 명/ 제약조건 명 변경 등을 할 수 있음
// 생성된 TBL_USERALTER 테이블에 컬럼을 추가하기
// ALTER TABLE 테이블명 ADD (컬럼명 자료형 [제약조건])
ALTER TABLE TBL_USERALTER ADD (USER_NAME VARCHAR2(20));

// 테이블에 데이터가 있는 상태에서 컬럼을 추가한다면
ALTER TABLE TBL_USERALTER ADD(NICKNAME VARCHAR2(30));
SELECT * FROM TBL_USERALTER;  // 널값으로 들어감

// 이메일 주소 추가할 때 DEFAULT 설정
ALTER TABLE TBL_USERALTER ADD(EMAIL VARCHAR2(40) DEFAULT '미설정');  
// 성별 추가 할 때 제약조건 이름 변경과 CHECK 제약조건 지정
ALTER TABLE TBL_USERALTER ADD(GENDER VARCHAR2(10) CONSTRAINT GENDER_CK CHECK(GENDER IN('남','여')));

// ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건설정
// 처음에 만들었을 때 제약조건 설정못한 컬럼에 제약조건 추가하기
ALTER TABLE TBL_USERALTER ADD CONSTRAINT USERID_UQ UNIQUE(USER_ID); // USER_ID에 UNIQUE 제약조건 설정

// NOT NULL 제약 조건은 이미 컬럼에 NULLABLE로 설정이 되어있기 때문에 ADD가 아닌 MODIFY 변경으로 해줘야한다
ALTER TABLE TBL_USERALTER MODIFY USER_PWD CONSTRAINT USER_PWD_NN NOT NULL;
// 컬럼 수정하기 -> 컬럼의 타입, 크기를 변경하는 것
ALTER TABLE TBL_USERALTER MODIFY GENDER CHAR(10); // GENDER 컬럼 타입과 크기 변경

// 제약조건 수정하기
MODIFY USER_PWD CONSTRAINT USER_PWD_UQ UNIQUE; // USER_PWD 컬럼 제약조건 명과 제약조건 바꾸기

// 컬럼명 변경하기
// ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 새 컬럼명
ALTER TABLE TBL_USERALTER RENAME COLUMN USER_ID TO USERID; // USER_ID 컬럼을 USERID로 컬럼명 변경

// 제약조건명 변경하기
// ALTER TABLE 테이블명 RENAME CONSTRAINT 제약조건명 TO 새제약조건명
ALTER TABLE TBL_USERALTER RENAME CONSTRAINT SYS_C007433 TO USERALTER_PK;
// SYS_C007433 제약조건 명을 USERALTER_PK로 바꿈

//컬럼 삭제하기
// ALTER TABLE 테이블명 DROP 컬럼명;
ALTER TABLE TBL_USERALTER DROP COLUMN EMAIL;  // EMAIL 컬럼 삭제

// 제약조건 삭제하기
// ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
ALTER TABLE TBL_USERALTER DROP CONSTRAINT USERALTER_PK; 
// USERALTER_PK 의 이름인 제약조건 제거


// 테이블 삭제하기
DROP TABLE TBL_USERALTER;
// 테이블 삭제할 때 FK 제약조건이 설정되어 있다면 기본적으로 삭제가 불가능함
ALTER TABLE EMP_COPY ADD CONSTRAINT EMP_ID_PK PRIMARY KEY(EMP_ID); -- 외래키로 참조하기 위해서 기본키로 설정 
CREATE TABLE TBL_FKTEST( -- FK 조건만들기 위해 테이블 하나 생성
    EMP_ID VARCHAR2(20) CONSTRAINT FK_EMPID REFERENCES EMP_COPY(EMP_ID),
    CONTENT VARCHAR2(20)
);

DROP TABLE EMP_COPY; -- 외래키에 의해 참조되는 고유/기본 키가 테이블에 있습니다 라는 문구가뜸 

// 옵션을 설정해서 삭제할 수 있다. [CASCADE CONSTRAINTS]
// FK 조건이라도 삭제함
DROP TABLE EMP_COPY CASCADE CONSTRAINTS;

✅ TRUNCATE (TABLE)

  • 테이블의 모든 데이터를 삭제 (테이블을 최초 상태로 만들어줌)
  • 테이블은 남아 있음
TRUNCATE TABLE 테이블명;

✅ DROP (TABLE)

  • 테이블 완전 삭제
  • 테이블의 모든 데이터 뿐만 아니라 구조, 인덱스, 제약조건 다 삭제
DROP TABLE 테이블명;

✅ 테이블 데이터 삭제 명령어 비교


profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글