☭DEVELOPER/#2 웹개발(자바기반 풀스택)

[SQL]테이블 생성 수정 제거하기

조반짝 2023. 9. 7. 11:40
728x90
반응형

※ 테이블 생성 수정 제거하기

1. 테이블 구조를 만드는 CREATE TABLE 문

1) DDL(Data Definition Language, 데이터 정의어)
   = 테이블의 구조 자체를 생성, 수정, 제거하도록 하는 명령문 집합입니다.
   CREATE TABLE 문을 사용하여 데이터를 저장할 테이블을 생성합니다. 이 명령문 하나로
   테이블에 대한 구조를 정의하고, 데이터를 저장하기 위한 공간을 할당합니다.
   테이블을 생성하기 위해서는 테이블명을 정의하고, 테이블을 구성하는 칼럼의 데이터 타입과
   무결성 제약 조건을 정의해야 합니다.

2) 테이블명 및 칼럼명을 정의하기 위한 규칙
   - 문자(A-Z, a-z)로 시작해야 하며 30자 이내로 작성합니다.
   - 문자(A-Z, a-z), 숫자(0-9), 특수문자(_, $, #)만 사용 가능합니다.
   - 대소문자 구별이 없습니다. 소문자로 저장하려면 작은따옴표로 묶어 주어야 합니다.
   - 동일 사용자가 소유한 다른 객체의 이름과 중복되지 않아야 합니다.

3) 테이블을 생성하기 위한 기본 형식
(형식)
CREATE TABLE [schema.]table
(column datatype [DEFAULT expression][column_constraint clause][,···]);

schema는 소유자의 이름으로 데이터베이스 사용자 계정과 같은 의미이고,
table은 생성하고자 하는 테이블명이며 column은 테이블에 포함되는 칼럼명입니다.
datatype은 칼럼에 대한 데이터 타입과 길이를 지정하고, DEFAULT expression은
데이터 입력시 값이 생략된 경우에 입력되는 기본 값입니다.
column_constraint_clause은 칼럼에 대해 정의되는 무결성 제약 조건입니다.

4) CREATE TABLE문과 AS subquery 옵션을 결합하여 다른 테이블의 구조와 함께
   데이터를 복사하여 새로운 테이블을 생성합니다.
   (형식)
   CREATE TABLE table [column[, column, ···]]
   AS subquery;

5) 서브 쿼리를 이용한 테이블을 생서할 때 데이터는 복사하지 않고,
    기존 테이블의 구조만 복사할 수 있습니다. 서브 쿼리의 WHERE 조건절에 항상
    거짓이 되는 조건을 지정하면 조건에 맞는 데이터가 발견되지 않게 되어
    데이터는 복사되지 않고 기존 테이블의 구조만 복사됩니다.
    출력결과가 항상 거짓인 조건을 "WHERE 0=1"과 같이 기술할 수 있습니다.
   - 테이블 구조는 만들어지지만 데이터는 안들어감 
(예시 : 부서 테이블에서 dno, dname 칼럼만 복사하여 dept_copy 테이블을 생성하되
         데이터는 복사하지 않도록 합니다. 즉, 부서 테이블을 구조만 복사합니다)
01: create table dept_copy
02: as
03: select dno, dname
04: from department
05: where 0=1;

2. 테이블 구조를 변경하는 ALTER TABLE문
ALTER TABLE 문을 사용하여 칼럼을 추가, 수정 또는 삭제할 수 있습니다.

1) 칼럼 추가
ALTER TABLE ... ADD 명령문을 사용하여 새로운 칼럼을 추가하며
추가되는 칼럼에도 기본 값을 지정할 수 있습니다.
(형식)
ALTER TABLE table_name
ADD [column_name data_type DEFAULT expr]
      [, column_name data_type] ···);

2. 칼럼 변경
ALTER TABLE ... MODIFY 명령문을 이용하여 테이블에서
칼럼의 타입, 크기, 기본 값을 변경할 수 있습니다.
(형식)
ALTER TABLE table_name
MODIFY [column_name data_type DEFAULT expr]
           [, column_name data_type] ··· );

(참고) 칼럼명 변경
ALTER TABLE DEPT RENAME COLUMN DEPTNO TO DNO;

