본문 바로가기

IT/Oracle

오라클 10탄 [ INDEX ]

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