티스토리 뷰

DB/SQL

SQL - 테이블 변경 / 데이터 사전

xoo | 수진 2023. 8. 1. 17:37

테이블 (Table) 변경

  • 생성된 테이블에 대한 구조를 변경
  •  컬럼의 추가,삭제 및 컬럼의 타입이나 길이 변경, 제약조건 추가,삭제

 

 

 

1. 컬럼 추가

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

 

 

 

2. 컬럼 변경

  • 컬럼에 대해서 데이터 타입이나 크기, DEFAULT 값을 변경 할 수 있다.
  • 숫자 및 문자 컬럼의 전체 길이를 증가 또는 축소 시킬 수도 있으며 데이터 타입 변경도 가능하다.
  • 단 모든 행의 컬럼이 널 (null)이거나 행이 없는 경우에만 컬럼 길이 축소와 데이터 타입 변경이 가능하다.
ALTER TABLE 테이블명
MODIFY ( 컬럼명 데이터타입 [, 컬럼명 데이터타입]);

 

 

 

 

3. 컬럼 삭제

  • 컬럼은 값의 존재여부와 상관없이 무조건 삭제된다.
  • 한꺼번에 여러 개의 컬럼들을 동시에 삭제할 수도 있으나 반드시 최소한 하나의 컬럼은 존재해야 된다.
ALTER TABLE 테이블명
DROP ( 컬럼명 [,컬럼명] );

 

 

 

 

4. 제약 조건 추가

  • 기존 테이블에 제약조건을 추가하기 위해서는 ALTER TABLE 명령어를 사용한다.
  • NOT NULL 제약조건을 제외한 나머지 제약조건(PRIMARY KEY,UNIQUE, CHECK<, FOREIGN KEY)은 ALTER TABLE ADD 문을 사용
  •  NOT NULL 제약조건은 ALTER TABLE MODIFY 문을 사용한다.
  • ADD는 TABLE레벨 문법인데 NOT NULL은 컬럼레벨 문법밖에 못써서 MODIFY문을 사용한다 !
-- NOT NULL 제외한 기본 문법
ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명] 제약조건타입(컬럼명);

 

 

-- 나중에 제약조건 추가 (NOT NULL 제외)
ALTER TABLE dept03
ADD CONSTRAINT dept03_deptno_pk PRIMARY KEY(deptno);     -- PRIMARY KEY 추가

ALTER TABLE dept03
ADD CONSTRAINT dept03_loc_uk UNIQUE(loc);     -- UNIQUE KEY 추가

 

-- NOT NULL 제약조건을 추가하는 기본 문법
-- NULL => NOT NULL은 추가작업이 아닌 변경작업
ALTER TABLE 테이블명
MODIFY ( 컬럼명 데이터타입 [CONSTRAINT 제약조건명] NOT NULL )

 

 

 

 

5. 제약 조건 삭제

  • 기존 테이블의 제약조건을 삭제하기 위해서는 제약조건명을 이용하여 ALTER TABLE DROP 문을 작성해야 된다.
  • 기본적으로 제약조건명을 이용하여 제약조건을 삭제하지만
  • 기본 키(PRIMARY KEY)와 UNIQUE는 제약조건명 없이 PRIMARY KEY와 UNIQUE 키워드만 사용하여 삭제할 수 있다.
ALTER TABLE 테이블명
DROP PRIMARY KEY|UNIQUE(컬럼)|
 CONSTRAINT 제약조건명 [CASCADE];

ex)

-- PRIMARY KEY 삭제
ALTER TABLE dept03
DROP PRIMARY KEY;

-- UNIQUE 삭제
ALTER TABLE dept03
DROP UNIQUE(loc);

-- NOT NULL 삭제
ALTER TABLE dept03
DROP CONSTRAINT dept03_dname_nn;

 

 

 

 

6. CASCADE 옵션

 

  • 앞서 사용했던 dept 테이블과 emp 테이블 관계를 다시 생각해보자.
  • 부모 테이블인 dept를 자식 테이블 emp가 외래키로 참조하는 구조이다.
  • 이때 만약 부모 테이블의 기본 키를 삭제 하면 ‘참조 무결성’ 제약조건에 위배되어 에러가 발생된다.
ALTER TABLE dept05
DROP PRIMARY KEY;     -- 에러

 

  • 부모 테이블의 제약조건 삭제시 자식 테이블의 FOREIGN KEY 제약조건을 연쇄적으로 삭제하기 위해 CASCADE 옵션을 사용한다.
ALTER TABLE dept05
DROP PRIMARY KEY CASCADE;

 

ex)

SELECT *
FROM user_constraints
where table_name='M2';

SELECT *
FROM user_constraints
where table_name='S2';

-- M2의 PRIMARY KEY 삭제
-- S2가 참조하고 있기 때문에 에러발생
-- 해결 : ON DELETE CASCADE (자식까지 함께 삭제)
--        ON DELETE 
ALTER TABLE M2
DROP PRIMARY KEY;

-- M2의 PRIMARY KEY 삭제
ALTER TABLE M2
DROP PRIMARY KEY CASCADE;

 

 

 


 

 

데이터 사전 (Data Dictionary)

  • 데이터베이스와 관련된 정보를 제공하기 위한 읽기 전용 테이블과 뷰의 집합
  • 데이터 사전은 사용자가 테이블을 생성하거나 사용자 변경 같은 작업을 할 때 오라클에 의해서 자동으로 갱신되는 테이블로서 사용자가 직접 내용을 수정하거나 삭제할 수 없다.
< 데이터 사전에 저장되는 대표적인 정보 목록>

■ 데이터베이스의 물리적 구조 또는 객체의 논리적 구조 정보
■ 오라클 사용자명과 스키마 객체명 정보
■ 각 사용자에게 부여된 권한과 롤(role) 정보
■ 무결성 제약조건에 대한 정보
■ 컬럼에 대한 기본값 정보
■ 스키마 객체에 할당된 영역의 크기와 현재 사용중인 영역의 크기 정보
■ 데이터베이스명,버전,생성날짜,시작모드,인스턴스 명과 같은 일반적인 데이터베이스 정보

 

위의 정보들은 매우 중요한 정보이기 때문에 사용자는 데이터 사전 테이블에 직접 접근하지 못하고
SELECT 명령문만 실행이 가능한 뷰(view)를 제공한다.
이렇게 제공된 뷰를 ‘데이터 사전 뷰’ 라고 부른다.

 


user_constraints
user_tables
user_views
user_indxes
user_sequences

 

'DB > SQL' 카테고리의 다른 글

SQL - 인덱스  (0) 2023.08.01
SQL - 뷰, 시퀀스, 시노님  (0) 2023.08.01
SQL - DDL  (0) 2023.07.31
SQL - DML  (0) 2023.07.31
SQL - 다중 컬럼 서브쿼리 / 인라인 뷰  (0) 2023.07.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함