3. 칼럼 제거
ALTER TABLE ... DROP COLUMN 명령문을 사용하여 테이블 내의
특정 칼럼과 칼럼의 데이터를 제거할 수 있습니다.
2개 이상의 칼럼이 존재하는 테이블에서만 삭제할 수 있으며,
한 번에 하나의 칼럼만 삭제할 수 있습니다.
이때, 삭제된 칼럼은 복구할 수 없습니다.
(형식)
ALTER TABLE table_name
DROP COLUMN column_name;

4. 테이블명을 변경하는 RENAME문
테이블을 포함한 객체의 이름을 변경하는 DDL 명령문으로 RENAME문을 제공합니다.
(형식)
RENAME old_name TO new_name;

5. 테이블 구조를 제거하는 DROP TABLE문
DROP TABLE 명령문을 사용하여 기존 테이블과 데이터를 모두 제거합니다.
삭제할 테이블의 기본키나 고유키를 다른 테이블에서 참조하고 있는 경우에는
CASCADE 옵션을 활용해서 삭제해야 합니다. CASCADE 옵션을 사용하지 않을 경우에는
참조하는 테이블(자식 테이블)을 먼저 제거하고 삭제를 진행해야 합니다.
(형식)
DROP TABLE table명 [CASCADE CONSTRAINTS] ;

(예시 : 테이블 제거하기)
01: SELECT * FROM TAB;
02: DROP TABLE DEPT_COPY;
03: SELECT * FROM TAB;

(예시 : CASCADE 옵션 활용 테이블 제거하기)

CASCADE 옵션을 적용할 경우 외래키(Foreign key)로 연결된 하위 테이블들까지
함께 삭제 됩니다.
(예시)
DROP TABLE DEPT_COPY CASCADE CONSTRAINTS;


6. 테이블의 모든 데이터를 제거하는 TRUNCATE TABLE문
TRUNCATE TABLE문은 기존에 사용하던 테이블의 모든 로우를 제거합니다.
테이블의 구조는 그대로 유지하고, 테이블의 데이터와 할당된 공간만 해제됩니다.
테이블에 생성된 제약 조건과 연관된 인덱스, 뷰, 동의어는 유지됩니다.
(형식)
TRUNCATE TABLE table_name

(예시 : 테이블의 모든 데이터 제거하기)
01: SELECT * FROM DEPT_SECOND;
02: TRUNCATE TABLE DEPT_SECOND;

7. 데이터 사전
데이터 사전은 사용자와 데이터베이스 자원을 효율적으로 관리하기 위한
다양한 정보를 저장하는 시스템 테이블의 집합입니다. 오라클 서버는
데이터베이스의 이름이나 생성 시각, 사용자 권한 및 데이터의 변경 사항을
반영하기 위해 지속적으로 수정 및 관리하고 있습니다.

데이터 사전은 사용자가 테이블을 생성하거나 사용자를 변경하는 등의
작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신되는 테이블로,
사용자는 데이터 사전의 내용을 직접 수정하거나 삭제할 수 없고
사용자가 이해할 수 잇는 데이터를 산출해 줄 수 있도록 하기 위해서
읽기 전용 뷰 형태로 정보를 제공합니다.

데이터 사전은 크게 세 가지로 나눕니다.
  접두어                          의미
  USER_   자신의 계정이 소유한 객체 등에 관한 정보 조회
  ALL_     자신 계정 소유 또는 권한을 부여 받은 객체 등에 관한 정보 조회
  DBA_    데이터베이스 관리자만 접근 가능한 객체 등의 정보 조회

1) USER_ 데이터 사전
접두어로 USER가 붙은 데이터 사전은 사용자와 가장 밀접하게 관련된 뷰로서
자신이 생성한 테이블, 인덱스, 뷰, 동의어 등의 객체나 해당 사용자에게 부여된
권한 정보를 제공합니다.
(예시 : user_tables로 사용자가 소유한 테이블에 대한 정보 조회하기)
01: select table_name from user_tables;
02: desc user_tables;

오라클에서 다루는 객체로는 시퀀스, 인덱스, 뷰 등이 있습니다.
또한 이러한 객체 정보를 조회할 수 있도록 다음과 같은 데이터 사전을 제공합니다.
[다음]
USER_SEQUENCES는 사용자가 소유한 시퀀스의 정보를 조회할 수 있는 데이터 사전이고,
USER_INDEXES는 사용자가 소유한 인덱스 정보를 조회할 수 있는 데이터 사전이며,
USER_VIEWS는 사용자가 소유한 뷰 정보를 조회할 수 있는 데이터 사전입니다.
참고로, 데이터 사전은 USER_ 뒤에 원하는 개체 등을 기술해 주면 되고,
뒤에 기술되는 명칭은 일반적으로 'S'가 붙은 복수 타입임을 주의합니다.

