版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.PAGE.《数据库管理实务》实验报告课程号:B0900980实验项目:数据库设计、创建、管理,数据库操作学号姓名马冰洁同组人学号姓名实验地点工程学院机房〔文波指导教师肖慎勇时间20XX6月评语〔要求:按时完成实验;实验内容和过程记录完整;回答问题完整、正确;实验报告的撰写认真、格式符合要求。成绩教师签字肖慎勇一、实验目的1.理解并掌握数据库设计的概念、方法和步骤。2.初步应用数据库设计方法。了解需求分析的内容。3.重点运用ER模型进行概念设计,然后将ER模型转换为关系模型。4.深入理解SQLServer2005数据库的存储结构。5.深入理解SQLServer2005的数据类型、表对象设计与定义。6.掌握SQLServer2005Managementstudio的应用。运用交互方式和命令方式建立数据库和表。7.认识和掌握Transact-SQL的数据库操作。8.深入理解视图意义。掌握SQLServer中创建、管理与应用视图的方法。9.深入理解数据库安全的概念。10.深入理解SQLServer2005的安全体系框架。11.掌握登录与服务器角色的概念、操作与应用。掌握数据库用户、固定角色、自定义角色、架构的概念、操作与应用。掌握数据库权限的概念、操作与应用。12.理解事务的概念。13.深入理解并掌握服务器编程的意义及方法。14.能够编写各种自定义函数和存储过程。。15.理解触发器,并能够编写、应用触发器。二、实验设备〔环境及要求PC、WindowsXP、SQLSERVER2005三、实验内容及要求实验项目:各小组自选的项目。通过调查、收集信息、分析,写出分析与设计报告。1.简要的系统需求分析包括业务分析、功能需求分析、信息需求分析。试分析该系统的基本业务,计算机信息系统需要完成的基本功能、信息系统需要处理的信息。2.概念设计设计系统的概念模型,采用ER模型。3.逻辑设计将ER模型为关系模型,指出每个关系的主键、外键和必要的约束。4.写出数据库的物理设计包括存储组织结构、表的结构设计等。5.T-SQL命令方式创建数据库的操作利用SQL命令创建数据库文件、表、索引、联系和主键、外键等约束。〔实验报告应写出实验的过程,包括必要的截图。6.利用T-SQL命令增加、删除、修改数据。7.利用T-SQL命令进行数据的检索和统计根据自己设计的数据库和输入的数据,写出至少10个查询要求及对应的SQL查询命令,应该包含如下功能:投影和选择;多表连接;分组统计与HAVING;子查询;查询结果保存。8.利用SQL命令创建视图对象根据开发的系统的需要,至少设计三个视图:基于单表的、包含多表连接的、包含统计运算的。利用SQL对视图进行查询。9.对视图进行插入、删除、修改数据操作。体会视图与表的异同。10.编写自定义函数。〔1编写一个自定义函数,将一个字符串作为自变量,返回颠倒顺序的字符串。写出源代码。〔2编写一个自定义函数,能够实现参数化查询的功能。自己设定函数的具体要求,然后编写出来。11.编写利用游标进行数据处理的存储过程。并在存储过程中应用事务的概念。自己确定过程的具体要求,然后编写出来。12.编写一个实现修改表的触发器,实现完整性控制。13.设置服务器身份验证模式。用命令创建若干不同验证模式的登录账户。14.将部分登录赋予服务器角色。然后撤消。15.将部分登录映射到你的数据库中成为用户。16.创建自定义角色、架构。17.通过角色给用户授权。18.直接给用户授权,验证其获得权限前后的操作差别。19.删除用户和自定义的角色。四、回答问题1.你如何认识需求分析在系统开发中的地位和重要性?需求分析就是根据用户或者客户的需要来设计数据库。只有根据需求设计出的数据库才是有用的,否则整个设计过程都是在做无用功。并且在需求设计这个过程中根据具体需要设计出模型,后面的具体实现过程遵照前面设计的模型来完成,使得后面的工作能够更加具有效率。在需求分析中要严格遵守客户的需求,并且要根据需求找出最合适的方案,为后面的具体实现打下基础。需求分析是整个开发过程的第一个阶段,也是最重要的一步。2.设计ER图、关系模型分别属于数据库设计的哪一阶段?设计ER图属于概念设计阶段,关系模型属于逻辑设计阶段。3.主键、外键对于关系数据库的意义何在?主键是关系中能唯一区分、确定不同元组的单个属性或者属性组合。外键能够保证数据库的数据的完整性和一致性,通过外键,能够将相互关联的表联系起来。4.在数据库存储结构设计时要考虑哪些因素?需要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。5.在表设计时对于数据类型的选择和使用如何考虑?数据类型的选择首先要根据该属性的性质进行选择,如数值型,日期型等等。在确定基本类型之后,要考虑数据存取时间、取值范围、处理效率多方面的因素,选取合适的数据类型,这主要是在数值类型上的选择。6.交互式如何实现表之间的联系?SQL命令如何实现表之间的联系?交互式:单击工具栏上的"关系"按钮,打开"外键关系"对话框,在其中设置各表间关系。SQL命令:利用FOREIGNKEYREFERENCESreferenced_table_name<referenced_column>ONDELETE{NOACTION|CASCADE|SETNULL|SETDEFAULT}ONUPDATE{NOACTION|CASCADE|SETNULL|SETDEFAULT}7.如果在定义表时进行了主键、外键以及约束等完整性设置,对于数据的输入有何影响?试举例说明。主键和外键一般不允许为空,如果没有输入值的话会报错。再比如"性别"这一字段如果开发人员已经约束了其值只能为"男"或者"女",当使用者输入除以上两个值之外的任何值都会报错。8.用INSERTINTO命令输入,如果数据与字段数量和要求不一致有什么问题?当表定义中有默认值的时候,插入记录是否可以省略该字段的数据?如果数据与字段数量和要求不一致,只有在少于并且没有写出的那个已定义了默认值或者可为空的情况下才为正确,其他情况均是错误的。当表定义中有默认值的时候,插入记录可以省略该字段的数据。9.HAVING子句有什么作用?HAVING子句和WHERE语句一样都是实现查询功能中条件的控制和数据的选择,WHERE子句不能包含聚集函数,而HAVING子句一般包含聚集函数。HAVING子句还可以用来对分组结果进行筛选。10.当通配字符作为普通字符参与匹配查询时,如何解决这样的问题?①通过在ESCAPE子句中指定转义符、在查询条件下使用转义符指定某个通配字符是正常字符;②将通配符用方括号[]括起来,指定一个字符、字符串或范围,要求所匹配对象为它们中任意一个。11.可否利用视图进行数据的插入、删除、修改?对由多表连接成的视图修改数据时,不能同时影响一个以上的基表,也不能删除视图中的数据对视图上的某些列不能修改,这些列是:计算列,内置函数列和行集合函数列
对具有NOTNULL的列进行修改时可能会出错。通过视图修改或者插入数据时,必须保证未显示的具有NOTNULL属性的列有值,可以是默认值,IDENTITY等,否则不能像视图中插入数据行如果某些列因为规则或者约束的限制不能接受从视图插入的数据时,则插入数据可能会失败12.根据自己的体会,谈谈视图在数据库体系中的作用。视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。视图中看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。视图还保证了数据的安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。13.视图是如何保存的?视图中的数据是否真的存储在文件中?视图是一个虚拟表,是以脚本的形式存在于数据库中,即其中数据仍然是原来表的数据。视图中的数据任然是表中的数据,并不真的存储在文件中。14.SQLSERVER有几种身份验证模式?区别是什么?不同验证模式的登录账户有何区别?SQLServer2005提供了两种对数据库资源的访问进行身份验证的模式:Windows身份验证和混合模式身份验证。Windows身份验证。配置SQLServer2005使用Windows身份验证时,只有通过身份验证的Windows用户可以访问SQL实例。对于每个需要访问SQL实例的Windows用户,必须为其添加一个Windows登录。且该登录帐户必须为计算机的用户方可以访问SQLServer。混合模式身份验证。再混合模式身份验证下,Windows用户和SQL用户都可以访问数据库实例。需要为非Windows用户提供访问权限时,比如说另一个客户操作系统的用户需要访问SQLServer时就使用混合模式身份验证。15.Sa账户有何特点?Sa账户是SQLServer的特殊账户,sa账户拥有服务器和所有的数据库。即Sa账户拥有最高的管理权限,可以执行服务器范围内所有操作。它是以SQLServer身份验证的,所以必须设置一个密码。同时,sa账户的属性不可以更改,密码可以修改。Sa登录时无法删除的。16.共有几种服务器角色?最高权限的角色是什么?能够创建数据库的角色是哪个?共有8种固定服务器角色,分别是:sysadmin,serveradmin,setupadmin,securityadmin,processadmin,dbcreator,diskadmin,bulkadmin;同时每一个登录用户都属于public服务器角色。最高权限的角色是sysadmin;能够创建数据库的角色是:sysadmin,dbcreator;17.数据库用户和登录账户有什么关系?guest是什么用户?有何作用?这是两种不同级别的安全机制,登录账户是SQLServer级的安全性设置,而数据库用户则是数据库级的安全性设置。登录账户用于登录服务器,但是当某一用户要访问某个数据库时,除了可以成为服务器的一个登录以外,还必须成为这个数据库的用户账户,即获得一定的授权。数据库用户账号在一般情况下是从某个登录账户中映射过来的。Guest是来宾用户,是用来共享文件的。任何一个登录都可以以此身份访问数据库。Guest自动本身只具有public权限。也可以由其他用户授权。18.数据库角色有哪两类?PUBLIC角色有何特点?数据库角色分为固定的数据库角色和用户定义数据库角色。每个数据库都有一系列固定数据库角色。虽然每个数据库中都存在名称相同的角色,但各个角色的作用域只是在特定的数据库内。用户定义数据库角色是用户根据工作的职能定义一系列角色,并给每个角色指派了适合这项工作的权限。从而在数据库中管理这些权限。PUBLIC角色的特点:默认不具有任何权限,但用户可对此角色进行授权,他不能被删除,是所有user自动拥有的角色。数据库中的每个用户都属于public数据库角色。如果想让数据库中的每个用户都能有某个特定的权限,则将该权限指派给public角色。如果没有给用户专门授予对某个对象的权限,他们就使用指派给public角色的权限。19.用户与架构有什么关系?系统默认架构是什么?怎样为用户指定架构?SQLServer2000中数据库用户和构架是隐式连在一起的,架构将用户和权限之间建立了一个间接地方式。数据库架构是一个独立于数据库用户的非重复命名空间,可以将架构视为对象的容器。每个数据库用户都是与该用户同名架构的所有者;而在SQLServer2005中构架和用户是不同的实体。一个对象只能属于一个架构,就像一个文件只能存放于一个文件夹中一样。与文件夹不同的是,架构是不能嵌套的。系统默认架构是dbo架构;通过使用CREATEUSER和ALTERUSER语句,可以分配一个默认架构;也可以通过SSMS在该用户的属性下面分配一个默认架构。20.什么是安全对象?怎样为数据库用户指定查询表的权限?安全对象是SQLServer数据库引擎授权系统控制对其进行访问的资源。安全对象范围有服务器、端点和架构。为指定数据库用户授予table的权利,然后在下面的权限中选择select即可。授权命令:GRANT{ALL[PRIVILEGES]}|permission[<column[,...n]>][,...n][ON[class::]securable]TOprincipal[,...n][WITHGRANTOPTION][ASprincipal]简述自定义函数、存储过程和触发器的异同。自定义函数:接受参数、执行操作并且将运算结果以值的形式返回的例程。自定义函数有且只有一个返回值,就像普通的函数一样,可以直接在表达式中嵌入调用。存储过程:是一个可重用的代码模块,可以高效率地完成指定的操作。存储过程可以没有返回值,也可以有任意个输出参数,必须单独调用。触发器:当表或视图中的某些重要数据发生变化时,为了保持数据的一致性和完整性,可以自动执行某段程序保证相关联其他数据也跟着进行相应的变化。能完成这种功能的程序就是触发器,它是一种特殊类型的存储过程。触发器是一种特殊类型的存储过程,但是不能直接被调用执行,只能自动执行,在对特定表或列作特定类型的数据修改时执行。什么是游标?应用游标的步骤是什么?游标是一种处理数据的方法,它可以对结果集进行逐行处理,也可以指向结果集中的任意位置,并对该位置的数据进行处理。应用游标的步骤:声明游标——打开游标——读取游标——关闭游标——释放游标。五、分析讨论首先第18个关于验证授权前后用户操作的差别那步我不会验证,在游标那题里面也没有用到事务,感觉自己在游标、自定义编程、存储过程等方面的基础及学习较为薄弱。刚开始将系统想得很大,后来在做的过程中发现一环套一环,如果做整个酒店管理系统真的很复杂,还包括财务管理、仓库管理、员工管理等方面,最后我和搭档商量决定只做客房及顾客信息管理等的内容,实现的功能也相对较少。相信经过一步一步的学习,我们的能力也会进一步的提升,努力作出比较完善的信息系统。以下为本次实验的过程记录报告撰写。〔可包括必要的截图MC酒店前台管理系统系统需求分析业务分析·工作人员登录:工作人员登录,并且有权限的限制,不同的权限允许的操作不同;·客房预订:客人可以提前预定房间,可以要求房间的类型,入住时间等;·取消预定:客人可以对已经预定的客房进行取消预定;·入住登记:对入住的客户的信息进行录入,客户入住房间;·退房登记:入住的客户离开,进行退房登记,更新客房客户信息;·客房信息查询:客户可以要求查询自己的房间号,剩余房间数量,房间信息等信息;·客户信息查询:客户可以要求查询自己的相关信息,酒店可以根据需要查询客户的信息;功能需求分析·功能总流程图酒店前台管理系统酒店前台管理系统登录窗口身份验证权限识别相关操作预定房间取消预定退房登记客房信息查询入住登记客户信息查询验证失败·客房预定客房预订客房预订是否有空余房间预定失败预定房间登记、修改相关信息查询否是·取消预定取消预定取消预定预定信息删除、修改相关信息查询取消预定操作·入住登记入住登记入住登记是否预定查询住房信息及要求,确认入住房间确认预定信息及入住房间登记入住信息,修改相关信息·退房登记退房登记退房登记入住信息修改客户及客房相关信息查询·信息查询信息查询信息查询客房信息查询客户信息查询3、信息需求分析·工作人员登录:需要处理工作人员的信息,验证账号密码是否正确且互相匹配,并且授予该工作人员一定的操作权限,只能进行权限范围内的操作。·客房预订:需要处理客房及客户的信息,修改客房的状态,以及入住时间;简单登记客户的信息。·取消预定:需要处理客房及客户的信息,修改客房的状态,以及入住时间;修改客户的预定信息。·入住登记:需要处理客房及客户的信息,查询客户是否预定过房间,若预定,则登记客房和客户的各项信息;若没有预定,则先查询是否有符合条件的房间,如果有,则登记客房和客户的各项信息,如果没有,则入住失败。·退房登记:需要处理客房及客户的信息,查询客户及客房的相关信息,并修改客房的各项信息以及客户的退房时间及入住天数。·客户信息查询:需要处理客户的信息,根据需要查询客户的各项信息。·客房信息查询:需要处理客房的信息,根据需要查询客户的各项信息。概念设计整体ER图房间房间客户工作人员入住操作客户编号客户姓名客户性别身份证号客户客户地址是否预定消费金额付款时间备注客户编号房间号入住时间退房时间入住天数入住登记o预定客房取消预定信息查询编号密码权限房间号状态类型m1mn部分组成图房间房间Rooms房间号RoomNo状态StatusNo类型TypeNo工作人员工作人员Workers编号EmployeeId密码PassWord权限Restricte客户客户Client客户编号ClientID客户姓名ClientName客户性别ClientSex身份证号ClientCertificateID客户ClientPhone客户地址ClientAdress是否预定ClientBookOrNot消费金额ClientConsume付款时间PaymentTime备注ClientRemarks工作人员工作人员Works操作Operation房间Rooms入住登记o预定客房取消预定信息查询客户编号客户编号ClientID客户Client入住房间号RoomNo入住时间LiveDate退房时间OutDate入住天数房间Rooms逻辑设计客户信息表员工登录信息表房间信息表房间状态信息表房间类型信息表入住信息表数据库的物理设计存储组织结构:数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。<1>物理数据层。它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。<2>概念数据层。它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。<3>逻辑数据层。它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。数据库不同层次之间的联系是通过映射进行转换的。表的结构设计:1.客户信息表ClientInfo客户编号〔ClientIDchar<8>主键客户姓名<ClientName>varchar<30>非空客户性别〔ClientSexchar<4>身份证号ClientCertificateIDvarchar<18>非空出生日期〔ClientBirthdaydatetime,〔ClientPhonevarchar<12>非空是否预定〔ClientBookOrNotint住址〔ClientAdressvarchar<50>消费金额〔ClientConsumemoney结账日期〔PaymentTimedatetime备注〔ClientRemarksvarchar<40>2.房间信息表RoomInfo房间号〔RoomNoint主键状态号〔StatusNoint非空类型号〔TypeNoint非空房间备注〔RoomRemarksvarchar<40>3.房间状类型表RoomType类型号TypeNoint主键类型名称〔TypeNamevarchar<10>非空该类房间数〔TypeAmountint非空价格〔Pricemoney非空4.房间状态表RoomStatus状态号〔StatusNoint主键状态名〔RoomStatusvarchar<10>非空该状态房间数〔StatusAmountint非空5.工作人员登录表LoginInfo员工编号〔EmployeeIdchar<8>密码〔PassWordchar<6>非空权限〔Restricteint非空五.T-SQL命令方式创建数据库的操作利用SQL命令创建数据库文件、表、索引、联系和主键、外键等约束。1、创建数据库文件createdatabaseMC酒店前台管理系统onprimary<name='MC酒店前台管理系统_data',filename='H:\数据库事务实验\马冰洁\1009030116马冰洁\MC酒店前台管理系统.mdf',size=50,maxsize=100,filegrowth=10>logon<name='MC酒店前台管理系统_log',filename='H:\数据库事务实验\马冰洁\1009030116马冰洁\MC酒店前台管理系统.ldf',size=10,maxsize=25,filegrowth=5>2、创建表useMC酒店前台管理系统CreatetableRoomStatus<StatusNointPrimarykey,RoomStatusvarchar<10>notnull,StatusAmountintnotnull>CreatetableRoomType<TypeNointPrimarykey,TypeNamevarchar<10>notnull,TypeAmountintnotnull,Pricemoneynotnull>CREATETABLERoomInfo<RoomNointPRIMARYKEY,StatusNointNOTNULL,TypeNointNOTNULL,RoomRemarksvarchar<40>,foreignkey<StatusNo>referencesRoomStatus<StatusNo>onupdatecascade,foreignkey<TypeNo>referencesRoomType<TypeNo>onupdatecascade,>CreateTABLEClientInfo<ClientIDchar<8>PRIMARYKEY,ClientNamevarchar<30>notnull,ClientSexchar<4>,ClientCertificateIDvarchar<18>notnull,ClientBirthdaydatetime,ClientPhonevarchar<12>notnull,ClientBookOrNotint,ClientAdressvarchar<50>,ClientConsumemoney,PaymentTimedatetime,ClientRemarksvarchar<40>,>CREATETABLELoginInfo<EmployeeIdchar<8>PRIMARYKEY,PassWordchar<6>notnull,Restricteintnotnull,>createtableReInfo<ClientIDchar<8>NOTNULL,RoomNointNOTNULL,LiveDatedatetime,OutDatedatetime,DayNoASOutDate-LiveDate,primarykey<RoomNo,ClientID>,foreignkey<RoomNo>referencesRoomInfo<RoomNo>,FOREIGNKEY<ClientID>REFERENCESClientInfo<ClientID>>3、创建索引createindexsroominfoonReInfo<ClientIDASC,RoomNo>useMC酒店前台管理系统GOEXECsp_helpindexReInfoGOcreateindexsclientinfoonClientInfo<ClientIDASC,ClientName>useMC酒店前台管理系统GOEXECsp_helpindexClientInfoGO六.利用T-SQL命令增加、删除、修改数据。1、插入数据:登记客户基本信息,入住信息,管理客房信息USEMC酒店前台管理系统INSERTINTOClientInfovalues<'C0000004','马冰洁','女',,'1993-01-23','5927195260',2,'中国XX省',1000,'2011-07-1009:06:07','需要早餐'>INSERTINTOClientInfovalues<'C0000001','林静','男',,'1982-11-23',,0,'中国北京市XX路',3100,'2011-07-1009:06:07','每日:分前不要打扫其房间'>INSERTINTOClientInfovalues<'C0000002','叶华','男',,'1988-01-23',,0,'中国XX市鼓浪屿',3000,'2011-07-1919:06:07','每日换枕头'>INSERTINTOClientInfovalues<'C0000003','素素','女',,'1982-11-23',,1,'中国北京市XX路',3100,'2011-07-1009:06:07','对海鲜过敏'>INSERTINTORoomInfovalues<8204,2,4,''>INSERTINTORoomInfovalues<5203,2,4,''>INSERTINTORoomInfovalues<2222,2,4,''>INSERTINTORoomInfovalues<8888,1,5,''>INSERTINTORoomInfovalues<3402,0,1,''>INSERTINTORoomInfovalues<2202,2,2,''>INSERTINTORoomInfovalues<2201,1,2,''>INSERTINTORoomStatusvalues<2,'不空闲',178>INSERTINTORoomStatusvalues<0,'已预订',20>INSERTINTORoomStatusvalues<1,'空闲',99>INSERTINTORoomTypevalues<4,'商务套房',80,400>INSERTINTORoomTypevalues<1,'单人房',40,120>INSERTINTORoomTypevalues<2,'标准间',100,150>INSERTINTORoomTypevalues<5,'总统套房',2,1888>INSERTINTORoomTypevalues<3,'豪华间',60,270>INSERTINTOLoginInfovalues<'A0000007','WWWNDX',0>INSERTINTOLoginInfovalues<'B0000001','123456',1>INSERTINTOReInfovalues<'C0000001',8204,'2011-07-0509:06:07','2011-07-1009:06:07'>INSERTINTOReInfovalues<'C0000002',5203,'2011-07-0419:06:07','2011-07-1009:06:07'>INSERTINTOReInfovalues<'C0000003',2222,'2011-07-0909:06:07','2011-07-1319:06:07'>INSERTINTOReInfovalues<'C0000004',2202,'2011-07-0909:06:07','2011-07-1319:06:07'>2、修改数据USEMC酒店前台管理系统GO--客户调房间updateReInfosetRoomNo=2201whereClientID='C0000004'--客户入住修改房间状态updateRoomInfosetStatusNo=2whereRoomNo=2202--将客户的消费减去200元,但因为之后设置了一个保护安全性的触发器所以这个应该执行不了updateClientInfosetClientConsume=ClientConsume-200whereClientID='C0000004'3、删除数据--客户退房deletefromReInfowhereClientID='C0000004'--删除客户信息deletefromClientInfowhereClientName='马冰洁'七.利用T-SQL命令进行数据的检索和统计根据自己设计的数据库和输入的数据,写出至少10个查询要求及对应的SQL查询命令,应该包含如下功能:投影和选择;多表连接;分组统计与HAVING;子查询;查询结果保存。USEMC酒店前台管理系统Go--1.查询所有顾客姓名SELECTClientNamefromClientInfo--2.查询空闲房间SELECTRoomNofromRoomInfowhereStatusNo=1--3.显示每个房间客户的备注要求SELECTClientInfo.ClientID,RoomNo,ClientName,ClientSex,ClientRemarksfromClientInfo,ReInfowhereClientInfo.ClientID=ReInfo.ClientID--4.查询男女顾客各自人数selectClientSex,Count<ClientSex>as人数fromClientInfogroupbyClientSex--5.查询人均收入大于1000的客房类型SELECTTypeName,AVG<ClientConsume>AS平均收入fromRoomType,ClientInfo,ReInfo,RoomInfowhereRoomInfo.RoomNo=ReInfo.RoomNoandClientInfo.ClientID=ReInfo.ClientIDandRoomInfo.TypeNo=RoomType.TypeNoGroupbyTypeNameHavingAVG<ClientConsume>>1000--6.从RoomInfo表查询共有几种类型的客房SELECTTypeNofromRoomInfoGROUPBYTypeNoHAVINGCOUNT<*>>2--7.查询入住超过两间房的客房类型的客房号SELECTRoomNofromRoomInfoWHERETypeNoIN<SELECTTypeNofromRoomInfoGROUPBYTypeNoHAVINGCOUNT<*>>2>--8.查询价格超过酒店客房平均价格的客房信息SELECT*fromRoomTypewherePrice><SELECTAVG<Price>fromRoomType>--9.查询来自中国北京市XXX的客户姓名SELECTClientNamefromClientInfowhereClientSex='男'ANDClientAdressLIKE'中国北京市%'--10.查询所有商务套房的基本信息selectRoomNo,StatusNo,RoomRemarksfromRoomInfowhereTypeNo=<selectTypeNofromRoomTypewhereTypeName='商务套房'>八.利用SQL命令创建视图对象根据开发的系统的需要,至少设计三个视图:基于单表的、包含多表连接的、包含统计运算的。useMC酒店前台管理系统go--1.创建VIP顾客基本信息视图createviewclientVIPinfoasselectClientID,ClientName,ClientSex,ClientCertificateID,ClientBirthday,ClientPhone,ClientConsumefromClientInfowhereClientConsume>2000select*fromclientVIPinfo--2.创建男顾客的基本信息视图createviewclientmaninfoasselectClientID,ClientName,ClientSex,ClientCertificateID,ClientBirthday,ClientPhonefromClientInfowhereClientSex='男'fromClientInfoselect*fromclientmaninfo--3.创建住在某个房间的客户基本信息及入住信息视图createviewroomreinfoasselectClientInfo.ClientID,ClientName,ClientSex,ClientCertificateID,ClientBirthday,ClientPhone,RoomNo,LiveDate,OutDatefromClientInfo,ReInfowhereRoomNo=2202andClientInfo.ClientID=ReInfo.ClientID--4.创建空闲房间基本信息视图createviewfreeroomasselectRoomInfo.RoomNo,RoomType.TypeName,RoomRemarksfromRoomStatus,RoomInfo,RoomTypewhereRoomStatus='空闲'andRoomInfo.StatusNo=RoomStatus.StatusNoandRoomInfo.TypeNo=RoomType.TypeNoselect*fromfreeroom--5.创建每种房间的总收入视图createviewzxfasselectRoomType.TypeName,SUM<ClientConsume>asSumConsumefromClientInfo,ReInfo,RoomInfo,RoomTypewhereClientInfo.ClientID=ReInfo.ClientIDandReInfo.RoomNo=RoomInfo.RoomNoandRoomInfo.TypeNo=RoomType.TypeNogroupbyTypeNameselect*fromzxf利用SQL对视图进行查询。--1.查询收入超过1万的房间类型selectTypeName,SumConsumefromzxfwhereSumConsume>10000--2.查询XX顾客的客户号selectClientIDfromclientmaninfowhereClientName='林静'--3.查询空闲房间中商务套房的房间号selectRoomNofromfreeroomwhereTypeName='商务套房'九.对视图进行插入、删除、修改数据操作。体会视图与表的异同。1、对视图进行插入数据insertintoclientmaninfovalues<'C0000011','Jason','男',,'1988-07-04','123456789'>insertintoclientVIPinfovalues<'C0000012','FrejaBlack','女',,'1988-06-04','123456789',5000>2、修改数据updateclientVIPinfosetClientConsume=ClientConsume+200whereClientSex='男'beforeAfterupdateclientmaninfosetClientName='池贤宇'whereClientID='C0000005'beforeAfterupdatefreeroomsetTypeName='海景套房'whereTypeName='总统套房'After3、删除数据deletefromclientmaninfowhereClientNameLIKE'Ja%'after十.编写自定义函数。〔1编写一个自定义函数,将一个字符串作为自变量,返回颠倒顺序的字符串。写出源代码。USEMC酒店前台管理系统GOCREATEFUNCTIONMBJ<PVARCHAR<100>>RETURNSVARCHAR<100>ASBEGINDECLAREIINT,NINTSETN=LEN<P>SETI=LEN<P>-1WHILEI>0BEGINSETP=P+SUBSTRING<P,I,1>SETI=I-1ENDSETP=RIGHT<P,N>RETURNPENDGOSELECTDBO.MBJ<'MCJDQTGLXT'>〔2编写一个自定义函数,能够实现参数化查询的功能。createfunctionclientsq<ClientIDchar<8>>returnstableasreturn<selectClientID,ClientName,ClientCertificateIDfromClientInfoWhereClientID=ClientID>goSELECT*FROMDBO.clientsq<'C0000001'>〔3自己设定函数的具体要求,然后编写出来。自定义一个带参数SQL函数,输入一个参数n,返回1*2*3*……*nCREATEFUNCTIONjc<nint>RETURNSvarchar<300>ASBEGINDECLAREsvarchar<300>sets=str<n>whilen>1beginsets=str<n-1>+'*'+ltrim<s>setn=n-1endreturn<ltrim<s>>ENDgoselectdbo.jc<10>十一.编写利用游标进行数据处理的存储过程。并在存储过程中应用事务的概念。自己确定过程的具体要求,然后编写出来。--利用游标进行数据修改的存储过程,将ClientInfo中所有女性的备注改为"女士可免费参加舞会"createprocedureUpdateHKUNo--存储过程里面放置游标asbegindeclareUpdateHKUNoCursorcursor--声明一个游标,查询满足条件的数据forselectClientIDfromClientInfowhereClientSex='女'openUpdateHKUNoCursor--打开declarenoToUpdatevarchar<20>--声明一个变量,用于读取游标中的值fetchnextfromUpdateHKUNoCursorintonoToUpdatewhilefetch_status=0--循环读取begin--printnoToUpdateupdateClientInfosetClientRemarks='女士可免费参加舞会'whereClientID=noToUpdatefetchnextfromUpdateHKUNoCursorintonoToUpdateendendexecUpdateHKUNocloseUpdateHKUNoCursor--关闭deallocateUpdateHKUNoCursordropprocedureUpdateHKUNo十二.编写一个实现修改表的触发器,实现完整性控制。当将顾客消费金额减少时系统为防止人为谋私、操作错误等拒绝修改USEMC酒店前台管理系统gocreatetriggert1ondbo.ClientInfoforupdateasbegindeclareoldvaluemoneydeclarenewvaluemoneyselectoldvalue=Clien
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19048-2024地理标志产品质量要求龙口粉丝
- 广东酒店管理职业技术学院《工程造价计价与控制》2023-2024学年第一学期期末试卷
- 广东技术师范大学《硬件描述语言》2023-2024学年第一学期期末试卷
- 广东海洋大学《文献检索利用》2023-2024学年第一学期期末试卷
- 广东第二师范学院《影视画面分析》2023-2024学年第一学期期末试卷
- 恶性疟培训课件
- 燃气培训课件
- 《包装箱的详细分析》课件
- 《老龄化设计》课件
- 《电信网技术》课件
- 土地复垦工程施工组织设计方案2
- 课堂教学能力提升(课堂PPT)
- 最新开利中央空调故障代码大全
- vienna整流器交错并联三相pfc电路
- 重庆市永川区城乡总体规划
- 挡风玻璃自动涂胶方案
- 复旦大学新闻传播学考博真题
- IEC60335-1(中文)
- 对于申请增加办公用房请示
- 民用无人驾驶航空器系统空中交通管理办法
- 姓名代码查询
评论
0/150
提交评论