数据库课后习题答案第四版.docx

上传人:b****4 文档编号:12060958 上传时间:2023-04-16 格式:DOCX 页数:33 大小:103.60KB
下载 相关 举报
数据库课后习题答案第四版.docx_第1页
第1页 / 共33页
数据库课后习题答案第四版.docx_第2页
第2页 / 共33页
数据库课后习题答案第四版.docx_第3页
第3页 / 共33页
数据库课后习题答案第四版.docx_第4页
第4页 / 共33页
数据库课后习题答案第四版.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数据库课后习题答案第四版.docx

《数据库课后习题答案第四版.docx》由会员分享,可在线阅读,更多相关《数据库课后习题答案第四版.docx(33页珍藏版)》请在冰豆网上搜索。

数据库课后习题答案第四版.docx

数据库课后习题答案第四版

数据库原理实验手册

实验一

实验名称:

熟悉SQLSERVER2000环境

一、实验目的

熟悉SQLSERVER2000提供的服务管理器、企业管理器、查询分析器、客户端和服务器端网络实用工具等常用管理工具的使用。

了解Windows身份验证和SQLServer身份验证这两种连接数据库服务器方式的不同,并能够使用某种连接方式登陆上SQLSERVER数据库服务器。

学会使用SQLSERVER的联机丛中寻求帮助。

二、实验原理

使用SQLSERVER2000提供的各种常用管理工具进行有关的操作。

三、实验设备

安装有SQLSERVER2000的计算机。

四、实验内容

1.启动SQLSERVER服务。

2.打开SQLSERVER的企业管理器,连接上SQLSERVER服务器。

展开左边树状窗口的各级结点,观察右边内容窗口的变化。

3.在SQLSERVER的企业管理器的树状窗口或内容窗口中选择某一项,点击鼠标右键,了解快捷菜单中的有关功能。

4.使用Windows身份验证的连接方式打开SQLSERVER的查询分析器,在查询窗口用USE命令打开样例数据库pubs(也可以从工具栏中的数据库下拉列表中选择pubs数据库)。

5.在查询窗口输入execsp_help,运行后察看结果。

6.在查询窗口输入select*fromauthors,运行后察看结果。

7.在SQLSERVER的查询分析器的“帮助”菜单中点击“目录与索引”,然后在SQLSERVER的联机丛中选“索引”,输入要查找的关键字“sp_help”、“exec”、“select”,了解它们的含义。

8.在SQLSERVER的企业管理器中创建数据库S_T,并在该数据库中创建表student、course和sc,在创建表的同时可以创建各种约束。

这三个表的结构可以参考书上85页的例5、例6和例7。

9.向各个表输入数据,各个表的数据可参考书56页的图。

10.在SQLServer的查询分析器中打开S_T数据库,输入书中91页开始的例题,实现对数据库的查询。

实验二

实验名称:

创建和修改数据库

一、实验目的

熟悉SQLSERVER的企业管理器和查询分析器的用户界面,掌握用企业管理器和查询分析器创建数据库,修改数据库和删除数据库的方法。

了解数据库的三种文件类型:

主数据文件(.mdf)、次要数据文件(.ndf)和事务日志文件(.ldf)。

二、实验原理

在企业管理器中实现对数据库的管理及使用T—SQL语句CREATEDATABASE、ALTERDATABASE及DROPDATABASE来实现数据库的创建、修改及删除。

三、实验设备

安装有SQLSERVER2000的计算机。

四、实验示例

1.创建名称为testdb的数据库,数据库中包含一个数据文件,逻辑文件名为testdb_data,磁盘文件名为,文件初始容量为2MB,最大容量为8MB,文件容量递增值为1MB;事务日志文件的逻辑文件名为testdb_log,磁盘文件名为,文件初始容量为1MB,最大容量为5MB,文件容量递增值为1MB。

CREATEDATABASEtestdb

ON

(NAME=testdb_data,

FILENAME='d:

\DATA\',

SIZE=2MB,

MAXSIZE=8MB,

FILEGROWTH=1MB)

LOGON

(NAME=’testdb_log’,

FILENAME='d:

\DATA\',

SIZE=1MB,

MAXSIZE=5MB,

FILEGROWTH=1MB)

