DB/Oracle Basic

SQL문법(View)

soccerda 2012. 7. 6. 01:08
반응형
 
1. View의 개념
가. 1개 이상의 테이블을 이용하여 가상의 테이블을 구성하는 것
나. 데이터의 보안과 사용자 편의성을 높이기 위해 생성한다.


2. 뷰의 종류
가. 단순 뷰 : join이 없이 생성된 뷰
나. 복합 뷰 : join이 포함된 뷰
라. 인라인 뷰 : from절에 서브쿼리를 사용하여 생성된 임시 뷰


3. 연습문제

가. 사원테이블(TEMP)에서 사원의 연봉이 동일한 직급을 가진 사원의 평균연봉보다 많이 받는 사원의 사번,이름,연봉을 출력하세요.
1
2
3
4
5
6
7
8
9
10
11
select a.emp_id, a.emp_name, a.salary, a.lev
from temp a, (select lev, avg(salary) salary
from temp
group by lev) b
where a.salary > b.salary and a.lev=b.lev;
EMP_ID EMP_NAME SALARY LEV
---------- ---------- ---------- ----
19960101 홍길동 72000000 과장
19930331 정도령 70000000 차장
19950303 이순신 56000000 대리


나. Temp,tdept 테이블에서 아래처럼 emp_id, emp_name 컬럼을 출력하되 출력결과를 3~6번까지 줄의 데이터만 출력하세요.
1
2
3
4
5
6
7
8
9
10
11
12
select no, emp_id, emp_name, dept_name
from (select rownum no, a.emp_id, a.emp_name, b.dept_name
from temp a, tdept b
where a.dept_code=b.dept_code)
where no between 3 and 6;
NO EMP_ID EMP_NAME DEPT_NAME
---------- ---------- ---------- --------------------
3 19960101 홍길동 재무
4 20000102 김설악 재무
5 19970201 박문수 총무
6 20000203 최오대 총무


다. 학생 테이블에서 학생 이름과 전화번호로 구성되는 뷰 (v_stud_addr)을 만드세요
1
2
CREATE VIEW v_stud_addr
AS SELECT name, tel FROM student;


라. 학생 이름과 학생이 소속한 학과 이름으로 구성된 뷰(v_stud_dept)를 만드세요
1
2
3
4
CREATE VIEW v_stud_dept
AS SELECT a.name, b.dname
FROM student a, department b
WHERE a.deptno=b.deptno;


마. 101번 학과 학생들의 학생 이름과 지도 교수 이름을 가지는 뷰 (v_stud_prof)를 정의하세요. 아직 지도교수가 정해지지 않은 학생도 함께 출력하세요.
1
2
3
4
CREATE VIEW v_stud_prof
AS SELECT s.name "학생이름", p.name "지도교수이름"
FROM student s, professor p
WHERE s.profno=p.profno(+);


바. 각 학과에 소속되어 있는 교수 이름과 학생 이름으로 구성되는 뷰(v_all1)를 생성하세요. 출력 칼럼이름은 학과 이름, 학생 이름, 교수 이름입니다.
1
2
3
4
CREATE VIEW v_all1
AS SELECT d.dname "학과이름", s.name "학생이름", p.name "교수이름"
FROM department d, student s, professor p
WHERE d.deptno=s.deptno AND s.profno=p.profno;


사. 학과별 평균 몸무게와 평균 키 정보를 가지는 뷰(v_dept_avg)를 생성하세요.
1
2
3
4
5
CREATE VIEW v_dept_avg
AS SELECT d.dname, AVG(s.weight) s_weight, AVG(s.height) s_height
FROM department d, student s
WHERE d.deptno=s.deptno
GROUP BY d.dname;

반응형

'DB > Oracle Basic' 카테고리의 다른 글

오라클 날짜 계산, 함수 등  (0) 2012.07.06
SQL문법(사용자 권한)  (0) 2012.07.06
SQL 문법(INDEX, 인덱스)  (0) 2012.07.06
SQL 문법(데이터 무결성 제약조건)  (0) 2012.07.06
SQL 문법(DML, DDL, DCL, TCL)  (0) 2012.07.06