1. 程式人生 > >【sql語句】實驗二 檢視

【sql語句】實驗二 檢視

1. 根據EMPLOYEES表中的僱員編號、僱員名字、部門編號建立一個名為EMPLOYEES_VU的檢視。把僱員名字的表頭改為EMPLOYEE。

create view employees_vu
as select employee_id, last_name employee, department_id
from employees;

2. 顯示EMPLOYEES_VU檢視的內容。

select *from employees_vu;

3. 從USER_VIEWS資料字典檢視中選擇檢視的名字和文字。
EMP_DETAILS_VIEW作為你的模式的一部分已被建立。
注意:為了看到一個LONG列的更多內容,可以使用iSQL*Plus中SET LONG n命令,這裡n的值就是你想看到的LONG列的字元的數目。

set long 880;//normal:80
select view_name,text from user_views
where view_name='EMPLOYEES_VU' or view_name='EMP_DETAILS_VIEW';

4. 使用EMPLOYEES_VU檢視,輸入一個查詢顯示所有僱員的名字和部門號。
select employee,department_id from employees_vu;

5. 建立一個名為DEPT50的檢視,其中包含在50部門中所有僱員的僱員號、僱員名和部門編號,標識檢視列為EMPNO, EMPLOYEE和 DEPTNO。不能允許通過檢視將一個僱員再分配到另一個部門。

create view dept50
as select employee_id empno,last_name employee,department_id deptno
from employees
where department_id=50
with check option;

6. 顯示DEPT50檢視的結構和內容

describe dept50;
select *from dept50;

7. 試圖把Matos調派到部門80中去。

//檢視 WITH CHECK OPTION where 子句違規
update dept50
set deptno=80
where employee='Matos';

8.建立名為SALARY_VU的檢視,其中包含所有僱員的名、部門名字、薪水和薪水等級。分別用Employee、Department、 Salary 和 Grade標識各列。(在scott/tiger使用者下做本題,使用emp、dept、salgrade(薪水等級)三張表)

emp(EMPNO, ENAME, JOB, MGR HIREDATE, SAL, COMM, DEPTNO )
dept(DEPTNO, DNAME, LOC )
salgrade(GRADE, LOSAL, HISAL )

grant create view to scott;//scott無權,用system登入授權

create view salary_vu
as select ename employee, dname department,sal salary,grade
from emp,dept,salgrade
where emp.deptno=dept.deptno and emp.sal between salgrade.losal and salgrade.hisal;