지난번에는 DDL 중 CREATE를 먼저 공부해봤는데, 나머지 ALTER과 DROP에 대해서 공부해보겠다
✅ ALTER
// 생성된 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 테이블명;
✅ 테이블 데이터 삭제 명령어 비교