관리 메뉴

오버플로

[Oracle] alter 본문

Oracle

[Oracle] alter

NACO 2021. 9. 29. 21:07

 alter 

- DDL

- 테이블의 관리, 제약사항 관리, 계정관리를 할 수 있는 쿼리 (자주 쓰임!!!)

 

 

1. 테이블의 관리

- 컬럼 추가, 컬럼테이터형 변경, 컬럼 삭제, 컬럼명 변경, 테이블명 변경

- 문법) alter table 테이블명 작업…;

 

** 컬럼 관리의 경우 주의할 점 :

① 제약사항을 붙여서 추가/변경 등 할 수 있으나 레코드의 구성이 제약사항에 위배된다면 추가할 수 없음

② 컬럼 데이터형 변경이나 컬럼명의 경우 기존 데이터 값에 따라 될수도 안 될수도 있음

 

1) 컬럼 추가

 - 추가된 컬럼은 제일 마지막에 추가됨

 - 문법) alter table 테이블명 add 컬럼명 데이터형(크기) 컬럼단위 제약사항;

2) 컬럼 데이터형 변경

- 레코드가 존재하지 않으면 데이터 형 자체를 변경할 수 있음

- 레코드가 존재하면 동일 데이터형에서 크기만 변경할 수 있음

   > 크기를 줄이는 것은 기존 컬럼 값의 크기에 따라 될 수도 안 될수도 있음.

 - 문법) alter table 테이블명 modify 컬럼명 데이터형(크기) 컬럼단위 제약사항;

3) 컬럼 삭제

  - 컬럼에 설정된 제약사항도 같이 삭제됨

  - 법) alter table 테이블명 drop column 컬럼명;

4) 컬럼명 변경

  - 테이블의 다른 컬럼명과는 다르게 변경

  - 문법) alter table 테이블명 rename column 원본컬럼명 to 변경할 컬럼명;

5) 테이블명 변경

 - 문법) alter table 원본테이블명 rename to 변경할 테이블명;

 

 

2. 제약사항 관리

- 제약사항 추가, 삭제, 활성화, 비활성화

- 제약사항의 활성화(enable), 비활성화(disable) 상태는 user_constraints의 status 컬럼에서 확인 가능

 

1) 제약사항 추가

- 테이블단위 제약사항 문법으로 추가함

- 문법) alter table 테이블명 add constraint 제약사항명 제약사항종류 (적용컬럼);

2) 제약사항 삭제

  - PK를 지우면 pk 설정시 따라오는 not nul도 같이 지워짐

- 문법) alter table 테이블명 drop constraint 제약사항명;

3) 제약사항 활성화/비활성화

- 주의) 비활성화 후 활성화를 할 때, 컬럼 값의 상황에 따라 활성화가 되지 않을 수도 있음

- 문법) alter table 테이블명 상태 constraint 제약사항명;

 > 상태에 enable 기입 : 활성화 / 컬럼에 설정된 제약사항을 체크함

 > 상태에 disable 기입 : 비활성화 / 컬럼에 설정된 제약사항을 체크하지 않음
      (제약사항이 PK인데 비활성화 되어있으면 중복값도 추가 가능해짐)

 

 

3. 계정 관리

- 계정 잠그거나 열기, 계정의 비밀번호 변경

1) 계정의 비밀번호 변경

- 모든 계정이 가능 (관리자는 다른 계정의 비밀번호를 변경(=재설정)할 수 있음)

- 문법) alter user 계정명 identified by 비번;

2) 계정을 잠그거나 열기

- 관리자 계정만 가능 (관리자 계정으로 로그인 한 후 다른 계정을 잠그거나 열 수 있음)

- 연습해볼 때는 login을 관리자계정으로 하고 해보자 (id : system / pw : managerjang)

- 문법) alter user 계정명 account lock | unlock;

 

 

** dba_users data dictionary : 계정에 대해 조회할 수 있는 data dictionary

 

 


# 오늘의 코딩 #

- alter를 사용해보자

 

#컬럼명 변경하기

--table 생성
select * from emp;
create table test_emp as (select * from emp);

--alter로 컬럼명 변경 (ename -> name)
alter table test_emp rename column ename to name;

#출력 결과#

<기존 테이블>

<변경된 테이블>

=> 컬럼명 변경 완료!

 


#PK 제약사항 추가하기

-- alter로 empno에 PK 제약사항 추가
alter table test_emp add constraint pk_test_emp primary key (empno);

-- 제약사항 조회
select *
from   user_constraints
where table_name='TEST_EMP';

#출력 결과#

=> user_constraints 딕셔너리 조회 결과 

     PK가 잘 들어가 있당!

'Oracle' 카테고리의 다른 글

[Oracle] sequence  (0) 2021.09.30
[Oracle] 제약사항 (Constraint)  (0) 2021.09.28
[Oracle] union / join / driving table  (0) 2021.09.26
[Oracle] subquery / Scalar subquery / inline view  (0) 2021.09.24
[Oracle] function(함수)  (0) 2021.09.20
Comments