数据库技术实验六
实验六 数据安全性实验

实验六数据安全性实验实验目的和要求:加深对数据安全性的理解,掌握SQL SERVER中有关用户、角色及操作权限的管理方法。
实验内容:1. 建立教学数据库teaching2. 建立教学数据库的三个基本表:S (S#, SNAME, AGE, SEX) 学生(学号,姓名,年龄,性别)SC (S#, C#, GRADE ) 选修(学号,课程号,成绩)C (C#, CNAME, TEACHER) 课程(课程号,课程名,任课教师)3.输入数据基本表C的数据4. 数据修改、删除1)把C2课程的非空成绩提高10%。
2)在SC表中删除课程名为PHYSICS的成绩的元组。
3)在S和SC表中删除学号为S8的所有数据。
5. 计算每个学生有成绩的课程门数、平均成绩。
6. 创建一个登录用户(1)打开企业管理器中的安全性文件夹,右击其中的登录文件夹,在弹出的菜单中选择“新建登录”选项后,就会出现一个登录属性对话框,在常规选项卡中输入用户名(login1),选择该用户的安全认证模式,选择默认数据库和默认语言。
如使用SQL SERVER安全认证模式,可以直接在名称栏中输入新登录名,并在下面的栏目中输入登录密码。
(2)选择数据库访问选项卡,确定用户能访问的数据库为教学数据库teaching,操作完成后,单击“确定”按钮,完成创建登录用户的工作。
7. 创建新的数据库用户在企业管理器中扩展SQL服务器及数据库文件夹。
右击用户文件夹,弹出的菜单中选择“新建数据库用户”项,会出现新建数据库用户属性对话框。
在对话框的登录名栏中选择一个SQL服务器登录用户名(login1),并在它下面的用户名栏中输入数据库用户名u2,单击“确定”按钮完成。
8.使用GRANT语句,把对基本表S、SC、C的使用权限授给用户u2。
并用REVOKE 语句回收权限。
实现数据转换实验内容:1)利用DTS的功能导出数据。
2)利用DTS的功能导入数据。
3)利用DTS设计器导入、导出数据。
数据库技术及VFP应用实验报告(六)

2.在“数据”选项卡中选择“查询”
中将学生登记表和学生成绩表添加到“查询设计器”中
3.在“字段”选项卡中将学号、姓名、性别3个字段添加到“选定字段”中
4.单击“函数与表达式”框的按钮,打开“表达式生成器”的对话框,在表达式框中输入:YEAR(DATE())-YEAR(学生登记表.出生日期)as年龄。
单击“确定”
5.仿照第4步的方法,生成新字段“平均分”和“总分”,在表达式框中输入:AVG(绩)as平均分,SUM(成绩)as总分。
6.在“排序依据”选项卡中将“选定字段”中的“ SUM(成绩)as总分”
序条件”列表框中,在“排序选项”中选择“降序”
7.在“分组依据”选项卡中,将“学生登记表.学号”字段添加到“分组字段”列表框中
8.单击“满足条件”按钮,打开满足条件对话框,输入条件
钮,
10.按CTRL+S键,保存查询,命名为“平均分总分”
实验总结及意见
通过本次实验我进一步掌握Visual Foxpro中用查询设计器建立查询的基本。
数据库作业实验六

