版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ﻩ ﻩ 北京联合大学《数据库》实验报告ﻩﻩ题目:*********ﻩ 姓名:*******ﻩ 学号:********** ﻩ专业:计算机工程ﻩ 编制时间:********ﻩ 北京联合大学编制
ﻩ ﻩ 实验一一、实验目的学习MSSQLServer2023的安装、启动方法,注册SQLServer服务器的方法。熟悉SQLServer的工作环境掌握使用向导和命令建立数据库的方法掌握数据库常用选项的设立方法掌握建立数据表的方法。二、实验内容ﻩ采用SQL语句创建数据库CREATEDATABASEOrderMag2ONPRIMARY(NAME=OrderMag2_Data,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\data\OrderMag2_Data.ndf',SIZE=10MB,MAXSIZE=200MB,FILEGROWTH=10%)LOGON(NAME=OrderMag2_Log,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\data\OrderMag2_Log.LD',SIZE=3MB,MAXSIZE=100MB,FILEGROWTH=10%)GO三回答问题创建Store、Customer、Order1三个表useOrderMag2createtableStore(ﻩPnochar(6)primarykeynotnull,ﻩPnamevarchar(20)notnull,ﻩPtypechar(2),ﻩPnumint)ﻩcreatetableCustomer( Cnochar(6)primarykeynotnull, Cnamevarchar(20)notnull, Ctelvarchar(12)notnull,ﻩCaddrvarchar(50), Czipvarchar(6))createtableOrder1( Onochar(6)primarykeynotnull,ﻩCnochar(6),ﻩPnochar(6),ﻩOnumint,ﻩOsumint,ﻩOdatedatetime)altertableOrder1addconstraintfk_customer_idforeignkey(Cno)referencesCustomer(Cno);altertableOrder1addconstraintfk_Store_idforeignkey(Pno)referencesStore(Pno);altertableOrder1addconstraintcheck_Onumcheck(Onum>=0andOnum<=100)altertableOrder1addconstraintcheck_Osumcheck(Osum>0)操作过程中碰到的问题是“order”是数据库中的一个关键字,不能把它作为表的名字,所以在创建order表的时候在其后面加上数字或其他字母来以示区别。四实验小结 通过本次实验学会了MSSQLServer2023的安装、启动方法,注册SQLServer服务器的方法;和如何使用向导和命令建立数据库和数据库常用选项的设立方法及建立数据表的方法。ﻩ 实验二、数据维护及简朴查询一、实验目的:学习使用查询分析器掌握使用Insert、Update、Delete命令维护数据表的数据的方法纯熟掌握简朴SQL命令的使用二、实验内容:1.INSERT命令输入数据使用Insert命令分别向OrderMag数据库中的三个表中输入如下5条数据。1)Store(Pno,Pname,Ptype,Pnum)库存(零件号,零件名称,零件类别,零件数量)PnoPnamePtypePnumP1齿轮传动200P2蜗杆传动30P3螺栓标准120P4垫圈标准500P5螺母标准10202)Order(Ono,Cno,Pno,Onum,Osum,Odate)订单(订单号,顾客号,定购零件号,定购数量,订单金额,签订日期)OnoCnoPnoOnumOsumOsumO1C2P210010002023-4-8O2C3P3101002023-5-2O3C1P2202002023-4-5O4C1P42202023-2-4O5C3P51102023-3-13)Customer(Cno,Cname,Ctel,Caddr,Czip)顾客(顾客号,顾客名称,电话,地址,邮编)CnoCnameCtelCaddrCzipC1北京联合大学北京100101C2上海贝尔上海C3LG深圳412100C4华为(北京)北京C5香港航空香港142553先修改Store表的列Ptype的长度,再进行插入操作,如下ALTERTABLEStoreALTERCOLUMNPtypechar(10)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P1','齿轮','传动',200)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P2','蜗杆','传动',30)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P3','螺栓','标准',120)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P4','垫圈','标准',500)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('p5','螺母','标准',1020)INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C1','北京联合大学','','北京','100101')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C2','上海贝尔','','上海','')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C3','LG','','深圳','412100')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C4','华为(北京)',null,'北京','')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C5','香港航空','','香港','142553')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O1','C2','P2',100,1000,'2023-4-8')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O2','C3','P3',10,100,'2023-5-2')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O3','C1','P2',20,200,'2023-4-5')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O4','C1','P4',2,20,'2023-2-4')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O5','C3','P5',1,10,'2023-3-1')2.把store表中所有零件的数量增长一倍UPDATEStoreSETPnum=Pnum*23.把order表中签订日期在2023年之前的数据删除。deletefromorder1whereOdate<'2023'4.向store表中添加一列:零件颜色(Pcolour);ALTERTABLEStoreADDPcolourvarchar(20)5.查询三个表中的内容SELECT*FROMStoreSELECT*FROMCustomerSELECT*FROMOrder16.查询所有订单的金额,并按照金额的降序排列SELECTOsumFROMOrder1ORDERBYOsumDESC7.查询签订日期在2023年的所有订单的信息。SELECT*FROMOrder1WHEREOdate<'2023'8.查询顾客姓名中具有“北京”的顾客姓名和电话。SELECT*FROMCustomerWHERECnameLIKE'%北京%'9.查询库存数量少于100的零件号和名称。SELECTPno,PnameFROMStoreWHEREPnum<10010.查询邮编为空的顾客的情况。ﻩSELECT*FROMCustomerWHERECtelisnull三、回答问题1)使用Insert命令需要注意哪些问题ﻩ答:1)插入一条记录时最佳一次性插进去,避免主键列报错。或者把主键列设立为自动增长,这样就不用考虑主键那报错了2)尽量不用关键字做列的名子,即使要用也要在其外面加[]。2)Alter与Update语句有什么区别 答:Alter用于修改表结构,而Update用于修改表中内容四、实验小结通过本实验学会了如何运用Insert、Update、Delete命令对表中内容进行修改。实验中碰到的问题是区别邮编为空(null)的情况和空字符串(’’),。ﻩ ﻩ实验三、SQL命令使用(二)ﻩ一、实验目的:(1)学习、掌握分组与汇总的函数的使用(2)学习、掌握在SQL语句中使用函数的方法(3)学习、掌握连接查询的方法(4)学习、掌握子查询的方法ﻩ二、实验内容:1.查询订单金额大于100的顾客的名称和电话;SELECTCname,CtelFROMCustomer,Order1WHEREOrder1.Cno=Customer.CnoANDOrder1.Osum>1002.查询所有签订订单的顾客的名称和邮编;selectCname,CzipfromCustomerwhereCnoin(selectdistinctCnofromOrder1)3.记录每类零件的数量分别为多少;selectPno,sum(Onum)fromOrder1groupbyPnoﻩ4.记录每个顾客签订订单的次数;selectCno,count(*)fromOrder1groupbyCno5.查询所有顾客签订订单的情况(涉及没有签订订单的顾客);select*fromCustomerleftouterjoinOrder1on(Customer.Cno=Order1.Cno)6.查询没有卖过一次的零件号(没有订单);selectPnofromStorewherePnonotin(selectdistinctPnofromOrder1)7.查询每个顾客签订订单的金额总数;selectCno,sum(Osum)fromOrder1groupbyCno8.查询所有订单金额的平均值;selectavg(Osum)fromOrder19.查询至少签订过两次订单的顾客信息。selectCno,count(*)timesfromOrder1groupbyCnohavingcount(*)>=2 三、完毕实验报告并回答问题1)外连接与内联接的区别在哪里答:外连接是指把舍弃的元组也保存在结果关系中,而在其他属性上填空值。内连接是指只有满足连接条件的元组才干作为结果输出。ﻩ2)使用子查询需要注意哪些事项答:a.一个子查询必须放在圆括号中。ﻩb.子查询的select语句中不能使用orderby子句,orderby子句只能对最终查询结果排序。 c.带有In谓词的子查询中,当In中为单一值时可用“=”代替,否则不可。ﻩd.带有比较运算符的子查询,将子查询放在比较条件的右边以增长可读性。ﻩf.子查询返回单值时可以用比较运算符,但返回多值时要用Any或All谓词修饰,而使用Any或All时必须同时使用比较运算符。例>Any,!=Allﻩg.带有Exists谓词的子查询不返回任何数据,只产生逻辑真值‘True’或逻辑假值‘False’。使用存在量词Exists后,若内层查询结果非空,则外层的where子句返回真值,否则返回假值;与Exists相相应的是NotExists,使用NotExists时,若内层查询结果为空,则外层的where子句返回真值,否则返回假值。由Exists引出的子查询,其目的列表达式通常用*,由于带Exists的子查询只返回真值或假值,给出列名无实际意义。一些带Exists或NotExists的子查询不能被其他形式的子查询等价替换,但所有带In谓词,比较运算符,Any和All谓词的子查询都能用带Exists谓词的子查询等价替换。ﻩ四、实验小结ﻩ通过本实验学会了如何使用分组与汇总函数,对连接查询和子查询有了进一步的了解。 ﻩ实验四.视图和索引ﻩ一、实验目的:(1)掌握建立、维护索引的方法(2)掌握建立、使用视图的方法 二、实验内容:1.使用CreateViewWizard创建视图通过公司管理器的CreateViewWizard创建视图1)在公司管理器中,单击菜单“工具”下面的“向导”2)展开“数据库”后,双击下面的“创建视图向导”3)单击“下一步”后,选择数据库OrderMag,选择表order4)选择字段Ono,Cno,Pno,Onum。5)输入条件语句WHEREOnum>1000,6)输入视图名称v_order8)在公司管理器中的“数据库”OrderMag视图下查看视图v_order。9)在查询分析器中输入并执行语句SELECT*FROMv_order10)结果如何?显示的字段是否为前面自己定义的字段?答,显示出满足条件的结果,显示的字段为当前自己定义的字段。11)删除视图v_order。 ﻩDropViewv_order2.在查询分析器中创建视图1)建立一个视图,涉及订单号、零件名称、顾客名称、订单金额等信息createviewis_osc(Ono,Pname,Cname,Osum)asselectOrder1.Ono,Store.Pname,Customer.Cname,Order1.OsumfromOrder1,Customer,StorewhereOrder1.Pno=Store.PnoandOrder1.Cno=Customer.Cno2)建立一个视图,查询订单金额大于10000元的大客户信息。createviewis_casSELECTCname,OsumFROMis_oscWHERE(Osum>10000)3)建立一个视图,查询每个顾客签订订单的总金额createviewis_sumasselectCno,sum(Osum)SsumfromOrder1groupbyCno3.察看系统提供的示例数据库pubs上有哪些索引,是什么类型的,列表记录下来。表名索引名索引类型authorsaunmind唯一employeeemployee_ind唯一royschedtitleidind唯一salestitleidind唯一titleauthorauidind唯一titleidind唯一titlestitleind唯一4.为OrderMag数据库设计索引,并建立到表上。CreateuniqueindexcnoindonCustomer(Cno);CreateuniqueindexonoindonOrders(Ono);CreateuniqueindexpnoindonStore(pno);三、完毕实验报告并回答问题1)视图的建立有哪些需注意的问题答:A在CREATEVIEW语句中,不能涉及ORDERBY,COMPUTE或者COMPUTEBY子句也不能出现INTO关键字B创建视图所参考基表的列数最多为1024列 C创建视图不能参考临时表D尽量避免使用外连接创建视图E在一个批解决语句中,CREATEVIEW语句不能和其他TRANSACT-SQL语句混合使用
2)索引的作用是什么?有什么分类?每类有什么特点?答:1)创建索引可以大大提高系统的性能。
ﻫ第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
ﻫ第二,可以大大加快
数据的检索速度,这也是创建索引的最重要的因素。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别故意义。
ﻫ第四,在使用分组和排序
子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
2)根据索引的顺序与数据表的物理顺序是否相同,可以把索引提成两种类型。一种是数据表的物理顺序与索引顺序相同的聚簇索引,另一种是数据表的物理顺序与索引顺序不相同的非聚簇索引。
3)聚集索引(1)一方面指出一个误区,主键并不一定是聚集索引,只是在SQLSERVER中,未明确指出的情况下,默认将主键定义为聚集,而ORACLE中则默认是非聚集,由于SQLSERVER中的ROWID未开放使用。(2)聚集索引适合用于需要进行范围查找的列,由于聚集索引的叶子节点存放的是有序的数据行,查询引擎可根据WHERE中给出的范围,直接定位到两端的叶子节点,将这部分节点页的数据根据链表顺序取出即可;(3)聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集索引的维护;(4)尽量在建立非聚集索引之前建立聚集索引,否则会导致表上所有非聚集索引的重建;(5)聚集索引应当避免建立在数值单调的列上,否则也许会导致IO的竞争,以及B树的不平衡,从而导致数据库系统频繁的维护B树的平衡性。聚集索引的列值最佳可以在表中均匀分布。2、非聚焦索引(1)非聚集索引适合用于需要进行等值查找的列,由于非聚集索引的叶子节点存放的是有序的索引列与书签的映射行,查询引擎可根据WHERE中给出的值,得到书签,继而定位到数据行;(2)覆盖索引(CoveringIndex),是非聚集索引的一种特殊且高效的应用,就是将需要返回的数据列设计成组合索引,在SELECT时只查询索引中存在的数据列,这样就能形成索引覆盖,由于索引行中已经包含了想到的数据,不需要再进行书签查找;在SQLSERVER2023及以上版本中,提供了INCLUDED关键字,可以在非聚集索引中包含更多列,也是覆盖索引的一个有效引申;(3)非聚集索引建立在值具有单调性的列上,比如:自增列(单调递增),可以减少索引的外部碎片及索引结构的维护;四、实验小结 通过本实验,学会了如何建立,删除视图,并对索引有了一定的了解和掌握。实验五.用户自定义函数(2学时)实验目的:学习、掌握用户自定义函数的建立和使用实验内容:1、创建自定义函数创建一个用户自定义函数,并测试、查看函数返回值。1)输入并执行下面语句USENorthwindGOCREATEFUNCTIONfn_TaxRate(@ProdIDINT)RETURNSnumeric(5,4)ASBEGINRETURN(SELECTCASECategoryIDWHEN1THEN1.10WHEN2THEN1WHEN3THEN1.10WHEN4THEN1.05WHEN5THEN1WHEN6THEN1.05WHEN7THEN1WHEN8THEN1.05ENDFROMProductsWHEREProductID=@ProdID)ENDGO2)此函数中输入变量是什么?返回值类型?如何定义的返回值?答:此函数输入变量是@ProdID,返回值类型是numeric(5,4)返回值是这样定义的SELECTCASECategoryIDWHEN1THEN1.10WHEN2THEN1WHEN3THEN1.10WHEN4THEN1.05WHEN5THEN1WHEN6THEN1.05WHEN7THEN1WHEN8THEN1.05ENDFROMProductsWHEREProductID=@ProdID3)输入并执行语句测试函数SELECTProductName,UnitPrice,Northwind.dbo.fn_TaxRate(ProductID)ASTaxRate,UnitPrice*Northwind.dbo.fn_TaxRate(ProductID)ASPriceWithTaxFROMProducts查看结果注意:函数可以在Select子句后面调用。2、返回值为多值的自定义函数创建函数返回多列多值。1)输入并执行下面语句USENorthwindGOCREATEFUNCTIONfn_LargeFreight(@FreightAmtmoney)RETURNSTABLEASRETURN(SELECTS.ShipperID,S.CompanyName,O.OrderID,O.ShippedDate,O.FreightFROMShippersASSJOINOrdersASOONS.ShipperID=O.ShipViaWHEREO.Freight>@FreightAmt)函数中输入变量是什么?返回值类型?如何定义的返回值?答:函数中输入变量是@FreightAmt,返回值类型是moneySELECTS.ShipperID,S.CompanyName,O.OrderID,O.ShippedDate,O.FreightFROMShippersASSJOINOrdersASOONS.ShipperID=O.ShipViaWHEREO.Freight>@FreightAmt2)输入并执行语句测试函数SELECT*FROMfn_LargeFreight(600)查看结果3、返回值为多值的自定义函数本实验创建的函数也是返回多列多值,注意与上面实验的差别。1)输入并执行下面语句USENorthwindGOCREATEFUNCTIONfn_FindReports(@InEmployeeIDchar(5))RETURNS@reportsTABLEﻩﻩ(EmployeeIDchar(5)PRIMARYKEY,ﻩﻩNamenvarchar(40)NOTNULL, Titlenvarchar(30),ﻩ MgrEmployeeIDint, ﻩprocessedtinyintdefault0)ASBEGINﻩINSERT@reportsﻩSELECTEmployeeID,Name=FirstName+''+LastName,Title,ReportsTo,0 FROMEMPLOYEESWHEREReportsTo=@InEmployeeIDRETURNENDGO此函数中输入变量是什么?返回值类型是什么?如何定义的返回值?答:此函数中输入变量是@InEmployeeID,返回值类型是TABLE,这样定义的返回值INSERT@reportsﻩSELECTEmployeeID,Name=FirstName+''+LastName,Title,ReportsTo,0ﻩFROMEMPLOYEESWHEREReportsTo=@InEmployeeID3)输入并执行语句测试函数SELECTEmployeeID,[Name],Title,MgrEmployeeIDFROMdbo.fn_FindReports(5)查看结果。4.设计一个函数,在OrderMag数据库中,输入零件类别,返回该类别零件的平均存量、最高存量和该类零件的总数量。CREATEFUNCTIONfund_Pno(@Pptypechar(10))RETURNSTABLEASRETURN(SELECTavg(Pnum)Avgp,max(Pnum)Maxp,sum(Pnum)SumpFROMStoreWHEREPtype=@Pptype)select*fromfund_Pno('传动')5.设计一个函数,在OrderMag数据库中,输入订单号,返回该订单所涉及的零件名称和类别。USEOrderMagGOCREATEFUNCTIONfpname(@fOnovarchar(60))RETURNSTABLEASRETURN(selectO.Ono,S.Pname,S.PtypefromStoreASSjoinOrdersAsOOnO.Pno=S.PnowhereO.Ono=@fOno)select*fromfpname('O1')6.设计一个函数,在OrderMag数据库中,根据零件库存量的大小,大于500的认为是充足,在100-500之间的是均衡,小于100的为面临缺货。USEOrderMagGOCREATEFUNCTIONfpnum4()RETURNSTableASRETURN(SELECT'PnumCASEWHENPnum>500THEN'充足'WHENPnumBETWEEN100and500THEN'均衡'WHENPnum<100THEN'面临缺货'ENDFROMStore)select*fromfpnum4()7.设计一个函数,根据输入的数值,计算从1加到该数的和(如输入5,则计算1+2+3+4+5=15,输出为15)。createfunctionsumn(@numint)returnsintasbegindeclare@iint;declare@sint;set@i=1;set@s=0;while(@i<=@num)beginset@s=@s+@i;set@i=@i+1;endreturn@sendprint'从1加到该数的和是:'+cast(dbo.sumn(5)asvarchar)8.完毕实验报告(1)用户自定义函数在定义与使用上有何需要注意的问题?与存储过程有何不同?答:在SQLSERVER中调用自定义函数时,必须在自定义函数前加上创建此函数的用户存储过程:ﻫ存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元解决。存储过程存储在数据库内,可由应用程序通过一个调用执行,并且允许用户声明变量、有条件执行以及其它强大的编程功能。ﻫ存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:
1、可以在单个存储过程中执行一系列SQL语句。
2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。用户定义函数:MicrosoftSQLServer2023允许创建用户定义函数。与任何函数同样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可提成以下三个类别:
1、返回可更新数据表的函数ﻫ假如用户定义函数包含单个SELECT语句且该语句可更新,则该函数返回的表格格式结果也可以更新。
2、返回不可更新数据表的函数ﻫ假如用户定义函数包含不止一个SELECT语句,或包含一个不可更新的SELECT语句,则该函数返回的表格格式结果也不可更新。
3、返回标量值的函数
用户定义函数可以返回标量值。四、实验小结 通过本实验掌握了自定义函数的建立及用法 ﻩﻩﻩﻩ实验六.安全性管理(2学时)一、实验目的:(1)了解SQLServer的认证模式,安全管理的重要内容和方法(2)掌握用户管理、访问权限管理的基本方法二、实验内容:SQLServer、数据库、对象等不同级别的安全性设立与管理。1.设立身份验证模式1)在SSMS中,选择服务器实例2)单击右键,选择“属性”,在属性对话框中选择“安全性”选项卡3)将身份验证模式设定为“仅Windows”4)单击“拟定”,SQLSERVER重新启动服务后更改验证模式5)重新启动服务,登陆SSMS时选择SQLSERVER验证,然后输入sa用户登录6)能否登录?为什么?不能,由于此时的访问权限仅限于Windows7)反复1-3环节,将身份验证模式设定为混合模式。注意:实验完毕后应当将其重新设定为混合认证模式;只有重新启动服务,验证模式才生效。2.添加SQLSERVER登录帐号添加SQLSERVER登录帐号TestSQL。1)在SSMS中,展开“安全性”,选择“登录名”,选择“新建登录名”2)选择SQLServer身份验证,3)输入用户名TestSQL及密码TestSQL,单击“拟定”4)打开数据库引擎查询页,输入登录帐号TestSQL和密码TestSQL,单击“拟定”,此时数据库引擎查询页是以TestSQL身份登录。5)输入并执行查询语句SELECT*FROMmaster.dbo.sysDatabases6)在查询页中输入“UseOrderMag”T-SQL语句,切换当前数据库。7)切换是否成功?为什么?答:不成功,由于系统没有对TestSQL开放访问数据库的权限。3、添加数据库用户帐号授权SQLSERVER登录帐号TestSQL访问数据库OrderMag。1)在SSMS中,展开数据库OrderMag中的“安全性”,选择右键单击“用户”,选择“新建用户”2)在“登录名”中选择TestSQL,然后单击“确认”3)打开数据库引擎查询页,输入登录帐号TestSQL和密码TestSQL,单击“确认”。4)此时查询就是以TestSQL身份登录5)在查询页中输入“OrderMag”T-SQL语句,切换当前数据库。6)切换是否成功?为什么?答,不成功,由于虽然对用户开放了数据库,但用户对数据库中的表仍没有访问权限。注意:UserName与Login的名称可以相同,也可以不同,但是建议采用相同的名称以方便维护管理。4、给角色分派语句权限基于自定义角色分派语句许可权限。在完毕以上练习的基础上完毕此练习。1)使用TestSQL帐号登录到查询分析器中2)将当前数据库切换到OrderMag,执行语句SELECT*FROMCustomer3)执行结果为什么?拒绝了对对象'Customer'(数据库'OrderMag',所有者'dbo')的SELECT权限,没有授予TestSQL用户对OrderMag数据库中表的SELECT权限。4)在SSMS中,双击角色DBRole,单击“权限”按钮5)在表Customer所相应的行中,选择“Select”6)再使用TestSQL帐号登录到查询分析器中7)将当前数据库切换到OrderMag,执行语句SELECT*FROMCustomer8)执行结果?为什么?答:获得Customer表中的信息,由于用户TestSQL对表Customer有查询的权限5、给登录帐号分派固定服务器角色给帐号分派固定服务器角色,让帐号有管理SQLServer权限。1)创建一个新的SecurityAdmin登录帐号2)双击SecurityAdmin帐号,选择“服务器角色”选项卡3)选择SecurityAdministrators固定服务器角色,“拟定”4)SecurityAdmin拥有什么权限?登录,查看master数据库6、给用户帐号分派固定数据库角色给用户帐号分派固定数据库角色,让帐号有备份数据库的权限。1)创建新的登录帐号BackupAdmin2)在数据库OrderMag上创建用户帐号BackupAdmin3)BackupAdmin帐号,4)选择db_backupoperator固定数据库角色,单击“拟定”。5)BackupAdmin拥有什么权限?备份数据库权限7.完毕实验报告(1)描述系统的安全机制。ﻩ答:在计算机系统中,安全措施是一级一级层层设立的。例如用户在进入计算机系统时,系统一方面根据输入的用户标记进行身份鉴定,只有合法的的用户才准许进入计算机系统,对已进入系统的用户,DBMS还要进行存取控制,只允许用户执行合法操作。操作系统一级也会有自己的保护措施,数据最后还可以以密码形式存储到数据库中。(2)用户帐号的概念,用户帐号与登录帐号的区别。 答:当用户通过身份验证,以某个登录帐号连接到SQLServer以后,还必须取得相应数据库的“访问许可”,才干使用该数据库。这种用户访问数据库权限的设立是通过用户帐号来实现的。登录帐号是属于服务器的层面。而登录者要使用服务器中的数据库数据时,必须要有用户帐号。就如同在公司门口先刷卡进入大门(登录服务器),然后再拿钥匙打开自己的办公室门(进入数据库)同样。(3)固定服务器角色的权限、固定数据库角色的权限的概念。答:固定服务器角色的权限针对数据库服务器,固定数据库角色的权限针对具体某一数据库(用户)固定数据库角色是在SQLServer每个数据库中都存在的系统预定义用户组。它们提供了对数据库常用操作的权限。系统管理员可以将用户加入这些角色中,固定数据库角色的成员也可将其他用户添加到本角色中。但固定数据库角色自身不能被添加、修改或删除。四、实验小结通过本实验知道了SQLServer的认证模式,安全管理的重要内容和方法及用户管理、访问权限管理的基本方法实验七.备份与恢复(2学时)一、实验目的:(1)了解MSSQLServer提供的备份、恢复功能(2)纯熟掌握数据库、日记备份的方法(3)纯熟掌握数据库恢复的方法二、实验内容:在备份设备、文献名上进行完全、差异数据库备份;数据库恢复。1、创建备份设备建立备份设备nw1,nw2sp_addumpdevice'disk','Nw1','d:\nw1.bak'sp_addumpdevice'disk','Nw2','d:\nw2.bak'2、备份数据库使用两种方法进行完全数据库备份。方法一:在SSMS中进行全库备份1)在SSMS中右击Northwind数据库,选择“任务”→“备份数据库”。2)在备份窗口中的“备份”中选择“数据库---完全”选项。3)在目的中,先单击“添加”,选择“备份设备”中的[Nw1]备份设备。4)单击“拟定”开始备份。方法二:使用T-SQL语句进行全库备份1)在查询页中输入并执行语句backupdatabasenorthwindtonw2withinit2)在资源管理器中查看D:\Nw2.bak是否创建?已创建3、查看备份设备查看备份设备中的备份内容,了解备份信息。1)在SSMS中展开数据库2)单击[备份],添加备份设备Nw13)右击备份设备[Nw1]4)单击[查看内容]来查看备份内容。5)同样的方法查看Nw2备份设备。实验是否成功?是4、执行差异备份在SSMS中进行数据库的差异备份1)选择[Northwind]数据库,选择“任务”下面的“备份”2)在备份窗口中的备份中选择“数据库---差异”选项3)在备份目的中,先单击“添加”,选择“磁盘上的目的中“备份设备[Nw1]”4)在选项页中选择“追加到媒体集”选项,单击“拟定”开始进行差异备份。5)查看备份设备中的内容5、恢复完全数据库备份运用上述实验建立的备份,使用两种方法从备份设备中恢复完全数据库备份。方法一:在SSMS中进行实验1)在SSMS中右击Northwind数据库创建表table12)在SSMS中右击Northwind数据库,选择“任务”下面的“还原”3)在还原窗口中的下方列表中显示两个备份信息,第一个为完全备份,第二个为差异备份。4)只选择第一个完全备份,单击“拟定”。5)表table1是否存在?假如存在,右击Northwind数据库选择“刷新”,这时表Ttable1是否存在?存在,不存在方法二:使用T-SQL语句进行实验1)在SSMS中右击[Northwind]数据库创建表table22)在查询分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025电视台制作播出网络系统采购合同范本
- 2025年生产部年终总结2篇
- 2025年风湿免疫科骨关节炎试题及答案
- 2025年下半年商务部机关服务局第二批公开招聘工作人员16人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年商丘睢县事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林长春德惠市事业单位招聘34人(2号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林通化县事业单位招聘工作人员20人(3号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省长春市农安县事业单位招聘36人(3号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省通化市通化县事业单位招聘16人(2号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林直事业单位招考高层次人才(10号)易考易错模拟试题(共500题)试卷后附参考答案
- HR-1-04猎头管理办法
- 2023年中考语文备考之说明文阅读训练:《盲盒背后的“上瘾密码”》
- WH/T 42-2011演出场所安全技术要求第2部分:临时搭建演出场所舞台、看台安全技术要求
- GB/T 3811-2008起重机设计规范
- GB/T 27734-2011压力管道用聚丙烯(PP)阀门基本尺寸公制系列
- GB/T 20346.1-2006施肥机械试验方法第1部分:全幅宽施肥机
- GB/T 20056-2015滚动轴承向心滚针和保持架组件外形尺寸和公差
- GA/T 1068-2015刑事案件命名规则
- 浙江省宁波市镇海蛟川书院2022-2023七年级上学期数学期中试卷+答案
- 论文写作讲座课件
- 双减作业设计初中数学作业设计优秀案例
评论
0/150
提交评论