Data Base/Oracle SQL

231018 Oracle SQL 'HR' 계정_생성, 삭제, 권한 부여, TABLE 생성

잇꼬 2023. 10. 18. 18:14
728x90
반응형
SMALL

■ 유저 관리
    a. 권한(prvilege) 
        1) 특정한 SQL 문을 수행할 수 있는 권리.
        2) 시스템권한 : 데이터베이스 영향을 줄 수 있는 권한.
        3) 객체권한 : 객체(테이블)를 사용할 수 있는 권한. EX) SELECT문
        4) ROLE(롤) : 유저에게 부여할 수 있는 권한을 모아 놓은 객체, 관리에 대한 편리성

# 본인이 DBA 로부터 직접 받은 시스템 권한을 확인

SELECT * FROM user_sys_privs;


# 본인이 '부여'하거나 '받은' 객체 권한을 확인

SELECT * FROM user_tab_privs;

# 본인이 받은 role에 대한 정보를 확인

SELECT * FROM session_roles;

# 본인이 받은 role 안에 시스템 권한 확인

SELECT * FROM role_sys_privs;

role 안에서 시스템 권한이 없어 확인되지 않는 것이다.


# 본인이 받은 role 안에 객체 권한 확인

SELECT * FROM role_tab_privs;

role 안에서 객체 권한이 없어 확인 되지 않는 것이다.


■ 유저 생성
# '본인' 계정 확인

SELECT * FROM user_users;

■ 권한 부여 
    DCL(Data Control Language) 
    a. GRANT
    b. REVOKE

# 객체 권한 부여

GRANT SELECT ON hr.departments TO insa;
GRANT INSERT, UPDATE, DELETE ON hr.employees TO insa;
SELECT * FROM user_tab_privs;

SELECT 문, INSERT 문, UPDATE 문, DELETE 문 의 권한만 부여 의미

# 객체 권한 회수

REVOKE SELECT ON hr.departments FROM insa;
SELECT * FROM user_tab_privs;


■ USER 삭제

오류발생: 접속중에는 삭제가 되지 않는다.

DROP USER insa CASCADE;

'CASCADE' 키워드를 작성해줘야 전부 삭제가 가능하다.

■ TABLE
    a. 행(ROW)과 열(COLUMN)으로 구성되어 있는 데이터의 저장구조
    
A. 데이블을 생성하려면 두가지를 체크해야 한다. 
    a. 테이블을 생성할 수 있는 권한. 
    
    b. 테이블을 저장할 수 있는 테이블스페이스 권한
    UNLIMITED TABLESPACE 시스템 권한  

SELECT * FROM user_sys_privs;

 SELECT * FROM role_sys_privs;

     
    'user_sys_privs' union 'role_sys_privs'    
   

SELECT * FROM session_privs; -- 'UNLIMITED TABLESPACE'


■ TABLE 이름, 컬럼명, 유저 이름, 다른 객체 이름, 제약조건 이름 
    a. 문자시작
    b. 문자의 길이 : 1~30 글자
    c. 문자, 숫자, 특수문자(_, $, #) 가능하나, 숫자가 먼저 올 수 없다.
    b. 대소문자는 구분하지 않는다. 
    e. 동일한 유저가 소유한 객체 이름은 중복할 수 없다. 

 

■ 컬럼 타입
    a. NUMBER(p, s) : 가변길이 숫자 타입
        - p: 전체 자릿수, s: 소수점 자릿수
    b. VARCHAR2(4000) : 가변길이 문자타입
    c. CHAR(2000) : 고정길이 문자 타입, 용량 주의
    d. DATE : 날짜타임
       PL/SQL 관리 ↓ 아래 3가지 타입 
    e. CLOB : 가변길이 문자타입, 4GBYTE

          ex) 긴 문자열 저장
    f. BLOB : 가변길이 이진 데이터 타입, 4GBYTE, 

          ex) 원본자료(이미지, 동영상 등) DB를 내부에 저장
    g. BFILE : 외부 파일에 저장된 이진 데이터 타입, 4GBYTE     

          ex) 원본자료(이미지, 동영상 등) DB를 외부에 저장 + 경로정보 + 파일

 

■ 테이블 복제, CTAS
    - 테이블의 구조, 행(데이터), 제약조건에서는 not null 만 복제 된다.

CREATE TABLE hr.emp
AS 
SELECT * FROM hr.employees;

CREATE TABLE 소유자.테이블명

AS

SELECT * FROM  복제할 테이블명;

SELECT * FROM hr.emp; -- 복제 테이블 확인
SELECT * FROM user_users; -- DEFAULT TABLESPACE을 확인
SELECT * FROM user_tables WHERE table_name = 'EMP';
DROP TABLE hr.emp PURGE; -- 테이블 영구 삭제

 

# 테이블 복제

CREATE TABLE hr.emp
TABLESPACE users -- TABLESPACE 지정
AS 
SELECT employee_id as id, upper(last_name||' '||first_name) name, salary * 12 sal
FROM hr.employees;

 

# CATS 사용시에 TABLESPACE 절에 생략하게 되면 DEFAULT TABLESPACE 로 지정되어 있는 TABLESPACE 에 저장된다.

SELECT * FROM user_users; -- DEFAULT TABLESPACE을 확인

# 테이블 영구 삭제

DROP TABLE hr.emp PURGE;

'PURGE' : Shift + Delete 누르면 영구삭제 되는 것과 동일한 키워드다.

테이블 구조만 복제, 데이터X

CREATE TABLE hr.emp
TABLESPACE users -- TABLESPACE 지정
AS 
SELECT *
FROM hr.employees
WHERE 1 = 2;

■ INSERT SUBQUERY 

 

# 데이터 하우징 작업, Transaction 

INSERT INTO hr.emp
SELECT * FROM hr.employees; -- Transaction 시작

SELECT * FROM hr.emp; -- 미리보기

COMMIT; -- Transaction 종료

SELECT * FROM hr.emp; --INSERT 확인

EX)  TABLE 생성

CREATE TABLE hr.test (
    id       NUMBER(4),
    name     VARCHAR2(50),
    sal      NUMBER,
    dept_id  NUMBER
)
TABLESPACE users;
DESC TEST

# DATA 삽입

INSERT INTO hr.test(id, name, sal, dept_id)
SELECT employee_id, last_name||' '||first_name, salary, department_id
FROM hr.employees
WHERE hire_date BETWEEN to_date('20060101', 'yyyymmdd') 
AND to_date('20061231', 'yyyymmdd') ; -- Transtiona 시작 시점

# SELECT 확인 및 COMMIT 

SELECT * FROM hr.test; --미리보기

COMMIT; -- Transaction 종료

 

728x90
반응형
LIST