2.对testdb数据库进行修改:

添加一个数据文件,逻辑文件名为testdb2_data,磁盘文件名为,文件初始容量为1MB,最大容量为5MB,文件容量递增值为1MB。

ALTERDATABASEtestdb

ADDFILE

(NAME=testdb2_data,

FILENAME='d:

\DATA\',

SIZE=1MB,

MAXSIZE=5MB,

FILEGROWTH=1MB)

五、实验内容

分别使用SQLSERVER2000企业管理器和T—SQL语句,按下列要求创建、修改和删除用户数据库。

1.删除数据库S_T,在查询分析器中用命令采用默认设置创建数据库S_T(只需给出数据库名)。

2.创建名称为company的数据库,数据库中包含一个数据文件,逻辑文件名为company_data,磁盘文件名为,文件初始容量为5MB,最大容量为15MB,文件容量递增值为1MB;事务日志文件的逻辑文件名为company_log,磁盘文件名为,文件初始容量为5MB,最大容量为10MB,文件容量递增值为1MB。

3.对该数据库进行修改:

添加一个数据文件,逻辑文件名为company2_data,磁盘文件名为,文件初始容量为1MB,最大容量为5MB,文件容量递增值为1MB;将日志文件company_log的最大容量增加为15MB,文件容量递增值为2MB。

4.在company数据库中添加一个文件组TempGroup,并向该文件组中添加一个容量为3MB,最大容量为10MB,递增量为1MB的数据文件,该数据文件的逻辑文件名为company3_data,磁盘文件名为。

5.在company数据库中删除数据文件company2_data。

6.删除数据库company。

7.采用默认设置创建数据库company。

实验三

实验名称:

创建和修改数据表

一、实验目的

熟悉有关数据表的创建和修改等工作,理解数据库模式的概念,了解主键约束、外键约束、UNIQUE约束和CHECK约束的创建和应用。

要求学生熟练掌握使用企业管理器和T—SQL语句CREATETABLE、ALTERTABLE及DROPTABLE语句对数据表进行管理。

二、实验原理

在企业管理器中实现表的创建和修改等工作及使用T—SQL语句CREATETABLE、ALTERTABLE及DROPTABLE来实现数据表的创建、修改及删除。

三、实验设备

安装有SQLSERVER2000的计算机。

四、实验示例

两个示例:

一个是书上的学生选课数据库S_T,S_T数据库中有学生表student,课程表course和学生选课表sc。

各表的结构如下:

学生表student

Sno

char(5)

Notnull

primarykey

学号

Sname

char(20)

Notnull

姓名

Ssex

char

(2)

Notnull

性别

Sage

smallint

Notnull

年龄

Sdept

char(20)

Notnull

系别

课程表course

Cno

char(4)

Notnull

primarykey

课程号

Cname

char(40)

Notnull

课程名

Cpno

char(4)

先行课

Ccredit

smallint

Notnull

学分

学生选课表sc

Sno

char(5)

Notnull

primarykey

学号

Cno

char(4)

Notnull

primarykey

课程号

Grade

smallint

成绩

另一个示例是某公司的产品销售数据库company,company数据库中存在人事表employee、客户表customer、销售表sales、销售明细表sale_item、产品表product。

各表的结构如下:

员工人事表employee

emp_no

char(5)

Notnull

primarykey

员工编号

emp_name

varchar(10)

Notnull

员工姓名

sex

char

(2)

Notnull

性别

dept

varchar(10)

Notnull

所属部门

title

varchar(10)

Notnull

职称

date_hired

datetime

Notnull

雇佣日

birthday

datetime

Null

生日

salary

int

Notnull

薪水

telephone

varchar(20)

Null

电话

addr

varchar(50)

null

住址

客户表customer

cust_id

char(5)

Notnull

primarykey

客户号

cust_name

varchar(20)

Notnull

客户名称

addr

varchar(40)

Notnull

客户住址

tel_no

varchar(20)

Notnull

客户电话

zip

char(6)

null

邮政编码

销售主表sales

order_no

int

Notnull

primarykey

订单编号

cust_id

char(5)

Notnull

客户号

sale_id

char(5)

