본문 바로가기
데이터베이스/SQL

SQLD 를 위한 SQL기본문법 정리 5 - DDL, 테이블 변경

by ADELA_J 2024. 2. 14.

<ALTER>

- 테이블 변경

- 컬럼의 추가/삭제/수정, 제약 조건의 추가/삭제

ALTER TABLE PLAYER_TEMP

 

뒤에 ADD가 오냐, MODIFY가 오냐 RENAME이 오냐에 따라 수정됨

 

<컬럼의 추가, ADD>

- 새로 추가한 컬럼은 테이블의 맨 마지막에 추가됨

ALTER TABLE PLAYER_TEMP ADD (ADDRESS VARCHAR2(80));

 

<컬럼의 삭제 DROP COLUMN>

- drop후에 최소 1개 이상의 컬럼이 남아있어야함. 

ALTER TABLE PLAYER_TEMP DROP COLUMN ADDRESS;

 

<컬럼명 변경 RENAME COLUMN>

- 이름만 바꾸고 모든 정의가 그대로 유지됨

ALTER TABLE PLAYER_TEMP RENAME COLUMN PLAYER_ID TO PLAYER_NEW_ID;

 

<컬럼 정의 수정 MODIFY>

- 이미 입력되어 있는 값에 영향을 미치는 변경은 허용하지 않음

- 데이터 타입 변경 ( 테이블에 아무 행이 없고, NULL만 갖고 있을때 가능)

- 컬럼 크기 변경  (크기 확대 : 항상 가능 /

축소 : 아무 행도 없거나, 컬럼이 NULL만 갖고 있거나, 저장된 값을 수용할 수 있는 크기로만 축소가능)

- default 값 추가 및 수정 ( 이후 삽입되는 행에만 영향 미침)

- NOT NULL 제약 조건 추가 (테이블에 아무 행 없거나, NULL이 없을때만 가능)

   : 삭제 (항상 가능)

   : 추가 / 삭제 

ALTER TABLE 테이블명 MODIFY (속성명 NOT NULL / NULL);

 

Q. PLAYER_TEMP 테이블에서 PLAYER_NAME 속성이 NULL 값을 허용하도록 정의 변경

ALTER TABLE PLAYER_TEMP MODIFY (PLAYER_NAME NULL);

 

 

<제약 조건의 추가/삭제 ADD/DROP CONSTRAINT>

- 테이블 생성 이후에도 제약 조건을 추가/삭제 할 수 있음.

ALTER TABLE PLAYER_TEMP(테이블명)
ADD CONSTRAINT PLAYER_TEMP_FK(constraint 이름)
FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);

ALTER TABLE PLAYER_TEMP
DROP CONSTRAINT PLAYER_TEMP_FK;

 

Q. PLAYER_TEMP에서 PLAYER_NEW_ID를 PK로 정하기

ALTER TABLE PLAYER_TEMP
ADD CONSTRAINT PLAYER_TEMP_PK PRIMARY KEY (PLAYER_NEW_ID);

 

<RENAME>

- 테이블 이름 변경

RENAME 기존 테이블명 TO 새로운 테이블명

RENAME PLAYER_TEMP TO OLD_PLAYER;

 

<사용자 생성 객체의 확인>

SELECT * FROM USER_OBJECTS;

--테이블을 불러오려면 WHERE문으로 TABLE만 불러오기
SELECT *
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE';

 

<테이블 삭제>

DROP TABLE TEAM;

- 만약 제약 조건으로 인해 삭제가 안되어서 오류가 생긴다면,

DROP TABLE TEAM
CASCADE CONSTRAINT;

 

제약 조건도 함께 삭제 해주면 된다.