70. [SQL]_(09) DDL (Data Definition Language) ALTER, DROP

hyunsoda·2024년 3월 13일

DB

목록 보기
10/11
post-thumbnail

⚒️ALTER

  • 테이블에 정의된 내용을 수정할 때 사용하는 데이터 정의어로 컬럼의 추가/삭제, 제약조건의 추가/삭제, 컬럼의 자료형 변경, DEFAULT 값 변경, 테이블 명/컬럼 명/제약조건 명 변경 등을 할 수 있음

테이블에서 수정할 수 있는 것
1) 제약 조건(추가/삭제) -> 이미 만들어진 것 수정은 안됨
2) 컬럼(추가/수정/삭제)
3) 이름변경 (테이블명, 컬럼명..)

제약조건 (추가/삭제)

작성법
1) 추가 :
ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명] 제약조건(지정할 컬럼명)
[REFERENCES 테이블명 [(컬럼명)]]; <== FK인 경우 추가
2) 삭제 :
ALTER TABLE 테이블명 DROP CONSTARINT 제약조건명;

별 : 제약조건 자체를 수정하는 구문은 별도로 존재하지 않음
--> 삭제 후 추가를 해야함

DEPT_COPY의 DEPT_TITLE 컬럼에 NOT NULL 제약조건 추가/삭제

  • NOT NULL 제약조건은 새로운 조건을 추가하는 것이 아닌 컬럼 자체에 NULL 허용 / 비허용을 제어하는 성질 변경의 형태로 인식됨
  • MODIFY 구문을 사용해서 NULL 제어

컬럼 (추가/수정/삭제)

컬럼 추가

ALTER TABLE 테이블명 ADD(컬럼명 데이터타입 [DEFAULT '값']);

컬럼 수정

ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입; --> 데이터 타입 변경

ALTER TABLE 테이블명 MODIFY 컬럼명 DEFAULT '값'; --> DEFAULT 값 변경

컬럼 삭제

ALTER TABLE 테이블명 DROP (삭제할 컬럼명);
ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;

테이블의 모든 열 삭제 가능할까?

  • 테이블이란 ? 행과 열로 이루어진 DB의 가장 기본적인 객체
  • 테이블은 최소 1개 이상의 컬럼이 존재해야 되기 때문에 모든 컬럼을 다 삭제할 순 없다.

이름 변경 (컬럼, 테이블, 제약조건명)

1) 컬럼명 변경

ALTER TABLE 테이블명 RENAME COLUMN 원래 컬럼명 TO 바꾸려는 컬럼명;

2) 제약조건명 변경

ALTER TABLE 테이블명 RENAME CONSTRAINT 원래 제약조건명 TO 바꾸려는 제약조건명;

3) 테이블명 변경

ALTER TABLE 테이블명 RENAME TO 바꾸려는 테이블명

DROP

  • 데이터베이스 객체를 삭제하는 구문

DROP TABLE 테이블명 [CASCADE CONSTRAINTS];

관계가 형성되지 않은 테이블 삭제

DROP TABLE 테이블명;

관계가 형성된 테이블 삭제

해결방법
1) 자식, 부모테이블 순서로 삭제
2) ALTER를 이용해서 FK 제약조건 삭제 후 부모 테이블 삭제
3) DROP TABLE 삭제옵션 CASCADE CONSTRAINTS 사용
-> CASCADE CONSTRAINTS : 삭제하려는 테이블과 연결된 FK 제약조건을 모두 삭제

DROP TABLE 테이블명 CASCADE CONSTRAINTS;

DDL 주의 사항
1) DDL은 COMMIT/ROLLBACK이 되지 않는다.
➡️ ALTER, DROP을 신중하게 진행해야 함
2) DDL과 DML 구문 섞어서 수행하면 안된다
➡️ DDL은 수행 시 존재하고 있는 트랜잭션을 모두 DB에 강제 COMMIT 시킴
➡️ DDL이 종료된 후 DML 구문을 수행할 수 있도록 권장

0개의 댓글