09_DDL (ALTER , DROP)

Hyunny ·2023년 5월 24일
0

SQL

목록 보기
9/11
post-thumbnail

📌 ALTER : 바꾸다, 변조하다, 수정하다

  • 수정가능한것 : 컬럼(추가/수정/삭제), 제약조건(추가/삭제), 이름변경(테이블, 컬럼, 제약조건)
  • ALTER TABLE 테이블명 ADD | MODIFY | DROP 수정할 내용

🔊 제약조건 추가 / 삭제

  • [제약 조건 추가]
    ALTER TABLE 테이블명 ADD 제약조건(컬럼명)
  • [제약 조건 삭제]
    ALTER TABLE 테이블명 DROP 제약조건(컬럼명)

💡 NOT NULL 제약조건 추가 / 삭제

  • NOT NULL 제약조건은 다루는 방법이 다름
  • NOT NULL은 기존 컬럼의 성질을 변경하는 것으로 인식됨 (MODIFY)

🔊 컬럼 추가/수정/삭제

  • [컬럼 추가]
    ALTER TABLE 테이블명 ADD (컬럼명 데이터타입 [DEFAULT '값'])
  • [컬럼 수정]
    ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입; (데이터 타입 변경)
    ALTER TABLE 테이블명 MODIFY 컬럼명 DEFAULT '값'; (기본값 변경)
  • 데이터 타입 수정 시 컬럼에 저장된 데이터 크기 미만으로는 변경할 수 없다.
  • [컬럼 삭제]
    ALTER TABLE 테이블명 DROP (삭제할컬럼명)
    ALTER TABLE 테이블명 DROP COLUNM 삭제할컬럼명;

💡 주의 사항 : DDL / DML을 혼용해서 사용할 경우 발생하는 문제점

  • DML을 수행하여 트랜젝션에 변경사항이 저장된 상태에서 COMMIT/ROLLBACK 없이 DDL구문을 수행하게 되면 DML이 자동으로 COMMIT되어버림
    -> DDL이 DB까지 밀고 나가는 과정에서 트랜젝션 함께 DB까지 가게 되어버림
    --> 결론 : DML과 DDL을 혼용해서 사용하지 말 것 !

🔊 테이블 삭제

  • [작성법]
    DROP TABLE 테이블명 [CASCADE CONSTRAINTS]
  • 일반 삭제
    DROP TABLE DEPT_COPY;
  • 관계가 형성된 테이블 삭제 (외래키에 묶여있는 애들)
    해결방법 1 : 자식->부모 테이블 순서대로 삭제하기
    해결방법 2 : CASCADE CONSTRAINTS 옵션 사용
  • CASCADE CONSTRAINTS : 제약조건까지 모두 삭제

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

- [작성법]
ALTER TABLE 테이블명 RENAME COLUMN | CONSTRAINT | TO 변경명

profile
개발 learning ... 📝

0개의 댓글