数据库作业实验六实验六实验名称:连接查询⼀、实验⽬的掌握使⽤连接的⽅法从多个表中查询数据。
理解内连接、外连接(包括左外连接、右外连接和全外连接)、⾃⾝连接的概念和使⽤。
要求学⽣熟练掌握在FROM⼦句和在WHERE⼦句中指定连接条件的这两种⽅法。
⼆、实验原理在查询语句的FROM⼦句中⽤以下形式实现各种连接操作:●FROM 表1 [INNER] JOIN 表2 ON 表1.列名=表2.列名(实现内连接)●FROM 表1 LEFT [OUTER] JOIN 表2 ON 表1.列名=表2.列名(实现左外连接)●FROM 表1 RIGHT [OUTER] JOIN 表2 ON 表1.列名=表2.列名(实现右外连接)●FROM 表1 FULL [OUTER] JOIN 表2 ON 表1.列名=表2.列名(实现全外连接)●FROM 表1 AS 别名1 JOIN 表1 AS 别名2 ON 别名1.列名=别名2.列名(实现⾃⾝连接)在查询语句的WHERE⼦句中⽤以下形式实现各种连接操作:●FROM 表1,表2 WHERE 表1.列名=表2.列名(实现内连接)●FROM 表1,表2 WHERE 表1.列名*=表2.列名(实现左外连接)●FROM 表1,表2 WHERE 表1.列名=*表2.列名(实现右外连接)●FROM 表1 AS 别名1 ,表1 AS 别名2 WHERE 别名1.列名=别名2.列名(实现⾃⾝连接)三、实验设备安装有SQL SERVER 2005的计算机。
四、实验⽰例1、检索product 表和sale_item表中数量⼤于2的相同产品的产品编号、产品名称、数量、单价。
select a.prod_id,a.qty,a.unit_price,b.prod_namefrom sale_item as a inner join product as b /*如果改成left join/right join 试分析结果*/on (a.prod_id=b.pro_id) and a.qty>2order by a.prod_id2、查找出employee表中住址相同的员⼯的姓名、性别、职称、薪⽔、住址。
(完整版)数据库技术与应用实验报告

(完整版)数据库技术与应用实验报告《数据库技术与应用》实验报告班级学号:姓名:实验日期:指导老师:实验名称一、实验一表的建立与维护实验目的与要求 1.初步掌握根据一个应用目标把现实问题抽象为关系数据模型的方法,从而为解决实际问题奠定数据基础。
2.掌握表的建立与维护的一般方法。
3.理解表的记录指针与当前记录的意义。
4.掌握表的打开、关闭、浏览、显示等操作方法。
5.掌握表结构的修改。
6.掌握记录的增加与删除等操作。
7.掌握数据复制方法。
8.二、实验准备 1、复习关系数据库的有关概念,深刻理解Virsual FoxPro中所采用的关系模型的实质及Virsual FoxPro所支持的数据模型。
2、复习表的建立、现实与维护等操作。
三、实验内容下表是某校学生花名册,根据该表完成以下操作,写出操作步骤。
学习成绩性学号姓名别学 009901 张小强男 98 85 否 20XX年获全数外语出生年月否少数民族受奖情况国数学奥林匹克竞赛二等奖。
009902 009903 009904 009905 陈斌李哲男男 88 56 75 88 75 82 72 81 否是否是20XX年获全国中学生田径运动会100米第三名009906 009907 009908 009909 张青松男封小莉女周晓钱倩女女 65 82 65 83 81 73 78 85 否否20XX年获广东省三好学生称号 009910 009911 孙力军男肖彬彬女 64 55 68 95 是否赵大明男冯珊女否否1.设计一个表的结构,使其能描述上表的信息,同时又符合关系模型的基本要求。
2.建立表,输入表中的数据,并将保存在自己盘中。
3.给全部女生的数学成绩加5分。
4.将记录指针定位到第5号记录。
5.将记录指针指向孙力军同学。
6.显示所有姓“张”学生的情况。
7.把表的姓名字段宽度修改为8。
8.浏览记录数据,且表头用汉字。
9.把少数民族学生的记录复制到中。
数据库原理综合实验报告

