《数据库管理与开发实验报告.doc》由会员分享,可在线阅读,更多相关《数据库管理与开发实验报告.doc(23页珍藏版)》请在三一办公上搜索。
1、实验报告数据库管理与开发课程号:B0900990实验项目:数据库设计、创建、管理,数据库操作学号11090401= 姓名000专业班级电商1102 实验地点工程学院机房(文波)同组人学号姓名 时间2013年9-12月评语(要求): 按时完成实验;实验内容和过程记录完整;回答问题完整、正确;实验报告的撰写认真、格式符合要求。成绩教师签字肖慎勇一、实验目的1理解并掌握数据库设计的概念、方法和步骤。2初步应用数据库设计方法。了解需求分析的内容。3重点运用ER模型进行概念设计,然后将ER模型转换为关系模型。4深入理解SQL Server 2008数据库的存储结构。5深入理解SQL Server 200
2、8的数据类型、表对象设计与定义。6掌握SQL Server 2008Management studio的应用。运用交互方式和命令方式建立数据库和表。7认识和掌握Transact-SQL 的数据库操作。8深入理解视图意义。掌握SQL Server 中创建、管理与应用视图的方法。9深入理解数据库安全的概念。10深入理解SQL Server 2008的安全体系框架。掌握登录与服务器角色的概念、操作与应用。掌握数据库用户、固定角色、自定义角色、架构的概念、操作与应用。掌握数据库权限的概念、操作与应用。11理解事务的概念。深入理解并掌握服务器编程的意义及方法。能够编写各种自定义函数和存储过程。12理解触
3、发器,并能够编写、应用触发器。13理解备份与恢复的意义及基本操作。二、实验设备(环境)及要求PC、 Windows XP、SQL SERVER 2008三、实验内容及要求 实验项目:电脑商品信息处理数据库 通过调查、收集信息、分析,写出分析与设计报告。1. 简要的系统需求分析包括业务分析、功能需求分析、信息需求分析。试分析该系统的基本业务,计算机信息系统需要完成的基本功能、信息系统需要处理的信息。2. 概念设计设计系统的概念模型,采用ER模型。3. 逻辑设计将ER模型为关系模型,指出每个关系的主键、外键和必要的约束。4. 写出数据库的物理设计包括存储组织结构、表的结构设计等。5. T-SQL命
4、令方式创建数据库的操作利用SQL命令创建数据库文件、表、索引、联系和主键、外键等约束。(实验报告应写出实验的过程,包括必要的截图。)6. 利用T-SQL命令增加、删除、修改数据。7. 利用T-SQL命令进行数据的检索和统计根据自己设计的数据库和输入的数据,写出至少10个查询要求及对应的SQL查询命令,应该包含如下功能:投影和选择; 多表连接;子查询;查询结果保存。 8. 利用SQL命令创建视图对象根据开发的系统的需要,设计视图:包含多表连接的、包含统计运算的。利用SQL对视图进行查询。9. (选做)对视图进行插入、删除、修改数据操作。体会视图与表的异同。10. 编写自定义函数。(1)编写一个自
5、定义函数,将一个字符串作为自变量,返回颠倒顺序的字符串。写出源代码。(2) 编写一个自定义函数,能够实现参数化查询的功能。自己设定函数的具体要求,然后编写出来。11. (选做)编写利用游标进行数据处理的存储过程。并在存储过程中应用事务的概念。自己确定过程的具体要求,然后编写出来。12. 编写一个实现修改表的触发器,实现完整性控制。13. 设置服务器身份验证模式。用命令创建若干不同验证模式的登录账户。14. 将部分登录赋予服务器角色。然后撤消。15. 将部分登录映射到你的数据库中成为用户。16. 创建自定义角色、架构。创建架构对象及对象在不同架构之间的转移。17. 通过角色给用户授权。18. 直
6、接给用户授权,验证其获得权限前后的操作差别。19. 删除用户和自定义的角色。四、回答问题1你如何认识需求分析在系统开发中的地位和重要性?答:我认为需求分析是对所开发的系统进行市场需求的分析,从而将功能模块化、系统化,使系统的开发人员能够更好地理解客户的需求,并在客户需求的基础上进行完善、弥补。其次,为系统进行概要模型设计,将系统的流程信息进行整合,防止出现数据冗余或者系统崩溃等系统bug。总而言之,需求分析是系统开发的基石,不做好需求分析,必然无法将系统的框架清晰的设计出来,更不用谈设计出合乎客户需求的系统了。只有做好第一步,将系统的核心抓住,后面的设计流程基本上就能够畅通了。2设计ER图、关
7、系模型分别属于数据库设计的哪一阶段?答:ER图属于概念设计阶段;关系模型处于逻辑设计阶段。3主键、外键对于关系数据库的意义何在?答:主键是对表的约束,保证数据的唯一性;外键是建立表于表之间的联系,方便程序的编写。主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。4在数据库存储结构设计时要考虑哪些因素?答:首先要确定数据的存放位置和存储结构,包括:确定关系、索引、聚簇、日志、备份等的存储安排,确定系统配置。同时要综合考虑存取时间、存储空间利用率和维护代价3个方面的因素。把它们进行权衡,选择一个折中的方案。5在表设计时对于数据类型
8、的选择和使用如何考虑?答:设计表是数据库设计中的重要步骤,所以对于表中的数据类型的定义和选择也非常的重要。主要要按照以下三点进行考虑:1)首先要清楚理解数据库中各种数据类型的用法和范围;2)应该根据字段的实际类型来考虑数据类型;3)要估计表中数据的大小范围,来确定数据类型的大小,避免空间不足或者浪费。 6. 交互式如何实现表之间的联系?SQL命令如何实现表之间的联系?答:1)交互式:在管理平台中,展开要操作的数据库,选择“数据库关系图”选项,然后单击鼠标右键,在弹出的快捷菜单中选择“新建数据库关系图”命令,在弹出的窗口中选择要建立关系的表后,则会弹出数据库关系图设计窗口。然后右键单击关系图的空
9、白页面,在弹出的快捷菜单中,可以新建或添加数据库中已定义的表,在该表的关联菜单中选择“属性”选项,可以创建或定义该表的关系、键、索引和约束或修改当前的附加特性。 2)SQL命令:ALTER TABLEADD CONSTRAINT constraint_namePRIMARYKEYCLUSTERED|NONCLUSTEREDFOREIGN KEYREFERENCES ref_table7如果在定义表时进行了主键、外键以及约束等完整性设置,对于数据的输入有何影响?试举例说明。答:定义主键 :定义主键来强制不允许空值的指定列中输入值的唯一性。如果在数据库中为表定义了主键,则可将该表与其它表相关,从而
10、减少冗余数据。表只能有一个主键。如果主键包含不止一列,则在一列中允许有重复值,但主键中所有列值的每个组合必须唯一。 定义外键:外键引用完整性表示得到正常维护的表之间的关系。表中的数据只应指向另一个表中的现有行,不应指向不存在的行。主键约束:使用单列或者多列组合,表示每一条记录的唯一性,值不能为空。外键约束: 为了加强数据表之间的关键的表中的单列或者多列值,必须依赖另外的表存在;唯一约束:不允许数据库中的某一列数据有重复,但是允许有空值存在。主键和唯一性约束定义了表中记录的唯一性,但是主键列的值不能为空,而唯一键约束的列的值可以为空值。举例如下:如果主键的列值为空,会提示不能输入数据。8用INS
11、ERT INTO 命令输入,如果数据与字段数量和要求不一致有什么问题?当表定义中有默认值的时候,插入记录是否可以省略该字段的数据?答:如果数据与字段数量和要求不一致,那么会插入失败,并且SQL Server将显示错误信息。有默认值时可以省略该字段数据,系统会为该列提供默认值。9HAVING子句有什么作用?答:HAVING字句与WHERE子句一样,也可以起到按条件选择记录的功能,但HAVING子句是作用于组,必须与GROUP BY子句连用,用来指定每一分租内应满足的条件。 10当通配字符作为普通字符参与匹配查询时,如何解决这样的问题?答:这与其他语言中的问题一样,这时只需要对通配符进行转义即可,
12、具体操作为对通配符加。 11可否利用视图进行数据的插入、删除、修改? 答:可以通过视图对基础表中的数据进行检索、添加、修改和查询。但是插入、修改、删除数据是只能做单表的,基于多表的视图不可以删除和修改。具体例子在后文中可见。12根据自己的体会,谈谈视图在数据库体系中的作用。 答:利用视图可以简化用户操作数据的方式。可将经常使用的连接、投影、联合查询和选择查询定义为视图,这样每次对特定的数据执行进一步操作时,不必指定所有条件和限定。除此之外还可以定制数据,导出数据。还可以用GRANT和REVOKE命令为各种用户授予在视图上的操作权限,这样通过视图,用户只能查询或修改他们各自所能见到的数据,数据库
13、中的其他数据对他们来说是不可见的或不可修改的。保证数据库的安全性。13视图是如何保存的?视图中的数据是否真的存储在文件中?答:保存视图将更改服务器上的视图定义。 当您保存视图时,基础数据库引擎将使用新的视图定义。在查询和视图设计器中打开视图定义并对其进行修改。(1)在查询和视图设计器中打开视图定义并对其进行修改。(2)从“文件”菜单中单击“保存 view_name”,其中 view_name 是打开的视图的名称。14 SQL SERVER有几种身份验证模式?区别是什么?不同验证模式的登录账户有何区别?答:有两种(1)windows身份验证模式,是默认的验证模式,使用windows操作系统的安全
14、机制验证用户身份,只要用户能够通过windows用户账号验证,并且是SQL Server的登录账户,即可连接到SQL Server而不用进行身份验证,只适用于能够提供有效身份验证的windows操作系统。(2)混合的验证模式:在该模式下,Windows和SQL Server两种验证模式都可用,对可信任连接用户,直接采用windows 的身份验证,否则采用SQL Server模式,用户在连接SQL Server时必须提供登录名和密码,SQL Server自己执行认证处理,如果输入的登录信息与系统表syslogins中的某几条记录相匹配时表明登录成功。15Sa账户有何特点? 答:Sa账户是SQL
15、Server的特殊账户,sa账户拥有服务器和所有的数据库。即Sa账户拥有最高的管理权限,可以执行服务器范围内所有操作。它是以SQL Server身份验证的,所以必须设置一个密码。同时,sa账户的属性不可以更改,密码可以修改。Sa登录时无法删除的。16共有几种服务器角色?最高权限角色是什么?能够创建数据库的角色是哪个?答:共有8种固定服务器角色,分别是:sysadmin,serveradmin,setupadmin,securityadmin,processadmin,dbcreator,diskadmin,bulkadmin;同时每一个登录用户都属于public服务器角色。最高权限的角色是sy
16、sadmin;能够创建数据库的角色是:sysadmin,dbcreator。17数据库用户和登录账户有什么关系?guest是什么用户?有何作用?答:这是两种不同级别的安全机制,登录账户是SQL Server级的安全性设置,而数据库用户则是数据库级的安全性设置。登录账户用于登录服务器,但是当某一用户要访问某个数据库时,除了可以成为服务器的一个登录以外,还必须成为这个数据库的用户账户,即获得一定的授权。数据库用户账号在一般情况下是从某个登录账户中映射过来的。Guest是来宾用户,是用来共享文件的。任何一个登录都可以以此身份访问数据库。Guest自动本身只具有public权限。也可以由其他用户授权。
17、 18数据库角色有哪两类?PUBLIC角色有何特点?答:数据库角色分为固定的数据库角色和用户定义数据库角色。每个数据库都有一系列固定数据库角色。虽然每个数据库中都存在名称相同的角色,但各个角色的作用域只是在特定的数据库内。用户定义数据库角色是用户根据工作的职能定义一系列角色,并给每个角色指派了适合这项工作的权限。从而在数据库中管理这些权限。PUBLIC角色的特点:默认不具有任何权限,但用户可对此角色进行授权,他不能被删除,是所有user自动拥有的角色。数据库中的每个用户都属于 public 数据库角色。如果想让数据库中的每个用户都能有某个特定的权限,则将该权限指派给 public 角色。如果没
18、有给用户专门授予对某个对象的权限,他们就使用指派给 public 角色的权限。 19用户与架构有什么关系?系统默认架构是什么?怎样为用户指定架构?答:SQL Server 2000中数据库用户和构架是隐式连在一起的,架构将用户和权限之间建立了一个间接地方式。数据库架构是一个独立于数据库用户的非重复命名空间,可以将架构视为对象的容器。每个数据库用户都是与该用户同名架构的所有者;而在SQL Server 2005中构架和用户是不同的实体。一个对象只能属于一个架构,就像一个文件只能存放于一个文件夹中一样。与文件夹不同的是,架构是不能嵌套的。系统默认架构是dbo架构;通过使用CREATE USER 和
19、ALTER USER 语句,可以分配一个默认架构;也可以通过SSMS在该用户的属性下面分配一个默认架构。 20. 什么是安全对象?怎样为数据库用户指定查询表的权限?答:安全对象是SQL Server 数据库引擎授权系统控制对其进行访问的资源。安全对象范围有服务器、端点和架构。21简述自定义函数、存储过程和触发器的异同。答:1)自定义函数、存储过程、和触发器都是模块化设计的类型。2)函数最后是返回一个值,在表达式中调用,定义函数时要定义函数的函数名、参数、函数值类型和函数体。3)存储过程经编译后放在数据库服务器端,供客户端调用,处理一件事或完成一个功能,有单独的调用命令。调用过程时,是实际参数与
20、形参的传递(值传递和名传递两种)。定义过程时需定义过程名、参数、过程体。它可以实现完整性控制机。4)触发器实质是一种特殊类型的存储过程,它在插入、修改或删除时触发执行。能够实现由主键和外键所不能保证的参照完整性和数据的一致性。22(选做)什么是游标?应用游标的步骤是什么?答:游标是对表的运用的一种机制,相当于在表上定义一条指针,把表中的数据按一行一行的来读取。把表中的数据取出来放在高级语言的变量中,是SQL语言与高级语言之间的桥梁。应用游标的步骤:(1)声明游标(2)打开游标,即把外存上的数据调入内存,运行查询(3)提取数据(4)关闭游标(5)释放游标 23. 有哪几种恢复模式和几种备份类型?
21、答: 在数据库的备份与恢复关系中,恢复决定了备份。一般有以下三种恢复模式:1) FULL:完整恢复模式。还原整个数据库时,应使用单一还原顺序。还原顺序由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。并将省略与此目的不相关的语法和详细信息。涉及到一个保存历史事务日志文件的数据库。每一个数据变动操作历史记录都将被保存。2) BULK_LOGGED:大容量日志恢复模式。与完整恢复模式(完全记录所有事务)相比,大容量日志恢复模式只对大容量操作进行最小记录(尽管会完全记录其他事务)。大容量日志恢复模式保护大容量操作不受媒体故障的危害,提供最佳性能并占用最小日志空间。但是,大容量日志恢复模式会
22、增加这些大容量复制操作丢失数据的风险,因为大容量日志操作阻止再次捕获对每个事务逐一所做的更改。如果日志备份包含大容量日志操作,则无法还原到该日志备份中的时点,而只能还原整个日志备份。3) SIMPLE:简单恢复模式。当一个数据库设置为简单恢复模式,这意味着日志文件不会被永久保存。因此,当执行一个TSQL声明,任何改变被写入数据和日志文件,但这些日志文件在被删节(清理)之前不会保存很长一段时间。五、 分析讨论 通过实验我觉得最重要的是系统分析,逻辑设计和物理设计时一定要认真想清楚每张表的属性和它们之间的相互联系,这样在后面使用查询的时候才不会出错,如果前面没做好,后面做查询的时候就会出现各种错误
23、,如数据结构定义不统一,外键冲突等问题。除此之外要做好一个数据库系统,要掌握好学习中的每一步,平时上课学习很有用,好好学了,做的时候就会比较轻松。除此之外,我觉得函数和触发器那部分比较难,只会实现简单的查询、删除、修改控制。对基于多表的带参函数运用还比较弱。六、 具体实验步骤餐饮综合管理系统1、简要的系统需求分析随着社会经济的高速发展,酒店的餐饮管理也面对着不小的挑战。日益增大的客流量、逐渐加快的生活节奏,都使得人们对餐饮行业的服务质量有了更高的要求。因此,我们的餐饮管理系统不仅需要有完善的、人性化的界面,还需要有一套完整的流程体系。要尽可能的简化人员的工作程序、减少工作量,使得酒店、餐厅的营
24、业更加的便利、快捷,扩大知名度。现将具体的系统功能罗列如下:员工可以实现以下功能:添加修改查询客户会员信息(修改客户信息需客户确认)查询确认客户所下的菜单管理员可以实现以下功能:对客户信息实现“增、删、改、查” 添加修改查询菜单信息,最好能看到菜品图片对职员信息实现“增、删、改、查” 可以查询使用者的现金收款金额除了实现以上功能外,本系统还需要方便用户地使用,使得用户可以很快地熟练掌握,从而可以让用户快速的投入工作。并且要避免逻辑错误的出现。2、 概念设计2.1逻辑结构设计E-R图:厨师姓名厨师编号厨房餐桌类型餐桌餐桌编号餐桌状态审查日期职员编号财务部门填表日期职员姓名菜式价格菜式编号菜单菜式
25、名称菜式详情职员编号账单编号账单消费总额顾客编号经手人顾客编号顾客人数餐桌编号厨师编号顾客菜式价格菜式编号顾客编号点菜餐桌n 菜单订座n点菜 11顾客账单1n财务部门1结账1财务管理将ER模型转化为关系模型(下划线为主键)1)餐桌(餐桌编号+餐桌状态+餐桌类型);2)顾客(顾客编号+餐桌编号+账单编号+顾客人数+厨师编号);3)账单(账单编号+顾客编号+消费总额+职员编号+经手人);4)菜单(菜式编号+菜式名称+菜式价格+菜式详情);5)点菜(顾客编号+菜式编号+菜式价格);6)厨房(厨师编号+厨师名称);7)财务部门(职员编号+职员姓名+审查日期+填表日期)。2.2数据库的物理设计餐桌编号字
26、段名称数据结构约束条件1餐桌编号intNot null primary key2餐桌状态Char(10)Not null 3餐桌类型Char(10)Not null顾客编号字段名称数据结构约束条件1顾客编号intNot null primary key2餐桌编号intForeign key3厨师编号intForeign key4顾客人数intnull5账单编号intNot null 账单编号字段名称数据结构约束条件1账单编号intNot null primary key2顾客编号intForeign key3职员编号intForeign key4经手人Char(50)Not null菜单编号字
27、段名称数据结构约束条件1菜式编号intNot null primary key2菜式名称Char(50)Not null3菜式价格money104菜式详情textnull厨房编号字段名称数据结构约束条件1厨师编号intNot null primary key2厨师姓名Char(50)Not null3厨师月薪moneyNot null财务部门编号字段名称数据结构约束条件1职员编号intNot null primary key2职员姓名Char(50)Not null3审查日期dataNot null4填表日期dataNot null点菜编号字段名称数据结构约束条件1详情编号intNot nul
28、l primary key2菜式编号intNot null 3菜式份数intNot null4账单编号intNot null 3、 T-SQL命令方式创建数据库文件、表、索引、联系和主键、外键等约束 1)创建数据库:CREATE DATABASE 餐厅管理系统ON PRIMARY( NAME=RR_DAT, FILENAME=E:RRRR_DAT.MDF, SIZE=5, MAXSIZE=30, FILEGROWTH=2 )LOG ON( NAME=RR_LOG, FILENAME=F:RRLOGRR_LOG.LDF, SIZE=3, MAXSIZE=10, FILEGROWTH=10% )U
29、SE 餐厅管理系统2) 创建表结构:CREATE TABLE 餐桌( 餐桌编号 INT PRIMARY KEY, 餐桌类型 CHAR(10), 餐桌状态 CHAR(10) NOT NULL)CREATE TABLE 菜单( 菜式编号 INT PRIMARY KEY, 菜式名称 CHAR(50) NOT NULL, 菜式价格 MONEY NOT NULL, 菜式详情 TEXT)CREATE TABLE 厨房( 厨师编号 INT PRIMARY KEY, 厨师姓名 CHAR(50) NOT NULL)CREATE TABLE 财务部门( 职员编号 INT PRIMARY KEY, 职员姓名 CHA
30、R(50), 审查日期 DATE, 填表日期 DATE)CREATE TABLE 顾客( 顾客编号 INT PRIMARY KEY, 餐桌编号 INT REFERENCES 餐桌(餐桌编号), 厨师编号 INT REFERENCES 厨房(厨师编号), 顾客人数 INT )CREATE TABLE 账单( 账单编号 INT PRIMARY KEY, 顾客编号 INT REFERENCES 顾客(顾客编号), 职员编号 INT REFERENCES 财务部门(职员编号), 消费总额 MONEY NOT NULL, 经手人 CHAR(50) NOT NULL)3) 修改表中属性:ALTER TAB
31、LE 餐桌ALTER COLUMN 餐桌状态 CHAR(10) NOT NULL4) 创建索引:create index 菜式价格 on 菜单(菜式价格)Exec sp_helpindex 菜单5)创建约束:ALTER TABLE 菜单ADD CONSTRAINT CK_菜式价格check (菜式价格10)6)添加数据: INSERT INTO 财务部门 VALUES(1,张莉,2013/1/2,2013/2/5)INSERT INTO 财务部门 VALUES(2,张宏旭,2013/1/3,2013/2/5)INSERT INTO 财务部门 VALUES(3,马一菲,2013/1/5,2013
32、/2/5)select *from 财务部门7) 更新数据:UPDATE 餐桌 SET 餐桌状态=占用 -顾客入座后,把餐桌状态置为占用表示已占座FROM 餐桌,顾客 WHERE 餐桌.餐桌编号 = 顾客.餐桌编号SELECT * FROM 餐桌8) 查询命令:-投影和选择SELECT 账单.账单编号,SUM(菜式价格*菜式份数) AS 消费总额FROM dbo.菜单,dbo.账单,dbo.点菜WHERE 账单.账单编号=点菜.账单编号 AND 点菜.菜式编号=菜单.菜式编号GROUP BY 账单.账单编号 select 顾客.餐桌编号 from 顾客select 菜式名称, 菜式价格 fro
33、m 菜单SELECT 厨师编号,厨师姓名,avg(厨师月薪)as 工资 FROM dbo.厨房group by 厨师编号,厨师姓名having avg(厨师月薪)2500 -条件查询 select * from 菜单where 菜式价格30 AND 菜式详情 like 招牌特色 -多表连接,选择某位顾客的烹饪厨师姓名select 厨房.厨师编号,厨房.厨师姓名,顾客.顾客编号 from 厨房,顾客where 厨房.厨师编号=顾客.厨师编号select 账单.职员编号,职员姓名,顾客编号 from 账单,财务部门where 财务部门.职员编号=账单.职员编号Order BY 职员编号 -子查询
34、SELECT * FROM 菜单WHERE 菜式价格=(SELECT AVG(菜式价格)FROM 菜单) SELECT * FROM 餐桌WHERE 餐桌.餐桌编号ALL(SELECT 顾客.餐桌编号 FROM 顾客) -查询结果保存select 菜式名称, 菜式价格into M_INfofrom 菜单,点菜where 菜单.菜式编号=点菜.菜式编号order by 菜式价格select *from M_INfo9) 创建视图:1. 基于单表的: -建立视图 CREATE VIEW Menu AS SELECT 菜式编号,菜式名称,菜式价格,菜式详情FROM dbo.菜单exec sp_hel
35、ptext Menu2. 基于多表的: -多表连接视图 create view 账单处理(账单编号,职员编号,职员姓名,处理日期) as select 账单.账单编号,账单.职员编号,职员姓名,填表日期 from dbo.账单,dbo.财务部门 where 账单.职员编号=财务部门.职员编号 sp_helptext 账单处理3. 包含计算的:-统计计算的视图create view 厨师信息asselect 厨房.厨师编号,厨师姓名, 账单.账单编号,avg(厨师月薪)as 平均薪资from 厨房,账单 where 账单.经手人=厨房.厨师姓名group by 厨房.厨师编号,厨师姓名, 账单.
36、账单编号 sp_helptext 厨师信息10) 对视图进行插入、删除、修改数据操作: -查询视图 select*from Menuwhere 菜式价格20 and 菜式价格0 begin set p=p+Substring(p,I,1) set I=I-1 end set p=Right(p,N) return p end select dbo.word_reve(I am RMY.) 参数化查询的功能(根据订单的编号查询订单中的菜式情况) -参数化查询功能 create function 点菜情况(点菜编号 int) returns table as return(select 菜式名称,
37、账单编号,菜式份数,菜式详情 from 点菜,菜单 where 账单编号=点菜编号 and 菜单.菜式编号=点菜.菜式编号) select * from 点菜情况(2)12) 利用游标进行数据处理 -游标的使用 declare cur_人员 cursor global scroll dynamic for select 职员编号,职员姓名,填表日期 from 财务部门 open cur_人员 fetch next from cur_人员 while fetch_status=0 begin fetch next from cur_人员 end13) 编写一个实现修改表的触发器,实现完整性控制。
38、 -触发器 CREATE TRIGGER CDDEL ON dbo.菜单 FOR DELETE AS BEGIN DECLARE BH CHAR(4) SELECT BH=菜式编号 FROM DELETED IF EXISTS (SELECT * FROM 点菜 WHERE 菜式编号=BH) UPDATE dbo.点菜 SET 点菜.菜式编号=NULL WHERE 点菜.菜式编号=BH End delete from 菜单 where 菜式编号=2014) 设置服务器身份验证模式。用命令创建若干不同验证模式的登录账户。(1)在控制面板了面创建用户(2)创建Windows身份验证和SQL Ser
39、ver的登录账户15) 将部分登录赋予服务器角色。然后撤消。 exec sp_addsrvrolemember 四叶草,sysadmin exec sp_addsrvrolemember ZY-20080929TQYO满天星,dbcreator exec sp_helpsrvrolemember sysadmin exec sp_helpsrvrolemember dbcreator 撤销服务器角色成员: exec sp_dropsrvrolemember 四叶草,sysadmin exec sp_dropsrvrolemember ZY-20080929TQYO满天星,dbcreator16
40、) 将部分登录映射到你的数据库中成为用户。 use 餐厅管理系统 go create user 四叶草 from login 四叶草create user ZY-20080929TQYO满天星 from login ZY-20080929TQYO满天星17) 创建自定义角色、架构。创建架构对象及对象在不同架构之间的转移。 (1)创建自定义角色 create role role1 create role role2 create role role3 authorization 四叶草 (2)创建自定义架构 create schema sc1 create schema sc2 authoriz
41、ation 四叶草 create schema sc3 /把sc2的所有权转让给ZY-20080929TQYO满天星,它就可以直接使用sc2下的表 alter authorization on schema: sc2 to ZY-20080929TQYO满天星18) 通过角色给用户授权 use 餐厅管理系统 GRANT update ON 员工TO role1 GRANT SELECT ON 工资TO role1 EXEC sp_addrolemember role1,四叶草用户四叶草获得对员工表的更新和对工资表的查询权限 GRANT update ON 部门TO role2 GRANT SELECT ON 考勤TO role2 EXEC sp_addrolemember role2,ZY-20