2) ALL_ 데이터 사전
접두어로 ALL이 붙은 데이터베이스는 전체 사용자와 관련된 뷰로서
사용자가 접근할 수 있는 모든 객체에 대한 정보를 조회할 수 있습니다.
조회중인 객체가 누구의 소유인지를 확인하도록 하기 위해서 OWNER 칼럼을 제공합니다.

(예시)
all_tables로 자신이 소유한 혹은 권한을 부여받은 테이블에 대한 정보를 조회해 봅니다.
01: conn scott/Test1234;
02: desc all_tables;
03: select owner, table_name from all_tables;

3) DBA_ 데이터 사전
접두어로 DBA가 붙은 데이터 사전은 시스템 관리와 관련된 뷰입니다.
DBA나 시스템 권한을 가진 사용자만 접근할 수 있습니다.
현재 접속한 사용자가 DBA 권한이 없는 SCOTT 계정(또는 HR 계정)이라면
DBA_로 시작하는 데이터 사전을 조회할 권한이 없기 때문에
DBA 권한을 가진 SYSTEM 계정으로 접속해야 합니다.
(예시 : DBA_TABLES로 테이블에 대한 정보 조회하기)
01: CONN SYSTEM/System1234;
02: DESC DBA_TABLES;
03: SELECT OWNER, TABLE_NAME FROM DBA_TABLES;
04: SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER = 'SCOTT';

정보 제공용 테이블 값

 

 


테이블 생성

데이터베이스는 C드라이브 > app 에 저장 되어있고 툴에 따라 이해하는 것이 같다.

 

GUI 로 결과를 한눈에 볼 수있다.

테이블을 새로 생성해서 GUI화면으로 편하게 볼수있다.

테이블 삭제

CASCADE 삭제 : 계단식 삭제


 

 

리얼 데이터에 있는 값을 복제할 때 사용한다.

-- 서브 쿼리를 이용하여 다른 테이블로 부터 테이블을 생성할 수도 있습니다.
-- CREAT TABLE문과 AS subquery 옵션을 결합하여 다른 테이블의 구조와 함께
-- 데이터를 복사하여 새로운 테이블을 생성해 봅니다.
SELECT
*
FROM department;

-- 서브 쿼리문으로 부서 테이블(department)의 구조와 데이터 복사하기
CREATE TABLE DEPT_SECOND
AS
SELECT 
*
FROM department;

SELECT 
*
FROM dept_second;

데이터 생성

DEPT_THIRD VARCHAR2(14) > VARCHAR(30) 변경

DROP : 제거하기

RENAME: 테이블 이름 변경

TRUNCATE : 테이블 안을 비우는 명령어

테이블안에 데이터가 삭제됨

HR_STUDY

-- 사용자 계정 정보 확인
show user;

