Deeb
디비의 DB
Deeb
전체 방문자
오늘
어제
  • 분류 전체보기 (243)
    • Frontend (63)
      • HTML & CSS (27)
      • JavaScript (17)
      • jQuery (8)
      • React (6)
    • Backend (98)
      • Java (19)
      • JDBC (2)
      • Servlet & JSP (13)
      • Spring (17)
      • Project (0)
      • 개발 공부 (11)
      • 문제 풀이 (8)
      • Algorithm (1)
      • DataBase (0)
      • Oracle (18)
      • Error (8)
    • Knou (1)
    • Review (14)
    • TIL (33)
    • 삽질기록 (8)
    • deebtionary (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 삭제
  • 함수
  • 자바
  • css
  • 리액트
  • 정처기
  • 책
  • 서평단
  • 추천
  • 방송대
  • DBMS
  • 다형성
  • 방통대
  • 클래스
  • 배열
  • alter
  • 후기
  • CLASS
  • 기초
  • Java
  • For
  • HTML
  • GIT
  • 정의
  • js
  • 에러
  • 2학기
  • 공부
  • 한빛미디어
  • DB

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Deeb

디비의 DB

Backend/Oracle

[DB] DDL :: ALTER , DROP

2021. 9. 28. 17:33

✍ALTER

:  객체를 수정하는 구문

 

표현식

테이블 객체 수정 
ALTER TABLE 테이블명 수정할 내용;

👉수정할 내용

  • 컬럼 추가/수정/삭제, 제약조건 추가/삭제
  • 컬럼 자료형 변경, DEFAULT값 변경
  • 테이블명 변경, 컬럼명, 제약조건 이름 변경

🚩 1. 컬럼 추가, 수정, 삭제


1)  컬럼 추가(ADD)

ALTER TABLE 테이블명
ADD (새로운컬럼명 데이터타입(크기))

➡ ADD 뒤에 COLUMN 생략가능

➡ 새로운 컬럼이 추가되었지만 데이터는 없기 때문에  값이 NULL이다. 

1-1)  컬럼 추가 시 DEFAULT값 지정

ALTER TABLE 테이블명
ADD (새로운컬럼명 데이터타입(크기) DEFAULT 기본값)

2) 컬럼 수정(MODIFY)

데이터 타입, 기본값(DEFAULT) 수정
ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입(크기)

특징

  • 컬럼의 크기를 줄일 경우에는 기록된 값이 변경하려는 크기를 초과하는 값이 없을 때에만 변경할 수 있다.

2-1) 컬럼 DEFAULT 값 변경하기 

데이터 타입, 기본값(DEFAULT) 수정
ALTER TABLE 테이블명
MODIFY 컬럼명 DEFAULT 기본값;

 

2-2) 여러 컬럼 한 번에 수정하기

데이터 타입, 기본값(DEFAULT) 수정
ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입(크기)
MODIFY 컬럼명 DEFAULT 기본값;

➡ 구분하는 , (콤마)기호가 없다!


3) 컬럼 삭제

데이터가 기록 되어 있어도 삭제 가능
삭제된 컬럼은 복구 안됨

특징

  • 테이블에는 최소 한 개의 컬럼이 존재해야 한다 : 모든 컬럼 삭제 불가
  • DROP은 DDL이기 때문에 COMMIT, ROLLBACK불가
ALTER TABLE 테이블명
DROP COLUMN 삭제할 컬럼명

 

3-1) 제약조건이 설정되어있는 컬럼 삭제 시 주의 사항과 삭제 방법

컬럼 삭제 시 참조하고 있는 컬럼이 있다면 컬럼 삭제 불가능
ALTER TABLE 테이블명
DROP [COLUMN] PRIMARYKEY이름;
➡ ORA-12992: cannot drop parent key column

4) CASCADE CONSTRAINTS 옵션

FK 제약조건을 무시하고 컬럼을 삭제하는 옵션 
ALTER 테이블명
DROP COLUMN PRIMARYKEY이름 CASCADE CONSTRAINTS;

🚩2. 제약 조건 추가, 삭제

  • 제약 조건 추가 : ADD CONSTRAINT 제약조건명 제약조건(컬럼명)
  • 제약 조건 삭제 : DROP CONSTRAINT 제약조건명
  • 추가 . 제약 조건을 수정하는 구문이 없다. 

 

