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

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

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

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

数据库课后习题答案第四版.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.[

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

实验二

实验名称:

创建和修改数据库

一、实验目的

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

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

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

二、实验原理

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

三、实验设备

安装有SQLSERVER2000的计算机。

四、实验示例

1.·

2.创建名称为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)

3.对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.:

8.采用默认设置创建数据库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.*

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

4.添加外键约束:

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。

5.添加核查约束:

a)将员工表employee中的薪水字段salary的值限定在1000至10000间,约束名为CK_salary。

b)将员工表employee中的员工编号字段emp_no设定为以“E”字母开头,后面跟5位数的编号,约束名为CK_emp_no。

c)将员工表employee中的性别字段设定这取值只能是“男”和“女”。

约束名为CK_sex。

d)/

e)将销售主表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、#

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

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

 

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

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

>

fromsales

groupbysale_id,month(order_date)

orderbysale_iddesc,monthdesc

实验六

实验名称:

连接查询

一、实验目的

掌握使用连接的方

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

当前位置:首页 > 教学研究 > 教学反思汇报

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

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