1 / 30
文档名称:

数据库课后习题答案(第四版).pdf

格式:pdf   大小:2,424KB   页数:30页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库课后习题答案(第四版).pdf

上传人:青山代下 2024/5/21 文件大小:2.37 MB

下载得到文件列表

数据库课后习题答案(第四版).pdf

相关文档

文档介绍

文档介绍:该【数据库课后习题答案(第四版) 】是由【青山代下】上传分享,文档一共【30】页,该文档可以免费在线阅读,需要了解更多关于【数据库课后习题答案(第四版) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..数据库原理实验手册实验一实验名称:熟悉SQLSERVER2000环境一、实验目的熟悉SQLSERVER2000提供的服务管理器、企业管理器、查询分析器、客户端和服务器端网络实用工具等常用管理工具的使用。了解Windows身份验证和SQLServer身份验证这两种连接数据库服务器方式的不同,并能够使用某种连接方式登陆上SQLSERVER数据库服务器。学会使用SQLSERVER的联机丛中寻求帮助。二、实验原理使用SQLSERVER2000提供的各种常用管理工具进行有关的操作。三、实验设备安装有SQLSERVER2000的计算机。四、。,连接上SQLSERVER服务器。展开左边树状窗口的各级结点,观察右边内容窗口的变化。,点击鼠标右键,了解快捷菜单中的有关功能。,在查询窗口用USE命令打开样例数据库pubs(也可以从工具栏中的数据库下拉列表中选择pubs数据库)。,运行后察看结果。*fromauthors,运行后察看结果。“帮助”菜单中点击“目录与索引”,然后在SQLSERVER的联机丛中选“索引”,输入要查找的关键字“sp_help”、:..“exec”、“select”,了解它们的含义。,并在该数据库中创建表student、course和sc,在创建表的同时可以创建各种约束。这三个表的结构可以参考书上85页的例5、例6和例7。,各个表的数据可参考书56页的图。,输入书中91页开始的例题,实现对数据库的查询。实验二实验名称:创建和修改数据库一、实验目的熟悉SQLSERVER的企业管理器和查询分析器的用户界面,掌握用企业管理器和查询分析器创建数据库,修改数据库和删除数据库的方法。了解数据库的三种文件类型:主数据文件(.mdf)、次要数据文件(.ndf)和事务日志文件(.ldf)。二、实验原理在企业管理器中实现对数据库的管理及使用T—SQL语句CREATEDATABASE、ALTERDATABASE及DROPDATABASE来实现数据库的创建、修改及删除。三、实验设备安装有SQLSERVER2000的计算机。四、,数据库中包含一个数据文件,逻辑文件名为testdb_data,磁盘文件名为,文件初始容量为2MB,最大容量为8MB,文件容量递增值为1MB;事务日志文件的逻辑文件名为testdb_log,磁盘文件名为,文件初始容量为1MB,最大容量为5MB,文件容量递增值为1MB。CREATEDATABASEtestdbON(NAME=testdb_data,SIZE=2MB,MAXSIZE=8MB,:..FILEGROWTH=1MB)LOGON(NAME=’testdb_log’,SIZE=1MB,MAXSIZE=5MB,FILEGROWTH=1MB):添加一个数据文件,逻辑文件名为testdb2_data,磁盘文件名为,文件初始容量为1MB,最大容量为5MB,文件容量递增值为1MB。ALTERDATABASEtestdbADDFILE(NAME=testdb2_data,SIZE=1MB,MAXSIZE=5MB,FILEGROWTH=1MB)五、实验内容分别使用SQLSERVER2000企业管理器和T—SQL语句,按下列要求创建、修改和删除用户数据库。,在查询分析器中用命令采用默认设置创建数据库S_T(只需给出数据库名)。,数据库中包含一个数据文件,逻辑文件名为company_data,磁盘文件名为,文件初始容量为5MB,最大容量为15MB,文件容量递增值为1MB;pany_log,磁盘文件名为,文件初始容量为5MB,最大容量为10MB,文件容量递增值为1MB。:添加一个数据文件,pany2_data,磁盘文件名为,文件初始容量为1MB,最大容量为5MB,文件容量递增值为1MB;pany_log的最大容量增加为15MB,文件容量递增值为:..2MB。,并向该文件组中添加一个容量为3MB,最大容量为10MB,递增量为1MB的数据文件,该数据文件的pany3_data,磁盘文件名为。。。。实验三实验名称:创建和修改数据表一、实验目的熟悉有关数据表的创建和修改等工作,理解数据库模式的概念,了解主键约束、外键约束、UNIQUE约束和CHECK约束的创建和应用。要求学生熟练掌握使用企业管理器和T—SQL语句CREATETABLE、ALTERTABLE及DROPTABLE语句对数据表进行管理。二、实验原理在企业管理器中实现表的创建和修改等工作及使用T—SQL语句CREATETABLE、ALTERTABLE及DROPTABLE来实现数据表的创建、修改及删除。三、实验设备安装有SQLSERVER2000的计算机。四、实验示例两个示例:一个是书上的学生选课数据库S_T,S_T数据库中有学生表student,课程表course和学生选课表sc。各表的结构如下:学生表studentSnochar(5)Notnullprimarykey学号Snamechar(20)Notnull姓名Ssexchar(2)Notnull性别:..SagesmallintNotnull年龄Sdeptchar(20)Notnull系别课程表courseCnochar(4)Notnullprimarykey课程号Cnamechar(40)Notnull课程名Cpnochar(4)先行课CcreditsmallintNotnull学分学生选课表scSnochar(5)Notnullprimarykey学号Cnochar(4)Notnullprimarykey课程号Gradesmallint成绩pany数据库中存在人事表employee、客户表customer、销售表sales、销售明细表sale_item、产品表product。各表的结构如下:员工人事表employeeemp_nochar(5)Notnullprimarykey员工编号emp_namevarchar(10)Notnull员工姓名sexchar(2)Notnull性别deptvarchar(10)Notnull所属部门titlevarchar(10)Notnull职称date_hireddatetimeNotnull雇佣日birthdaydatetimeNull生日salaryintNotnull薪水telephonevarchar(20)Null电话addrvarchar(50)null住址:..客户表customercust_idchar(5)Notnullprimarykey客户号cust_namevarchar(20)Notnull客户名称addrvarchar(40)Notnull客户住址tel_novarchar(20)Notnull客户电话zipchar(6)null邮政编码销售主表salesorder_nointNotnullprimarykey订单编号cust_idchar(5)Notnull客户号sale_idchar(5)Notnull业务员编号tot_amtnumeric(9,2)Notnull订单金额order_datedatetimeNotnull订货日期销货明细表sale_itemorder_nointNotnullprimarykey订单编号prod_idchar(5)Notnullprimarykey产品编号qtyintNotnull销售数量unit_pricenumeric(7,2)Notnull单价order_datedatetimenull订单日期产品名称表productprod_idchar(5)Notnullprimarykey产品编号prod_namevarchar(20)(emp_nochar(5)notnullcheck(emp_nolike'[E-F][0-9][0-9][0-9][0-9]'),:..emp_namechar(10)notnull,emp_sexchar(1)notnullcheck(emp_sexin('m','f')),emp_phonechar(13)notnull,emp_addvarchar(60)notnull,emp_salarychar(5)notnullcheck(emp_salarybetween60000and80000))(phonelike’[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’)五、实验内容分别在SQLSERVER2000企业管理器和在查询分析分析器中使用T—SQL语句完成以下操作:针对S_T数据库:,设置Sno为主键;在Sno列上创建核查约束,要求学号各个位上只能取数字字符;在Ssex列上创建核查约束,要求性别只能取“男”或“女”;在Sage列上创建核查约束,要求学生的年龄只能在14至38之间。,o为主键;在Cno列上创建核查约束,要求课程号只能取数字字符。,o的组合;在Grade列上创建核查约束,限定成绩只能在0-100。,在表中为Cpno列添加一外键约束Fk_Cpno,它参照了courseo。,在表中为Sno添加一外键约束Fk_Sno,它参照了student表中的主键Sno;o,o。pany数据库:,并设置各表的主键。“发票号码”invoice_no,char(10),NOTNULL。:..:a)在销售主表sales的业务员编号字段sale_id上添加外键约束,参照字段为员工表employee中的字段员工编号emp_no,约束名为FK_sale_id。b)在销售主表sales的客户号字段cust_id上添加外键约束,参照字段为客户表customer中的字段客户号cust_id,约束名为FK_cust_id。c)在销售明细表sale_item的订单编号字段order_no上添加外键约束,参照字段为销售主表sales中的字段订单编号order_no,约束名为FK_order_no。d)在销售明细表sale_item的产品编号字段prod_id上添加外键约束,参照字段为产品名称表product中的产品编号字段prod_id,约束名为FK_prod_id。:a)将员工表employee中的薪水字段salary的值限定在1000至10000间,约束名为CK_salary。b)将员工表employee中的员工编号字段emp_no设定为以“E”字母开头,后面跟5位数的编号,约束名为CK_emp_no。c)将员工表employee中的性别字段设定这取值只能是“男”和“女”。约束名为CK_sex。d)将销售主表sales中的发票号码字段invoice_no设定为以“I”字母开头,后面跟9位数的编号,约束名为CK_inno。,约束名为UN_inno。实验四实验名称:简单的单表查询一、实验目的熟练掌握用SELECT语句实现简单的单表查询。掌握SELECT子句、FROM子句、WHERE子句及ORDERBY子句的用法。:..二、实验原理用SELECT语句实现简单的单表查询。在SELECT子句中用TOP关键字来限制返回到结果集中的记录数目,用DISTINCT关键字从结果集中去掉重复的记录。WHERE子句中用关系比较符、[NOT]BETWEEN、[NOT]IN、LIKE、IS[NOT]NULL及逻辑运算符构成查询条件,对结果集中的记录进行筛选。ORDERBY子句将根据查询结果集中一个或多个字段对查询结果进行排序。三、实验设备安装有SQLSERVER2000的计算机。四、,姓名,部门,薪水selectemp_no,emp_name,dept,salaryfromemployeewhereemp_namelike'刘%'>。selectemp_no,emp_name,deptfromemployeewheresex='女'anddeptin('业务','会计')‘C0001’和‘C0004’的客户编号、客户名称、客户地址。selectcust_id,cust_name,addrfromcustomerwherecust_idbetween'C0001'AND'C0004':..5条订单订单号、数量。selecttop5order_no,,并按照销售金额的大小排序。selectprod_id,qty,unit_price,(qty*unit_price)tot_amtfromsale_itemorderbytot_amtdesc五、实验内容运行查询文件,生成上机必要的数据,然后完成以下操作。1、查找所有经理的姓名、职称、薪水。2、在销售主表sales中查找销售金额大于等于10000元的订单。:..employee中查找薪水在4000至8000元之间的员工。select*fromemployeewheresalarybetween4000and80004、在员工表employee中查找住址为上海、北京、天津这三个城市的员工。5、在客户表customer中查找住址不在上海、北京、天津这三个城市的客户。:..employee中查找姓“王”用姓名最后一个字为“功”的员工。7、在客户表customer中查找姓“刘”的客户名称、电话。selectcust_name,tel_nofromcustomerwherecust_namelike'刘%'8、查找出职称为“经理”或“职员”的女工的信息。9、查找薪水最高的前三条员工记录。:..10%的订单记录。selecttop10percent*fromsalesorderbytot_amtdesc11、查找员工表中所属部门。(去掉重复记录)selectdistinctemp_no,emp_name,deptfromemployee12、查找员工表中的所有记录,并按薪水由低到高进行排序。select*fromemployeeorderbysalaryasc实验五实验名称:复杂的单表查询一、实验目的熟练掌握SELECT查询语句中的Groupby子句、Having子句的用法,以及汇总函数的使用。二、实验原理在查询语句中用Groupby子句进行分组;用Having子句对分组进行筛选。使用MAX(),MIN(),COUNT(),SUM(),AVG()等函数在查询结果集中生成汇总值。三、实验设备安装有SQLSERVER2000的计算机。四、实验示例1、统计表中员工的薪水在40000-60000之间的人数selectcount(*)as人数fromemployeewheresalarybetween40000and60000:..'P0001'产品的平均销售单价selectavg(unit_price)fromsale_itemwhereprod_id='P0001'3、找出目前销售业绩超过40000元的业务员编号及销售业绩,并按销售业绩从大到小排序。Selectsale_id,sum(tot_amt)fromsalesgroupbysale_idhavingsum(tot_amt)>40000orderbysum(tot_amt)desc4、查询订购了三种以上产品的订单号。Selectorder_nofromsale_itemGroupbyorder_noHavingcount(*)>3五、实验内容1、在员工表employee中统计员工人数。selectcount(*)人数fromemployee2、统计各部门员工的员工人数及平均薪水。selectcount(*)人数,avg(salary)平均工资fromemployee3、查询销售业绩超过10000元的员工编号。selectsale_idfrom(selectsale_id,sum(tot_amt)amount:..groupbysale_id)awhere>100004selectprod_id,sum(qty)tot_amount,sum(unit_tot)/sum(qty)average_unit_pricefrom(selectprod_id,qty,qty*unit_priceunit_totfromsale_item)agroupbyprod_id5、统计各部门不同性别、或各部门、或不同性别或所有员工的平均薪水。(在GROUPBY子句中使用CUBE关键字)6、统计各部门不同性别、或各部门或所有员工的平均薪水。(在GROUPBY子句中使用ROLLUP关键字)7、计算出一共销售了几种产品。selectcount(prod_id)from(selectdistinctprod_idfromsale_item)a8、显示sale_item表中每种产品的订购金额总和,并且依据销售金额由大到小排列来显示出每一种产品的排行榜。selectprod_id,sum(qty)tot_amount,sum(unit_tot)tot_amountfrom(selectprod_id,qty,qty*unit_priceunit_totfromsale_item)agroupbyprod_idorderbysum(unit_tot)desc9、计算每一产品每月的销售金额总和,并将结果按销售(月份,产品编号)排序。selectprod_id,month,sum(unit_amount)month_amountfrom(selectprod_id,qty*unit_priceunit_amount,month(order_date)monthfromsale_item)a:..groupbyprod_id,monthorderbyprod_idasc,month_amountdesc10、查询每位业务员各个月的业绩,并按业务员编号、月份降序排序selectsale_id,sum(tot_amt)month_amount,month(order_date)monthfromsalesgroupbysale_id,month(order_date)orderbysale_iddesc,monthdesc实验六实验名称:连接查询一、实验目的掌握使用连接的方法从多个表中查询数据。理解内连接、外连接(包括左外连接、右外连接和全外连接)、自身连接的概念和使用。要求学生熟练掌握在FROM子句和在WHERE子句中指定连接条件的这两种方法。二、实验原理在查询语句的FROM子句中用以下形式实现各种连接操作:FROM表1[INNER]=(实现内连接)FROM表1LEFT[OUTER]=(实现左外连接)FROM表1RIGHT[OUTER]=(实现右外连接)FROM表1FULL[OUTER]=(实现全外连接)=(实现自身连接)在查询语句的WHERE子句中用以下形式实现各种连接操作:FROM表1,=(实现内连接):..FROM表1,*=(实现左外连接)FROM表1,=*(实现右外连接)FROM表1AS别名1,=(实现自身连接)三、实验设备安装有SQLSERVER2000的计算机。四、实验示例1、检索product表和sale_item表中数量大于2的相同产品的产品编号、产品名称、数量、单价。select,,,fromsale_itemasainnerjoinproductasb/*如果改成leftjoin/rightjoin试分析结果*/on=and>2orderby2、查找出employee表中住址相同的员工的姓名、性别、职称、薪水、住址。select,,,,,,,,,fromemployeeasainnerjoinemployeeasbon!=and>and=3、查找商品名称为14寸显示器商品的销售情况,显示该商品的编号、销售数量、单价和金额select,qty,unit_price,unit_price*qtytotpricefromsale_itema,productbwhere=andprod_name='14寸显示器'五、实验内容1、查找出employee表中部门相同且住址相同的女员工的姓名、性别、职称、薪水、住址。select,,,,,,,,,:..fromemployeeasainnerjoinemployeeasbon!=and=and=and='女'and=2、检索product表和sale_item表中相同产品的产品编号、产品名称、数量、单价。select,,,fromsale_itema,productbwhere=groupby,,,3、检索product表和sale_item表中单价高于2400元的相同产品的产品编号、产品名称、数量、单价。select,,,fromsale_itema,productbwhere=and>2400groupby,,,4、查询在每张订单中订购金额超过24000元的客户名及其地址。select,fromsalesa,customerbwheretot_amt>24000and=5、查找有销售记录的客户编号、名称和订单总额select,,fromsalesa,customerbwhere=6、每位客户订购的每种产品的总数量及平均单价,并按客户号,产品号从小到:..大排列。select,,sum(qty)sum_qty,avg(unit_price)avg_pricefrom(selectcust_id,prod_id,qty,unit_pricefromsalesa,sale_itembwhere=xgroupby,orderbycust_idasc,prod_idasc7、查找在1997年中有销售记录的客户编号、名称和订单总额select,cust_name,tot_amtfromcustomera,salesbwhere=andyear=19978、分别使用左向外连接、右向外连接、完整外部连接检索product表和sale_item表中单价高于2400元的相同产品的产品编号、产品名称、数量、单价。并分析比较检索的结果。左外:select,,qty,unit_pricefromproductleftjoinsale_itemon=and>2400)右外:select,,qty,unit_pricefromproductrightjoinsale_itemon=and>2400)全外:select,,qty,unit_pricefromproductfulljoinsale_itemon=and>2400)实验七实验名称:嵌套查询:..一、实验目的掌握SELECT语句的嵌套使用,实现多表的复杂查询,进一步理解SELECT语句的高级使用方法。二、实验原理使用嵌套查询时,先用内查询(子查询)挑选出部分数据,以作为外查询(主查询)的数据来源或搜索条件。包含子查询的语句通常采用以下格式:WHERE表达式[NOT]IN(子查询)WHERE表达式比较运算符[ANY|ALL](子查询)WHERE[NOT]EXISTS(子查询)其中前两种又称为不相关子查询,子查询的查询条件不依赖其父查询,所以可以先求出子查询的结果,然后由内到外逐层求解。最后一种为相关子查询,其子查询的查询条件依赖于外层父查询的某个属性值,所以不能先一次性地求出子查询的结果。三、实验设备安装有SQLSERVER2000的计算机。四、实验示例1、由employee表中查找出薪水最高的员工信息。select*fromemployeewheresalary=(selectmax(salary)fromemployee)2、由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接每一张订单的金额”的所有订单。select*fromsaleswheretot_amt>all(selecttot_amtfromsaleswheresale_id='E0013'andorder_date='1996/10/15'):..orderbytot_amt3、用存在量词查找没有订货记录的客户名称selectcust_namefromcustomerawherenotexists(select*fromsalesbwhere=五、实验内容1、由sales表中查找出销售金额最高的订单。2、由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接任一张订单的金额”的所有订单,并显示承接这些订单的业务员和该条订单的金额。3、找出公司女业务员所接的订单。4、找出目前业绩未超过200000元的员工。5、在销售主表sales中查询销售业绩最高的业务员编号及销售业绩。6、找出目前业绩超过232000元的员工编号和姓名。7、查询订购的产品至少包含了订单10003中所订购产品的订单。8、查询末承接业务的员工的信息。实验八实验名称:数据更新一、实验目的熟练使用INSERT/DELETE/UPDATE语句进行表的更新操作。二、实验原理数据更新操作只能针对一个表进行,即每次只能在一个表中插入、删除和修改数据。用INSERT语句可以通过使用VALUES关键字一次只向一个表插入一条记录,:..也可以通过子查询向一个表中插入若干条记录;当使用DELETE和UPDATE语句实现表的删除和更改时,若题目中涉及多个表的信息,可以