-- 테이블 구조를 만드는 CREATE TABLE문
-- 테이블명 및 칼럼명을 정의하기 위한 규측은 다음과 같습니다.
-- 문자(A-Z, a-z), 숫자(0-9), 특수문자(_, $, #)만 사용 가능합니다.
-- 대소문자 구별이 없습니다. 소문자로 저장하려면 작은따옴표로 묶어 주어야 합니다.
-- 동일 사용자가 소유한 다른 객체의 이름과 중복되지 않아야 합니다.
-- SCHEMA는 소유자의 이름으로 데이터베이스 사용자 계정과 같은 의미이고,
-- TABLE은 생성하고자 하는 테이블명이며, COLUMN은 테이블에 포함되는 칼럼명입니다.

-- 부서 정보를 저장하기 위한 테이블 생성하기
CREATE TABLE DEPT(
    DNO NUMBER(2),
    DNAME VARCHAR2(14),
    LOC VARCHAR2(13));
    
DESC DEPT;
DESC TEST;

-- 서브 쿼리를 이용하여 다른 테이블로 부터 테이블을 생성할 수도 있습니다.
-- CREAT TABLE문과 AS subquery 옵션을 결합하여 다른 테이블의 구조와 함께
-- 데이터를 복사하여 새로운 테이블을 생성해 봅니다.
SELECT
*
FROM department;

-- 서브 쿼리문으로 부서 테이블(department)의 구조와 데이터 복사하기
CREATE TABLE DEPT_SECOND
AS
SELECT 
*
FROM department;

SELECT 
*
FROM dept_second;

-- 테이블 형식만 필요할 때
-- 서브 쿼리를 이용한 테이블을 생성할 때 데이터는 복사하지 않고,
-- 기본 테이블의 구조만 복사할 수도 있습니다.
-- 이것은 서브 쿼리의 WHERE 조건절에 항상 거짓이 되는 조건을 지정하면
-- 조건에 맞는 데이터가 발견되지 않게 되어 데이터는 복사되지 않고
-- 기존 테이블의 구조만 복사됩니다.
-- 출력 결과가 항상 거짓인 조건을 "WHERE 0=1" 또는 "WHERE 1=0" 기술하면 됩니다.
-- 부서 테이블을 구조만 복사하기

CREATE TABLE DEPT_THIRD
AS
SELECT DNO, DNAME
FROM department
WHERE 0 =1;

DESC DEPT_THIRD;

-- 테이블에 칼럼 추가를 해봅니다.
-- ALTER TABLE ... ADD 명령문을 사용하여 새로운 칼럼을 추가할 수 있습니다.
-- DEPT_THIRD 테이블에 날짜 타입을 가지는 BIRTH 칼럼 추가하기
DESC DEPT_THIRD;
ALTER TABLE DEPT_THIRD ADD(BIRTH DATE);

-- 테이블에 칼럼 정보 변경하기
ALTER TABLE DEPT_THIRD MODIFY DNAME VARCHAR2(30);

--테이블에 칼럼 제거하기
ALTER TABLE DEPT_THIRD DROP COLUMN DNAME;

DESC DEPT_THIRD;

-- 테이블 명을 변경하는 RENAME문 활용
RENAME DEPT_THIRD TO DEPT_NEW;

DESC DEPT_NEW;

-- 테이블의 모든 데이터를 제거하는 TRUNCATE TABLE문 활용
SELECT * FROM DEPT_SECOND;

TRUNCATE TABLE DEPT_SECOND;

SELECT * FROM DEPT_SECOND;

-- 테이블을 제거하는 DROP TABLE문
DROP TABLE DEPT_NEW;

DESC DEPT_NEW;


-- 데이터 사전 : 사용자와 데이터베이스 자원을 효율적으로 관리하기 위한 다양한 정보를
-- 저장하는 시스템 테이블의 집합입니다.
-- 오라클 DB 서버는 데이터베이스의 이름이나 생성 시각, 사용자 권한 및 데이터의 변경 사항을
-- 반영하기 위해 지속적으로 수정 및 관리하고 있습니다.
-- 데이터 사전은 사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할때
-- 데이터베이스 서버에 의해 자동으로 갱신되는 테이블로,
-- 사용자는 데이터 사전의 내용을 직접 수정하거나 삭제할 수 없고
-- 사용자가 이해할 수 있는 데이터를 산출해 줄 수 있도록 하기 위해서
-- 읽기 전용 뷰 형태로 정보를 제공합니다.
-- USER_ 데이터 사전 : 자신의 계정이 소유한 객체 등에 관한 정보 조회
-- USER_TABLES로 사용자가 소유한 테이블에 대한 정보 조회하기

-- 테이블 데이터 사전
SELECT TABLE_NAME FROM USER_TABLES;

DESC USER_TABLES;

-- ALL_데이터 사전 : 자신 계정 소유 또는 권한을 부여 받은 객체 등에
-- 관한 정보 조회
-- ALL_TABLE로 테이블에 대한 정보 조회하기
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'HR';

-- DBA_데이터 사전 : 데이터 베이스 관리자만 접근 가능한 객체등의 정보 조회
CONN SYSTEM/System1234;
show user
conn system/System1234;
show user

 


system 접속

pw: System1234

SYSTEM 계정 만들기

데이터 베이스 연결 SESSION 권한 부여

계정 추가

새로 만들어진 계정으로 접속이 되었다.

앞서 생성한 김희선씨의 데이터 베이스 접속 계정에서는 SCOTT 계정에 있는 EMPLOYEE 테이블만 조회가 가능하도록

권한을 부여해줍니다.

scott 계정 추가

SCOTT 계정에 REF_EMP_EXAMPLE 파일 내용 복사하기 붙여넣기

붙여넣은 데이터 블록 잡고 재생버튼을 누르면 삽입이 된다.

 

일부 데이터만 보여지게 하기

SYSTEM 계정으로 가기

신입사원 김희선씨의 DB 접속 계정에서는 SCOTT계정에 있는 EMPLOYEE 테이블만 조회가 가능하도록 권한을 부여해 줍니다.

SCOTT계정에 EMPLOYEE를 불러오기

SQL> show user
USER은 "SYSTEM"입니다
SQL> -- 신입 사원 김희선씨가 사용할 데이터베이스 접속 계정을 생성해 줍니다.
SQL> create user kimheesun identified by System1234;
사용자가 생성되었습니다.
SQL> -- 새로 생성한 kimheesun 계정에 DB 연결 session 권한을 부여합니다.
SQL> grant create session to kimheesun;
권한이 부여되었습니다.
SQL> conn kimheesun/System1234;
연결되었습니다.
SQL> show user;
USER은 "KIMHEESUN"입니다
SQL>

 

SQL> conn system/System1234;
연결되었습니다.
SQL> show user
USER은 "SYSTEM"입니다
SQL> -- 신입사원 김희선씨의 DB 접속 계정에서는 SCOTT 계정에 있는
SQL> -- EMPLOYEE 테이블만 조회가 가능하도록 권한을 부여해 줍니다.
SQL> GRANT SELECT ON SCOTT.EMPLOYEE TO kimheesun;
권한이 부여되었습니다.
SQL> conn kimheesun/System1234;
연결되었습니다.
SQL> show user
USER은 "KIMHEESUN"입니다
SQL> set linesize 140;
SQL> select * from scott.employee;

 

jangnara 협력사에게 권한 부여하기

 

협력사에 coview 권한 부여

장나라 권한으로 scott coview 불러오기

SYSTEM

show user

SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER = 'HR';

show user;

-- 신입사원 김희선씨가 사용할 데이터 베이스 접속 계정을 생성해줍니다.
-- System 계정에서 해야함
CREATE USER KIMHEESUN IDENTIFIED BY System1234;

-- 새로 생성한 KIMHEESUN계정에 데이터 베이스 연결 SESSION 권한 부여
GRANT CREATE SESSION TO KIMHEESUN;

CONN KIMHEESUN/System1234;

CONN SYSTEM/System1234;

show user;

-- 앞서 생성한 김희선씨의 데이터 베이스 접속 계정에서는 
-- SCOTT 계정에 있는 EMPLOYEE 테이블만 조회가 가능하도록
-- 권한을 부여해줍니다.
ALTER USER SCOTT ACCOUNT UNLOCK;

ALTER USER SCOTT IDENTIFIED BY Test1234;

-- SCOTT 계정에 테이블과 테스트 데이터를 넣어줍니다.
CONN SCOTT/Test1234;

SHOW USER;

-- 신입사원 김희선씨의 DB 접속 계정에서는 SCOTT계정에 있는 
-- EMPLOYEE 테이블만 조회가 가능하도록 권한을 부여해 줍니다.
GRANT SELECT ON SCOTT.EMPLOYEE TO KIMHEESUN;

-- 거래처 개발자 장나라씨가 사용할 계정을 생성해 줍니다.
-- 이때, 계정의 아이디는 jangnara, 비밀번호는 Test1234 로 부여합니다.
show user;
create user jangnara identified by Test1234;

-- jangnara 계정이 DB에 연결될 수 있도록 SESSION 권한을 부여합니다.
GRANT CREATE SESSION TO jangnara;

CONN jangnara/Test1234;

--SCOTT 계정에 있는 EMPLOYEE 테이블의 ENO, ENAME, DNO, JOB
--칼럼 정보들에 대해 조회만 가능하도록 뷰(VIEW) 테이블을 COVIEW 이름으로 
-- 생성해 주고, 그 생성 결과를 확인해 봅니다.
GRANT CREATE VIEW TO SCOTT;

-- SYSTEM 계정으로 접속하여 장나라씨가 사용할 jangnara 계정에게
-- grant 명령어로 select on scott, coview 권한을 부여해주고,
-- 그 결과를 화면에 표시해봅니다.
show user;
grant select on scott.coview to jangnara;

-- 장나라씨의 jangnara 계정으로 접속해서 scott.coview만 검색해서
-- 정보를 확인하고, 그 결과 화면을 표시해 봅니다.

SCOTT

DROP TABLE EMPLOYEE;
DROP TABLE DEPARTMENT;
DROP TABLE SALGRADE;

CREATE TABLE DEPARTMENT
        (DNO NUMBER(2) CONSTRAINT DEPT PRIMARY KEY,
         DNAME VARCHAR2(14),
	 LOC   VARCHAR2(13) ) ;
CREATE TABLE EMPLOYEE 
        (ENO NUMBER(4) CONSTRAINT EMP PRIMARY KEY,
	 ENAME VARCHAR2(10),
 	 JOB   VARCHAR2(9),
	 MANAGER  NUMBER(4),
	 HIREDATE DATE,
	 SALARY NUMBER(7,2),
	 COMMISSION NUMBER(7,2),
	 DNO NUMBER(2) CONSTRAINT DNO REFERENCES DEPARTMENT);
CREATE TABLE SALGRADE
        (GRADE NUMBER,
	 LOSAL NUMBER,
	 HISAL NUMBER );

INSERT INTO DEPARTMENT VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPARTMENT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPARTMENT VALUES (30,'SALES','CHICAGO');
INSERT INTO DEPARTMENT VALUES (40,'OPERATIONS','BOSTON');

INSERT INTO EMPLOYEE VALUES
(7369,'SMITH','CLERK',    7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMPLOYEE VALUES
(7499,'ALLEN','SALESMAN', 7698,to_date('20-2-1981', 'dd-mm-yyyy'),1600,300,30);
INSERT INTO EMPLOYEE VALUES
(7521,'WARD','SALESMAN',  7698,to_date('22-2-1981', 'dd-mm-yyyy'),1250,500,30);
INSERT INTO EMPLOYEE VALUES
(7566,'JONES','MANAGER',  7839,to_date('2-4-1981',  'dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMPLOYEE VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981', 'dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMPLOYEE VALUES
(7698,'BLAKE','MANAGER',  7839,to_date('1-5-1981',  'dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMPLOYEE VALUES
(7782,'CLARK','MANAGER',  7839,to_date('9-6-1981',  'dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMPLOYEE VALUES
(7788,'SCOTT','ANALYST',  7566,to_date('13-07-1987', 'dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMPLOYEE VALUES
(7839,'KING','PRESIDENT', NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMPLOYEE VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981',  'dd-mm-yyyy'),1500,0,30);
INSERT INTO EMPLOYEE VALUES
(7876,'ADAMS','CLERK',    7788,to_date('13-07-1987', 'dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMPLOYEE VALUES
(7900,'JAMES','CLERK',    7698,to_date('3-12-1981', 'dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMPLOYEE VALUES
(7902,'FORD','ANALYST',   7566,to_date('3-12-1981', 'dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMPLOYEE VALUES
(7934,'MILLER','CLERK',   7782,to_date('23-1-1982', 'dd-mm-yyyy'),1300,NULL,10);

INSERT INTO SALGRADE VALUES (1, 700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);

COMMIT;

SHOW USER;

SELECT * FROM TAB;

--SCOTT 계정에 있는 EMPLOYEE 테이블의 ENO, ENAME, DNO, JOB
--칼럼 정보들에 대해 조회만 가능하도록 뷰(VIEW) 테이블을 COVIEW 이름으로 
-- 생성해 주고, 그 생성 결과를 확인해 봅니다.

SHOW USER;

-- COVIEW 이름의 뷰(VIEW) 테이블을 생성해 봅니다.
-- 이때, 뷰(VIEW) 테이블은 ENO, ENAME, DNO, JOB 칼럼 정보만
-- 볼 수 있도록 생성합니다.
CREATE OR REPLACE VIEW COVIEW
AS
SELECT ENO, ENAME, DNO, JOB
FROM EMPLOYEE
WITH READ ONLY;

SHOW USER;

CREATE OR REPLACE VIEW COVIEW
AS
SELECT ENO, ENAME, DNO, JOB
FROM EMPLOYEE
WITH READ ONLY;

SELECT * FROM COVIEW;

JANGNARA

-- 장나라씨의 jangnara 계정으로 접속해서 scott.coview만 검색해서
-- 정보를 확인하고, 그 결과 화면을 표시해 봅니다.
show user;

select * from SCOTT.coview;

KIMHEESUN

SHOW USER;

SELECT * FROM SCOTT.EMPLOYEE;
728x90
반응형