[Oracle] 2020.12.23. day_43 alter, CRUD, grant, revoke

2020. 12. 23. 14:41Web_Back-end/Oracle

◎ alter 

  alter
  DDL
  테이블 조작, 계정처리, 제약사항을 처리할 수 있다
테이블 조작 컬럼의 데이터형 변경 (또는 데이터형의 크기) , 변경컬럼 추가 , 컬럼삭제
제약사항  
계정처리  

○ 1. 테이블 조작

 

  • 1. 컬럼의 데이터형 변경 _ modify
    • 레코드가 존재하지 않으면 데이터형까지 변경가능하다
    • 레코드가 존재하면 동일 데이터형의 크기만 변경가능하다
문법 ) 1. 컬럼의 데이터형 변경


alter table 테이블명 modify 컬럼명 데이터형(크기) 컬럼단위 제약사항
test_alter 테이블에 레코드가 존재한다 따라서 데이터형은 변경할 수 없음을 알 수 있다
컬럼 데이터형 크기를 변경할 때에도, 입력된 레코드의 길이를 확인해야한다
제약사항을 설정할 때에도, 컬럼에 값이 존재하면 제약사항에 위배되는 값이 있는지 먼저 확인해야한다
  • 2. 컬럼 추가 _ add
    • 추가되는 컬럼은 제일 마지막에만 추가가능
문법) 2. 컬럼추가

alter table 테이블명 add 컬럼명 데이터형(크기) 컬럼단위 제약사항
  • 3. 컬럼 삭제 _ drop column
문법) 3. 컬럼삭제

alter table 테이블명 drop column 컬럼영
  • 4. 테이블명, 컬럼명 변경 _ rename ( column ) to
문법) 4. 컬럼명 변경

alter table 테이블명 rename to 변경할테이블명;
alter table 테이블명 rename column 이전컬럼명 to 변경할컬럼명;

○ 2. 제약사항 설정

 

  • 1. 제약사항 추가 _ add constraint
    • 테이블단위 제약사항의 문법사용
문법) 1.

alter table 테이블명 add constraint 제약사항명 제약사항(적용컬럼);
  • 2. 제약사항 삭제 _ drop constraint
문법) 2.

alter table 테이블명 drop constraint 제약사항명;
  • 3. 제약사항 활성화 (비활성화) _ enable (disable) constraint
    • 비활성화 후 활성화를 하려면 컬럼의 값이 제약사항에 위배되는 값이 없어야한다
문법) 3.

alter table 테이블명 enable constraint 제약사항명; //활성화
alter table 테이블명 disable constraint 제약사항명; //비활성화
제약사항에 위배되는 값이 있을 때에는 활설화 불가 -> delete한 후에 활성화해야한다

○ 3. 계정처리 , 관리 _ 관리자계정만 가능

 

  • 관리자계정만 가능 _ scott연습계정으로 불가
  • 관리자계정 sqlplus "/as sysdba" 접속(dos) 또는 생성한 id/pw
  • 계정생성(생성된 계정은 접속 및, DBMS의 사용할 수 없다)
  • Oracle 12c 부터는 계정명 앞에 c##형태로 시작해야한다
  • c## 형식의 계정을 사용하지 않으려면,   "_ORACLE_SCRIPT"  를 활성화해야한다
c## 형식 계정 사용하지 않는 방법

alter session set "_ORACLE_SCRIPT" = true;
  • 1. 계정생성 _ create (DDL)
문법) 1.

create user 계정명 identified by 비번;

  • 여기까지 진행하면 아직 접속할 수 없다

alter session set "_ORACLE_SCRIPT" = true;

create user nhj identified by 1234;

 

  • 2. 생성된 계정에 권한 부여
    • connect : 접속권한 - 접속은 가능하나 DB를 사용할 수는 없다
    • resource : DBMS를 사용할 수 있는 권한
    • create : 생성권한
    • dba : dba권한 - 모든걸 할 수 있는 권한
문법) 2.

grant 권한,,, to 계정;
  • 여기까지 진행하면 접속은 가능하지만, tablespace 사용권한이 없다

--c## 으로 시작하는 계정이 아닌 계정 생성

alter session set "_ORACLE_SCRIPT" = true;

create user nhj identified by 1234;


--생성된 계정에 접속, DBMS사용권한 주기
grant connect, resource to nhj;

--생성된 계정으로 접속 수행
create table test(name varchar2(10));

 

  • 12c 부터는 resource 권한 이후에 tablespaces 사용권한을 alter로 변경해야한다

문법)

alter user 계정명 default tablespace 테이블스페이스명 quota unlimited on 테이블

--c## 으로 시작하는 계정이 아닌 계정 생성

alter session set "_ORACLE_SCRIPT" = true;

create user nhj identified by 1234;

select * from dba_users;

--생성된 계정에 접속, DBMS사용권한 주기
grant connect, resource to nhj;

--생성된 계정이 사용할 tablespace 설정
alter user nhj default tablespace users quota unlimited on users;


--생성된 계정으로 접속 수행
create table test(name varchar2(10));

○ 계정 비밀번호 변경

  • 모든 계정이 접속계정의 비번변경을 할 수 있다 (자신의 계정)
  • 관리자는 모든계정비번 변경가능
alter user 계정명 indentified by 비번;

○ 계정 풀기 or 잠금

alter user 계정명 account lock;
alter user 계정명 account unlock;

계정삭제

  • 12c 부터는 "_ORACLE_SCRIPT" = ture 을 수행한 후 사용해야한다
  • 계정정보는 dba_users에서 확인가능
  • 접속중인 계정은 삭제불가
  • 접속이 종료된 계정만 삭제할 수 있다
문법) 
계정이, 생성한 Oracle Object 없을 때
drop user 계정명

계정이, 생성한 Oracle Object 있을 때
alter session set "_ORACLE_SCRIPT" = true;
drop user 계정명 cascade;


 


◎ CRUD (Create Read Update Delete)

  CRUD (Create Read Update Delete)
  DB작업의 모든 것을 줄여서 부르는 이름
create create, insert 
read select
update update, alter, grant
delete drop, delete, truncate, revoke

◎ grant

 DCL  grant
  권한 부여
문법) grant 권한,,, to 계정;

계정으로 권한을 부여할 수 있다

 

◎ revoke

 DCL  revoke
  권한 회수
  관리자 계정만 권한을 회수할 수 있다
문법)  revoke 회수할권한,,,, from 계정명;

계정명으로부터 권한을 회수할 수 있다