Notnull

业务员编号

tot_amt

numeric(9,2)

Notnull

订单金额

order_date

datetime

Notnull

订货日期

销货明细表sale_item

order_no

int

Notnull

primarykey

订单编号

prod_id

char(5)

Notnull

primarykey

产品编号

qty

int

Notnull

销售数量

unit_price

numeric(7,2)

Notnull

单价

order_date

datetime

null

订单日期

产品名称表product

prod_id

char(5)

Notnull

primarykey

产品编号

prod_name

varchar(20)

Notnull

产品名称

1.创建表及相应的约束

createtableemployee1(

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)

go

2.修改表

altertableemployee

addconstraintck_phonecheck(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数据库:

1.创建student表,设置Sno为主键;在Sno列上创建核查约束,要求学号各个位上只能取数字字符;在Ssex列上创建核查约束,要求性别只能取“男”或“女”;在Sage列上创建核查约束,要求学生的年龄只能在14至38之间。

2.创建course表,设置列Cno为主键;在Cno列上创建核查约束,要求课程号只能取数字字符。

3.创建sc表,设置主键为Sno与Cno的组合;在Grade列上创建核查约束,限定成绩只能在0-100。

4.修改course表,在表中为Cpno列添加一外键约束Fk_Cpno,它参照了course表的主键Cno。

5.修改sc表,在表中为Sno添加一外键约束Fk_Sno,它参照了student表中的主键Sno;为Cno添加外键约束Fk_Cno,它参照了course表中的主键Cno。

针对company数据库:

1.在数据库company中创建以上五张表,并设置各表的主键。

2.在销售主表sales中添加字段“发票号码”invoice_no,char(10),NOTNULL。

3.添加外键约束:

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。

4.添加核查约束:

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。

5.为销售主表sales中的字段发票号码invoice_no设置为唯一约束,约束名为UN_inno。

实验四

实验名称:

简单的单表查询

一、实验目的

熟练掌握用SELECT语句实现简单的单表查询。

掌握SELECT子句、FROM子句、WHERE子句及ORDERBY子句的用法。

二、实验原理

用SELECT语句实现简单的单表查询。

在SELECT子句中用TOP关键字来限制返回到结果集中的记录数目,用DISTINCT关键字从结果集中去掉重复的记录。

WHERE子句中用关系比较符、[NOT]BETWEEN、[NOT]IN、LIKE、IS[NOT] NULL及逻辑运算符构成查询条件,对结果集中的记录进行筛选。

ORDERBY子句将根据查询结果集中一个或多个字段对查询结果进行排序。

三、实验设备

安装有SQLSERVER2000的计算机。

四、实验示例

1.查找表中所有姓刘的职工的工号,姓名,部门,薪水

selectemp_no,emp_name,dept,salary

fromemployee

whereemp_namelike'刘%'

2.查找所有定单金额高于20000的所有客户编号

selectcust_id

fromsales

wheretot_amt>20000

3.查找业务部或会计部的女员工的基本信息。

selectemp_no,emp_name,dept

fromemployee

wheresex='女'anddeptin('业务','会计')

4.选取编号界于‘C0001’和‘C0004’的客户编号、客户名称、客户地址。

selectcust_id,cust_name,addr

fromcustomer

wherecust_idbetween'C0001'AND'C0004'

5.选取销售数量最多的前5条订单订单号、数量。

selecttop5order_no,qty

fromsale_item

orderbyqtydesc

6.计算出sale_item表中每一笔销售数据的销售金额,并按照销售金额的大小排序。

selectprod_id,qty,unit_price,(qty*unit_price)tot_amt

fromsale_item

orderbytot_amtdesc

五、实验内容

运行查询文件,生成上机必要的数据,然后完成以下操作。

1、查找所有经理的姓名、职称、薪水。

2、在销售主表sales中查找销售金额大于等于10000元的订单。

3、在员工表employee中查找薪水在4000至8000元之间的员工。

select*

fromemployee

wheresalarybetween4000and8000

4、在员工表employee中查找住址为上海、北京、天津这三个城市的员工。

5、在客户表customer中查找住址不在上海、北京、天津这三个城市的客户。

6、在员工表employee中查找姓“王”用姓名最后一个字为“功”的员工。

7、在客户表customer中查找姓“刘”的客户名称、电话。

selectcust_name,tel_no

fromcustomer

wherecust_namelike'刘%'

8、查找出职称为“经理”或“职员”的女工的信息。

9、查找薪水最高的前三条员工记录。

10、查找订单金额最高的前10%的订单记录。

selecttop10percent*

fromsales

orderbytot_amtdesc

11、查找员工表中所属部门。

(去掉重复记录)

selectdistinctemp_no,emp_name,dept

fromemployee

12、查找员工表中的所有记录,并按薪水由低到高进行排序。

select*

fromemployee

orderbysalaryasc

实验五

实验名称:

复杂的单表查询

一、实验目的

熟练掌握SELECT查询语句中的Groupby子句、Having子句的用法,以及汇总函数的使用。

二、实验原理

在查询语句中用Groupby子句进行分组;

用Having子句对分组进行筛选。

使用MAX(),MIN(),COUNT(),SUM(),AVG()等函数在查询结果集中生成汇总值。

三、实验设备

安装有SQLSERVER2000的计算机。

四、实验示例

1、统计表中员工的薪水在40000-60000之间的人数

selectcount(*)as人数

fromemployee

wheresalarybetween40000and60000

2、计算'P0001'产品的平均销售单价

selectavg(unit_price)

fromsale_item

whereprod_id='P0001'

3、找出目前销售业绩超过40000元的业务员编号及销售业绩,并按销售业绩从大到小排序。

Selectsale_id,sum(tot_amt)

fromsales

groupbysale_id

havingsum(tot_amt)>40000

orderbysum(tot_amt)desc

4、查询订购了三种以上产品的订单号。

Selectorder_nofromsale_item

Groupbyorder_no

Havingcount(*)>3

五、实验内容

1、在员工表employee中统计员工人数。

selectcount(*)人数

fromemployee

2、统计各部门员工的员工人数及平均薪水。

selectcount(*)人数,avg(salary)平均工资

fromemployee

3、查询销售业绩超过10000元的员工编号。

selectsale_id

from(selectsale_id,sum(tot_amt)amount

fromsales

groupbysale_id)a

where>10000

4、计算每一产品销售数量总和与平均销售单价。

selectprod_id,sum(qty)tot_amount,sum(unit_tot)/sum(qty)average_unit_price

from(selectprod_id,qty,qty*unit_priceunit_tot

fromsale_item

)a

groupbyprod_id

5、统计各部门不同性别、或各部门、或不同性别或所有员工的平均薪水。

(在GROUPBY子句中使用CUBE关键字)

6、统计各部门不同性别、或各部门或所有员工的平均薪水。

(在GROUPBY子句中使用ROLLUP关键字)

7、计算出一共销售了几种产品。

selectcount(prod_id)

from(selectdistinctprod_id

fromsale_item)a

8、显示sale_item表中每种产品的订购金额总和,并且依据销售金额由大到小排列来显示出每一种产品的排行榜。

selectprod_id,sum(qty)tot_amount,sum(unit_tot)tot_amount

from(selectprod_id,qty,qty*unit_priceunit_tot

fromsale_item

)a

groupbyprod_id

orderbysum(unit_tot)desc

9、计算每一产品每月的销售金额总和,并将结果按销售(月份,产品编号)排序。

selectprod_id,month,sum(unit_amount)month_amount

from(selectprod_id,qty*unit_priceunit_amount,month(order_date)month

fromsale_item)a

groupbyprod_id,month

orderbyprod_idasc,month_amountdesc

 

10、查询每位业务员各个月的业绩,并按业务员编号、月份降序排序

selectsale_id,sum(tot_amt)month_amount,month(order_date)month

fromsales

groupbysale_id,month(order_date)

orderbysale_iddesc,monthdesc

实验六

实验名称:

连接查询

一、实验目的

掌握使用连接的方法从多个表中查询数据。

理解内连接、外连接(包括左外连接、右外连接和全外连接)、自身连接的概念和使用。

要求学生熟练掌握在FROM子句和在WHERE子句中指定连接条件的这两种方法。

二、实验原理

在查询语

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1