Oracle数据库实验七(完整性语言实验、自主存取控制实验)(Oracle 11g)

  • Post author:
  • Post category:其他


实验要求:

1、 tb_dept1 表结构

字段名称 数据类型 备注

id NUMBER(11) 部门编号 主键

name VARCHAR2(22) 部门名称

location VARCHAR2(50) 部门位置

定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id

表tb_emp5表结构

字段名称 数据类型 备注

id NUMBER(11) 员工编号

name VARCHAR2(25) 员工名称

deptId NUMBER(11) 所在部门编号

salary NUMBER(9,2) 工资

2、将tb_emp5表上的字段name添加唯一性约束。

3、定义数据表tb_emp7,指定员工的部门编号默认为1111,SQL语句如下:

表tb_emp7表结构

字段名称 数据类型 备注

id NUMBER(11) 员工编号

name VARCHAR2(25) 员工名称

deptId NUMBER(11) 所在部门编号

salary NUMBER(9,2) 工资

4、定义数据表tb_emp8,指定员工的性别只能输入“男”或者“女”,SQL语句如下:

表tb_emp8结构

id number(11) 员工编号

name varchar2(25)员工名称

gender varchar2(2) 性别

age varchar2(2)年龄

5、将tb_emp8表上的字段age添加检查约束,规定年龄输入值在15~25之间。

6. 通过CREATE TABLE语句实现完整性约束的定义

具体步骤:

(1)建立一个部门表DEPT,其中包括的列及约束如下:

Deptno表示部门号,要求取值为1000到9999四位整数,并作为该表的主码;

Dname表示部门名,要求部门名唯一;

Dloc表示部门的地点,类型为VARCHAR2,宽度为20。

(2)建立一个职工表EMP,其中包括的列及约束如下:

Empno表示雇员号,要求取值为100000到999999六位整数,并作为该表的主码;

Ename表示雇员名,要求不能取空值,不要求取值唯一。

Sal表示实发工资,Deduct表示扣除项,要求应发工资不得超过5000元。应发工资为实发工资和扣除项之和,这两列的数据类型为NUMBER(7,2)。

Deptno表示部门号,它要参照DEPT表中的Deptno列的取值。

(3)在上述两个表中输入一些数据。

(1000,数学系,理工3号楼)

(2000,物理系,理工2号楼)

(3000,化学系,理工1号楼)

再在DEPT表中输入下面记录,看会出现什么结果:

(999,计算机,理工3号楼)

(3000,工商管理系,经法楼)

7、创建了用户user01,密码为mypass创建用户user02,密码为user02

8、修改user01的密码为123456。

9、将create session,select any table,create table和create view这4个系统权限授予user01用户。

10、user01用户想将create session,select any table,create table和create view这4各系统权限授予user2,是否可以?

11、收回user01用户的create view系统权限。

12、使用GRANT和REVOKE实现安全性控制

(1)把对表SC的INSERT权限授予用户U5,并允许他将此权限再授予其他用户。

(2)把查询Student表和修改学生学号的权限授给用户U4。

(3)把用户U4修改学生学号的权限收回。

代码如下:

1.

create table tb_dept1

(

id number(11),

name varchar2(22),

location varchar2(50),

primary key (id)

);

create table tb_emp5

(

id number(11),

name varchar2(25),

deptId number(11),

salary number(9,2),

foreign key (deptId)references tb_dept1(id)

);

2.

alter table tb_emp5

add constraint c1 unique(name);

3.

create table tb_emp7

(

id number(11),

name varchar2(25),

deptId number(11)

constraint c2 check (deptId=1111),

salary number(9,2)

);

4.

create table tb_emp8

(

id number(11),

name varchar2(25),

gender varchar2(2)

constraint c3 check(gender in(‘男’,’女’)),

age varchar2(2)

);

5.

alter table tb_emp8

add constraint c4 check(age between 15 and 25);

6.

(1)

create table DEPT

(

Deptno number(10)

constraint c5 check(Deptno between 1000 and 9999),

Dname varchar2(25) unique,

Dloc varchar2(20),

constraint DEPTKey primary key(Deptno)

);

(2)

create table EMP

(

Empno number(11)

constraint c6 check(Empno between 100000 and 999999),

Ename varchar2(25) not null,

Sal number(7,2),

Deduct number(7,2),

constraint c7 check(Sal+Deduct<=5000),

Deptno number(10) references DEPT(Deptno),

constraint EMPKey primary key(Empno)

);

(3)

insert into DEPT

values(1000,’数学系’,’理工3号楼’);

insert into DEPT

values(2000,’物理系’,’理工2号楼’);

insert into DEPT

values(3000,’化学系’,’理工1号楼’);

insert into DEPT

values(999,’计算机’,’理工3号楼’);

insert into DEPT

values(3000,’工商管理系’,’经法楼’);

7.

create user user01 identified by mypass;

create user user02 identified by user02;

8.

alter user user01

identified by 123456;

9.

grant create session,select any table,create table,create view to user01

with admin option;

10.

可以

11.

revoke create view

from user01;

12.

grant insert

on sc

to user02

with grant option;

grant select,update(sno)

on student

to user01;

revoke update

on student

from user01;



版权声明:本文为weixin_57202646原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。