实验六数据库原理综合实验1实验目的(1)运用所学的数据库设计技术,针对一个具体的应用系统,完成系统数据库的概念模型、逻辑模型和物理模型的设计。
以巩固理论课程上所学的知识,更好地掌握数据库设计技术方法。
(2)对前面章节所学的知识加以综合应用。
2实验内容给定一个应用环境,如学生选课系统、超市管理系统、某企业库存管理系统、学校图书管理系统、学校综合积分管理系统等等。
(同学们课从上述选定一个题目,也可以选取一个自己较熟悉的应用环境)。
完成下面的工作2.1 数据库概念模型设计(1)进行需求分析。
-对系统的语义进行描述(包括功能、所需的数据及他们之间的关系和处理方法)(2)识别系统中的实体及实体的属性,分析实体之间的联系。
(3)设计数据库概念模型,画出E-R图。
2.2 数据库逻辑模型设计(1)根据数据库概念模型设计数据库的逻辑模型。
-将E-R模型转化到逻辑模型(2)根据应用需要和规范化理论对逻辑模型进行优化。
2.3 数据库物理模型设计(1)针对某种DBMS,设计数据库物理模型,包括表空间、表和索引等于物理存储有关的设计。
(2)优化物理模型(3)生成某种DBMS的SQL语句,创建数据库及其表。
2.4 装载数据(1)收集真实数据或者生成模拟数据。
(2)批量加载数据到数据库中。
(3)设计一系列SQL语句,尤其是连接查询、嵌套查询等SQL语句,以测试数据库性能。
3实验要求(1)可以借助POWERDESIGNER等系统分析与设计辅助工具进行数据库设计,也可以使用WORD文件直接生成各种设计文档。
(2)选择的数据库应用系统应该规模适中,不宜太大太复杂,可能做不完;也不宜太小太简单,甚至仅有三两个表组成。
(3)要设计良好的数据库完整性约束。
(4)思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点?4实验步骤4.1 数据库概念模型设计(1)进行需求分析。
学生需要有学号、姓名、性别、年龄、专业等信息。
选课需要有学号、课号、成绩等信息课程需要有课程号、课程名、先修课、学分等信息(2)设计数据库概念模型,画出E-R图。
实验6 数据库及表

实验六数据库及表
1.创建一个名为“工资管理系统.accdb”的空数据库文件,依据下图所示的表的结构,在图书管理数据库中创建“工资”、“员工”、“部门”3个表。
结构如下:
字段长度根据需要进行设置。
员工表数据如下:(可以通过复制粘贴进行),并在最后一行增加个人的资料
其他两表的数据分别在“工资.xlsx”“部门.xlsx”,通过导入数据的方式创建表及数据,然后再对表结构进行适当修改
2.将所有日期型字段的格式设置为“短日期”。
3.设置“性别”字段的默认值为“男”,“民族”的默认值为“汉族”
4. 设置年龄的有效性规则在20岁到60岁之间(>=20 and <=60),有效性文本为“年龄必须在20到60之间”,设置“性别”有效性规则为男或女 ("男" or "女")
5.设置出生日期的输入掩码为“9900/90/90;0;_”
6.设置“部门号”字段采用下拉框输入,数据来自于部门表,(使用查询向导的方式生成)
7.对员工表先按部门排序,然后按姓名排序。
实验六 数据库的完整性定义与检查 (2)

实验六数据库的完整性定义与检查实验目的:1.充分理解关系数据库中关于数据库完整性的概念。
2.掌握实体完整性的定义和检查方法。
3.掌握参照完整性的定义和检查方法。
4.掌握用户自定义完整性的定义和检查方法。
实验内容:一、在企业管理器中定义以下数据表中各字段的完整性约束(包括实体完整性、参照完整性和用户定义完整性)。
1.Student表。
记录学生基本信息。
表1-1 Student 表结构[Sno] [char](9)PRIMARY KEY,[Sname] [char](8)NOT NULL,[Ssex] [char](2)CHECK(Ssex IN('女','男')),[Sage] SMALLINT CHECK(Sage>=15 AND Sage<=45),[Sdept] [char](20)default('计算机'))2.Course表。
记录课程信息。
表1-2 Course 表结构[Cno] [char](10)PRIMARY KEY,[Cname] [char](20)NOT NULL,[Ccredit] SMALLINT CHECK(Ccredit>0),[Semester] SMALLINT CHECK(Semester>0),[Period] SMALLINT CHECK(Period>0),)3.Sc表。
记录学生选修课程的信息。
表1-3 Sc 表结构[Sno] [char](9)NOT NULL,[Cno] [char](10)NOT NULL,[Grade]SMALLINT CHECK(Grade>=0 and Grade<=100),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno))二、在查询编辑器中,写出创建表的语句同时写出设置实体完整性、参照完整性和用户自定义完整性的语句。
数据库技术实验实训报告

