CREATE VIEW EMP_20
AS
SELECT * FROM EMP WHERE DEPTNO = 20;
SELECT * FROM EMP_20;
--문제)EMP 테이블에서 30번 부서만 EMPNO를 EMP_NO로
--ENAME을 NAME으로, SAL을 SALARY로 바꾸어
--EMP_30 VIEW를 생성하시오
;;
CREATE VIEW EMP_30
AS
SELECT EMPNO AS EMP_NO
, ENAME AS NAME
, SAL AS SALARY
FROM EMP
WHERE DEPTNO = 30;
--AS<- 알리안스를 사용하면 원래 테이블의 내용을 보호할 수 있다.
SELECT * FROM USER_VIEWS;
--현재 유저가 만든 뷰가 어떤 것인지 알수 있다
문제5);
CREATE OR REPLACE VIEW EMP_10
(EMPNO, EMPNM, JOBTIT)
AS
SELECT EMPNO, ENAME, JOB FROM EMP
WHERE DEPTNO = 10;
--알리안스의 다른 형태 (EMPNO,EMPNAME,JOBTITLE)
SELECT * FROM EMP_10;
문제6) 부서별로 부서명, 최소급여, 최대급여, 부서의 평균 급여를 포함하는
DEPT_SUM VIEW 를 생성하시오;
CREATE VIEW DEPT_SUM
(DNAME, MINSAL, MAXSAL, AVGSAL)
AS
SELECT D.DNAME, MIN(E.SAL), MAX(E.SAL), AVG(E.SAL)
FROM DEPT D
, EMP E
WHERE D.DEPTNO = E.DEPTNO
GROUP BY D.DNAME;
SELECT * FROM DEPT_SUM;
문) 부서번호가 10, 20인 부서 출력하는 VIEW생성;
;
CREATE VIEW DEPT_1001
AS
SELECT *
FROM EMP
WHERE DEPTNO IN (10,20)
WITH CHECK OPTION ;
--> DEPTNO 30인 경우 INSERT/UPDATE가 안된다.
DROP VIEW EMP_20;
-- 주의 주의 (확인확인)
인덱스
형식)
CREATE INDEX테이블 이름 ON 테이블이름(컬럼1, 컬럼2,,,,);
사용);
CREATE INDEX EMP_ENAME_IDX
ON EMP(ENAME);
--생성한 인덱스 테이블을 찾아가서 다시 그 값을 가져옴
생성확인방법);
SELECT * FROM USER_INDEXES;
--HR.EMPLOYEES <-테이블이름
--다른 사용자가 소유한 테이블에 접근하기 위한 SYNONYM
--cmd : grant create synonym to scoot;
;
CREATE SYNONYM GUBUN
FOR SALGRADE;
SELECT* FROM GUBUN
동의어 처리 예
1)user1 유저 생성
2)user1 scoot에 있는 emp 테이블을 접근할 수 있도록 처리
1)USER1 생성
SQL> CREATE USER user1 IDENTIFIED BY 1234;
SQL> GRANT CREATE TO user1;
SQL> GRANT CREATE SYNONYM TO user1;
SQL> CONN user1/1234
SQL> CREATE SYNONYM emp FOR scoot.EMP;
SQL> GRANT SELECT ON SALGRADE TO USER1;
SQL> SELECT * FROM SCOOT.SALGATE;
'IT > Oracle' 카테고리의 다른 글
oracle 프로시저, 함수, 패키지 (0) | 2015.07.28 |
---|---|
오라클 프로시저 (0) | 2015.07.27 |
오라클 9탄 (sequence,view) (0) | 2015.07.24 |
오라클 8탄 [데이터 조작어 DML] (0) | 2015.07.23 |
오라클 7탄 (테이블 생성및 삭제) (1) | 2015.07.21 |