[WITH GRANT OPTION]; ? 回收权限
REVOKE< 权限>[,<权限>]? [ ON <对象名>]
FROM <用户 >[,<用户>]? [CASCADE];
实验方法:
将查询需求用T-SQL语言表示;在SQL Server Query Analyzer的输入区中输入T-SQL查询语句;设置 Query Analyzer的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 实验内容:
假设某公司的业务规则如下:
(1)公司下设几个部门,如技术部、财务部、市场部等。
(2)每个部门承担多个工程项目,每个工程项目属于一个部门。 (3)每个部门有多名职工,每一名职工只能属于一个部门。
(4)一个部门可能参与多个工程项目,且每个工程项目有多名职工参与施工,一个职工可以参与多个项目。根据职工在工程项目中完成的情况发放酬金。 (5)工程项目有工程号、工程名两个属性;部门有部门号、部门名称、办公电话和办公地点等属性;职工有职工号、姓名、性别属性,出生日期; 问题:
1.根据上述规则设计E-R模型;
2.将E-R模型转换成关系数据模型; 3.利用SQL语句定义上述关系,要求: (1)为每个关系定义主码和外码;
(2)职工姓名、部门名称不能取空值,并且部门名称是唯一的; (3)职工的性别只能取“男”和“女”,默认值为“男”;
(4)部门号具有类似“B01”的形式,即每个部门号的首字符为“B”,其余两个字符为数字。
(5)酬金不低于2000元。
4.修改部门号的约束,改为“B001”的形式,每个部门号的首字符为“B”,其余三个字符为数字。
5.在原有关系的基础上,增加一个新列,用于记录每名职工参加项目的起始时间。
6.数据库安全性实验
(1)在SQL Server Query Analyzer中建立登录用户u1,u2,u3,u4,并使其成为jwgl数据库的用户。
(2)把对student表的查询权限授予用户u1,并允许其将权限转授给其它用户。验证u1是否获得相应权限。
(3)用户u1将查询student表的权限授予用户u2。验证u2是否获得相应权限。
(4)将对course表的查询权限授予所有用户。
(5)建立用户u5,并验证u4和u5是否获得查询course表的权限。 (6)回收u4查询course表的权限,并验证。
9
实验五 T-SQL编程
课程名称: 实验名称
数据库原理实验 T_SQL编程
实验类型: 学时
综合型 4
实验目的和要求:
1. 掌握用户自定义类型的使用 2. 掌握变量的分类及其使用 3. 掌握各种运算符的使用 4. 掌握各种控制语句的使用
5. 掌握系统函数及用户自定义函数的使用。
实验内容:
1.定义一个函数check_id(),实现如下功能。对于1个给定的department_id之值,查询该值在department表中是否存在,若存在返回0,否则返回-1。
2. 写一段T—SQL脚本程序调用上述函数。当向student表插入1条记录时,首先调用函数check_id()检索该记录的department_id之值在表departments的
department_id字段中是否存在对应值,若存在,则将该记录插入student表中,否则打印错误提示信息。
3. 创建一个名为age()的用户自定义函数,用于根据给定的学生编号计算学生的年龄,然后在查询语句中调用该函数。
4.创建一个名为score()的函数,返回一每个学生的学号、姓名、笔试成绩、实验成绩和总成绩,然后在查询语句中调用该函数查询中成绩不及格的学生。 5.打印乘法口诀表,显示格式如下:
10
实验六 存储过程编程
课程名称: 实验名称
数据库原理实验 存储过程编程
实验类型: 学时
综合型 4
实验目的
掌握存储过程的创建及调用。
实验内容
1、请创建存储过程,查看“计算机基础”课程本次考试平均分以及未通过考试的学员名单。(笔试成绩满分80分,上机成绩满分20分,双科成绩均达到满分的80%以上为优秀,单科不足满分的60%为不合格,否则为合格)。(提示:用带有游标的存储过程)
2、修改上题:由于每次考试的难易程度不一样,每次笔试和机试的及格线可能随时变化(不再是满分的60%),这导致考试的评判结果也相应变化。(提示:使用带输入参数的存储过程) 3、修改上题:返回未通过考试的学员人数。(提示:使用带输出参数的存储过程) 4、编写存储过程,显示男生或女生的名单(性别要求通过参数输入)。格式为: 序号 学号 姓名 (提示:用带有游标的存储过程) 11
实验七 触发器编程
课程名称: 实验名称
数据库原理实验 触发器编程
实验类型: 学时
综合型 4
实验目的
理解触发器的工作原理,掌握如何使用inserted表和deleted表及如何创建:INSERT、UPDATE、DELETE触发器。 实验内容
建立银行业务数据库bankdb,其中,帐户信息表(bank)存放帐户的信息,交易信息表(transInfo)存放每次的交易信息。
1、当向交易信息表(transInfo)中插入一条交易信息时,自动更新对应帐户的余额。
2、当删除交易信息表时,要求自动备份被删除的数据到表backupTable中。
3、跟踪用户的交易,交易金额超过20000元,则取消交易,并给出错误提示。 实验报告
1、实验各项内容实现的过程。 2、实验结果分析。
12
实验八 JDBC编程*
课程名称: 学时
数据库原理实验 4
实验类型:
综合型
实验目的:
熟悉使用JDBC来进行数据库应用程序的设计,熟悉通过JDBC接口编程访问数据库并对数据库进行操作。 实验要求:
配置环境变量。使用Java语言编程实现对数据库的访问,所有的SQL操作均在自己建立的新库里进行,数据库建议选用教务管理数据库,读者可以选择进行创建、插入、查询、删除和更新等操作。
要求:
(1) 以对学生表的操作为例,程序循环输出如下格式菜单,根据用户的选
择,完成对学生表的各类操作:
1=List ALL; 2=List(By Student_ID);3=Insert;4=Insert; 0=Exit (2)提交源程序并标识必要的注释。保证程序能正确编译和运行,认真填写实验报告。
13