一、实验实训目的1. 理解数据库技术的概念、原理和方法。
2. 掌握数据库设计、创建、管理和维护的基本技能。
3. 熟悉数据库查询语言SQL的使用。
4. 学会使用数据库开发工具进行数据库应用系统的开发。
二、实验实训内容1. 数据库设计- 实验内容:设计一个简单的学生信息数据库,包括学生表、课程表、成绩表等。
- 实验步骤:1) 使用E-R图工具绘制数据库概念结构图。
2) 将E-R图转换为关系模式,确定实体、属性和关系。
3) 使用数据库设计工具(如PowerDesigner)创建数据库结构。
4) 在数据库中创建表,并设置主键、外键等约束。
2. 数据库创建与维护- 实验内容:创建一个学生信息数据库,并对其进行基本维护操作。
- 实验步骤:1) 使用SQL语句创建学生信息数据库。
2) 使用SQL语句创建学生表、课程表、成绩表等。
3) 使用SQL语句插入、删除、修改和查询数据。
4) 使用SQL语句进行数据库备份和恢复。
3. 数据库查询- 实验内容:使用SQL查询语言对学生信息数据库进行查询操作。
- 实验步骤:1) 使用SELECT语句进行简单查询,如查询学生姓名和年龄。
2) 使用WHERE子句进行条件查询,如查询成绩在80分以上的学生。
3) 使用JOIN语句进行多表查询,如查询学生的姓名、课程名称和成绩。
4) 使用ORDER BY子句进行排序,如按成绩降序查询学生。
4. 数据库编程- 实验内容:使用Transact-SQL编程语言编写存储过程和触发器。
- 实验步骤:1) 创建一个存储过程,实现学生信息的插入、删除和修改。
2) 创建一个触发器,当学生信息表中的数据发生变化时,自动更新其他相关表的数据。
5. 数据库应用系统开发- 实验内容:使用数据库开发工具(如Visual Studio)开发一个简单的学生信息管理系统。
- 实验步骤:1) 使用数据库连接控件连接到数据库。
2) 使用数据绑定控件显示数据库中的数据。
3) 使用事件驱动编程实现数据的新增、修改、删除和查询等功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验目的:1. 掌握存储过程的使用方法;2. 掌握触发器的实现方法;rjM_K.IGG...o.hpl叮碍 SUUieryJ.E . itir血Ecus tonardurji 5exV.'crtYMr ⑷崔加础ur 怙WilTrue中憎0帧Tnz 3SJ21121 1(2)创建存储过程,根据每个员工的学历将收入提高500元alter proc SA_IN @enuchar(6)asbeginupdate Salaryset InCome=InCome+500 from Salary,Employeeswhere Employees.EmployeeID =Salary.EmployeeID and Education=@enu endselect In Comefrom Salary,Employeeswhere Salary.EmployeeID = Employees.EmployeeID and Education ='本科' goexecdbo.sa_ in'本科'goselect In Comefrom Salary,Employeeswhere Salary.EmployeeID = Employees.EmployeeID and Educati0门=本科' select In Comefrom Salary,Employees where Salary.EmployeeID =Employees.EmployeeID■I■ ■ ■ H1 20B2 ;4 52A&7D1 34&D7 3031.55inCcwii*1;2532232937014羽曲才号3521(3)创建存储过程,使用游标计算本科及以上学历的员工在总员工数中的比例。
declare@edu varchar ( 10),@part_cou nt int 5@all_cou nt int Jdeclare mycursor cursor forselect disti net educati on ,COUNT( education ) over ( partitionby education ) as part_cou nt ,COUNT( education ) over () as all countand Educati0门=本科from Employees ope n mycursor fetch n ext frommycursor into @edu, @part_count , @all_count while @@FETCH_STATUS= 0 begin print@edu +'占总人数比例:'+co nvert ( varchar (100), con vert (n umeric (38,2), @part_cou nt/ 1.0 / @all_cou nt*100))+ '%'fetch n ext from mycursor into @edu, @part_count , @all_countendclose mycusor deallocate mycursor(4) 使用命令方式修改及删除一个存储过程。
if exists( select workyear from Employees where workyear =3)drop procedure workyear2. 触发器(1) 对于 YGGL 数据库,表 Employees 的Employeeid 列与表 Salary 的Employeeid 列应满足参照完整性规则,请用触发器实现两个表间的参照完整 性。
create trigger SalaryinsO on Salary for insert,update as beginif (select employeeid from in serted) not in (select EmployeelD from Employees) rollback endcreate trigger Employeesupdate0 on dbo.Employees for update as beginupdate Salaryset employeeid =(select employeeid from inserted) where employeeid =(select employeeid from deleted) endcreate trigger Employeesdelete0 on Employees for delete as亍o7第B侶代另begindelete from Salarywhere employeeid =(select employeeid from deleted)end(2)当修改表Employees时,若将Employees表中员工的工作时间增加 1 年,则将收入增加500,若增加2年则增加1000,依次增加。
若工作时间减少则无变化。
create trigger em_workyear on Employeesafter updateasbegindeclare @a int ,@b intset @a=( select workyear from in serted )set @b=( select workyear from deleted )if (@a>@b)update Salaryset in come =in come + ( @a- @b>* 500where enployeeid in( select EmployeesID from inserted )endupdate Employeesset workyear =12where EmployeesID ='000001'(3)创建UPDATE触发器,当Salary 表中In Come值增加500时,outCome 值则增加50。
create trigger sa_in come on Salaryfor update as begi nif (( select in come from in serted )-( select in come from deleted )= 500 )update Salary set outcome =outcome + 50where en ployeeid = (select en ployeeid from in serted )end select in come , outcomefrom Salary where en ployeeid ='000001'二结果J消息incorne outcorne12100.8123.M5) 创建INSTEAD OF触发器,实现向不可更新视图插入数据create view a_viewasselect Employees . EmployeesID , name , workyear , income , outcome from Employees , Salarywhere Employees . EmployeesID =Salary . enployeeidgocreate trigger gxston a_viewin stead of in sertasbegindeclare @Ei char (6), @name char ( 10), @wy tinyint ,@ic float ,@oc float select @Ei = EmployeesID , @name =name , @wy=workyear ,@ic = in come , @oc=outcome from in sertedin sert into Employees ( EmployeesID , name, workyear )values (@Ei, @name, @wy) in sert into Salary values ( @Ei, @ic , @oc)endin sert into a_viewvalues ('000011','小芳',3, 2000 , 1500 )select * from a_viewwhere EmployeesID ='000011'E叩切也ID Naw IrtCome OUtCoow1000011小55320001500(5)创建DDL触发器,当删除数据库时,提示“无法删除”并回滚删除操作。
create trigger table_delete on database after drop_tableas print'不能删除表'rollback transaction go drop table YGGLJ消息不能删除表消息3迪,级别血状态S第1行事务在触发器中结束。
批处理已中止。
实验总结(结论或问题分析) :在本次实验中,感觉很难,对触发器和存储过程不是很了解,最后老师讲了,自己通过讲的虽然说做出来了,但是还是有不明白的地方,需要自己在下面复习巩固。