1)  제약 조건 추가 

-- PK 제약 조건 추가
ALTER TABLE DEPT_COPY
ADD PRIMARY KEY(DEPT_ID);   -- 제약조건명이 무작위로 지정됨

-- UNIQUE 제약조건 추가
ALTER TABLE DEPT_COPY
ADD CONSTRAINT DEPT_COPY_U UNIQUE(DEPT_TITLE); -- 제약조건명 지정

-- CHECK 제약 조건 추가
ALTER TABLE DEPT_COPY
ADD CONSTRAINT LNAME_CHECK CHECK(LNAME IN('한국', '미국', '중국') );

-- NOT NULL 제약조건 추가 (잘 구분해서 알아둘 것)
ALTER TABLE DEPT_COPY
--ADD DEPT_TITLE NOT NULL; --> 컬럼 추가 구문으로 인식된다. NOT NUL은 ADD로 추가하지 않는다.
-- ORA-02263: need to specify the datatype for this column

MODIFY DEPT_TITLE NOT NULL; -- ADD대신 MODIFY 사용
--> NULL 저장 가능 여부를 변경하는 것이다.

 

2)  제약 조건 삭제

ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;

- NOT NULL 제약조건 삭제
ALTER TABLE  테이블명
DROP CONSTRAINT SYS_C007145; 

-> 제약조건명 

- NOT NULL 제약조건 삭제방법2
ALTER TABLE 테이블명
MODIFY 컬럼명 CONSTRAINT SYS_C007147 NULL;

--> DEPT_TITLE 컬럼에 지정된 제약조건 SYS_C007147(NOT NULL)을  NULL 허용으로 변경
-- NOT NULL 제약조건 추가, 제거 방법만 독특하다

🚩 컬럼, 제약조건, 테이블 이름 변경 

1)  컬럼 이름 변경

ALTER TABLE 테이블명
RENAME COLUMN 컬럼명 TO 변경명;

2)  제약조건 이름 변경

ALTER TABLE 테이블명
RENAME CONSTRAINT 제약조건명 TO 변경명;

3) 테이블명 변경(RENAME [테이블명] TO 변경명)

ALTER TABLE 테이블명
RENAME [테이블명] TO 변경명;

🚩 테이블 삭제

DROP TABLE 테이블명 [CASCADE CONSTRAINTS];

 

1)  참조 관계에서 부모테이블 삭제 시 발생하는 문제 및 해결방법 

예제. 두 개의 테이블 생성, 참조관계 설정
CREATE TABLE TB1(
    TB1_PK NUMBER PRIMARY KEY,
    TB1_COL NUMBER
);

CREATE TABLE TB2(
    TB2_PK NUMBER PRIMARY KEY,
    TB2_COL NUMBER REFERENCES TB1
);

➡  TB2 : 자식테이블 /  TB1 : 부모 테이블

 

2)  삭제 방법 1 : 자식 -> 부모 테이블 순서로 삭제하기

DROP TABLE TB2;
DROP TABLE TB1;

 

3) 삭제 방법 2 : CASCADE CONSTRAINTS; 

DROP TABLE TB1 CASCADE CONSTRAINTS;
DROP TABLE TB2;
반응형
저작자표시 비영리 변경금지 (새창열림)

'Backend > Oracle' 카테고리의 다른 글

[DB] VIEW, SEQUENCE, INDEX  (0) 2021.09.29
[DB] DCL :: 권한, 사용자 계정 생성하는 법  (0) 2021.09.28
[DB] TCL(TRANSGACTION CONTROL LANGUAGE)  (0) 2021.09.27
[DB] DDL : CREATE, 제약조건 CHECK  (0) 2021.09.27
[DB] DML (INSERT, UPDATE, MERGE, DELETE)  (0) 2021.09.25
    'Backend/Oracle' 카테고리의 다른 글
    • [DB] VIEW, SEQUENCE, INDEX
    • [DB] DCL :: 권한, 사용자 계정 생성하는 법
    • [DB] TCL(TRANSGACTION CONTROL LANGUAGE)
    • [DB] DDL : CREATE, 제약조건 CHECK
    Deeb
    Deeb

    티스토리툴바