数据库实验16参考答案.docx

上传人:b****1 文档编号:2587979 上传时间:2023-05-04 格式:DOCX 页数:30 大小:27.76KB
下载 相关 举报
数据库实验16参考答案.docx_第1页
第1页 / 共30页
数据库实验16参考答案.docx_第2页
第2页 / 共30页
数据库实验16参考答案.docx_第3页
第3页 / 共30页
数据库实验16参考答案.docx_第4页
第4页 / 共30页
数据库实验16参考答案.docx_第5页
第5页 / 共30页
数据库实验16参考答案.docx_第6页
第6页 / 共30页
数据库实验16参考答案.docx_第7页
第7页 / 共30页
数据库实验16参考答案.docx_第8页
第8页 / 共30页
数据库实验16参考答案.docx_第9页
第9页 / 共30页
数据库实验16参考答案.docx_第10页
第10页 / 共30页
数据库实验16参考答案.docx_第11页
第11页 / 共30页
数据库实验16参考答案.docx_第12页
第12页 / 共30页
数据库实验16参考答案.docx_第13页
第13页 / 共30页
数据库实验16参考答案.docx_第14页
第14页 / 共30页
数据库实验16参考答案.docx_第15页
第15页 / 共30页
数据库实验16参考答案.docx_第16页
第16页 / 共30页
数据库实验16参考答案.docx_第17页
第17页 / 共30页
数据库实验16参考答案.docx_第18页
第18页 / 共30页
数据库实验16参考答案.docx_第19页
第19页 / 共30页
数据库实验16参考答案.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库实验16参考答案.docx

《数据库实验16参考答案.docx》由会员分享,可在线阅读,更多相关《数据库实验16参考答案.docx(30页珍藏版)》请在冰点文库上搜索。

数据库实验16参考答案.docx

数据库实验16参考答案

实验一SQLServer使用初步

一、实验目的

1、熟悉SQLServer2000的组成及基本功能。

2、掌握SQLServer2000的登录及注册。

3、掌握SQLServer2000企业管理器的使用方法。

4、熟悉查询分析器的基本使用。

二、实验预习

1、什么是数据库管理系统DBMS?

你所知道的DBMS有哪些?

答:

DBMS是位于用户和操作系统之间的一层数据管理软件。

常见的DBMS主要有:

Oracle、db2、SQLServer、MySQL、PostgreSQL、SQLite、Firebird等等。

2、SQLServer2000(2005)的安装步骤?

答:

以企业版安装为例,步骤为:

Ø将企业版安装光盘插入光驱后,出现以下提示框。

请选择“安装SQLServer2000组件”

Ø出现下面对话框后,选择"安装数据库服务器"。

Ø选择"下一步",然后选择"本地计算机"进行安装。

Ø在"安装选择"窗口,选择"创建新的SQLServer实例..."。

对于初次安装的用户,应选用这一安装模式,不需要使用"高级选项"进行安装。

"高级选项"中的内容均可在安装完成后进行调整。

Ø在"用户信息"窗口,输入用户信息,并接受软件许可证协议。

Ø在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。

Ø在“实例名”窗口,选择“默认”的实例名称。

Ø在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。

Ø在"服务账号"窗口,请选择"对每个服务使用统一账户..."的选项。

Ø在"身份验证模式"窗口,选择"混合模式..."选项,并设置管理员"sa"账号的密码。

Ø最后按“下一步”即可完成安装。

Ø检测安装:

如果安装成功,应该能成功启动SQLServer,并且能和SQLServer客户端连接上。

Ø可以通过服务管理器来进行启动。

三、实验内容和要求

1、注册服务器

基本步骤:

(1)打开企业管理器

(2)右击SQLServer组→新建SQLServer注册

(3)添加可用的服务器(实际数据库服务器的名称或IP地址)

(4)选择身份验证模式(选“系统管理员分配给我的登录信息”)

(5)输入正确的登录名和密码

(6)选择SQLServer组(选“在现有的SQLServer组中添加SQLServer”)

(7)完成注册

若注册成功,则显示注册成功的信息。

2、连接SQLServer服务器

(1)右键单击上面注册的数据库服务器,选择连接,建立与数据库服务器的连接。

观察连接后服务器图标的变化;

(2)右键单击选择编辑SQLServer注册属性,观察已注册数据库服务器的属性信息;

(3)右键单击选择删除SQLServer注册。

为保证数据库的安全性,使用完毕自己的数据库后,可采取删除的方式,断开与数据库的连接;

(4)重复注册服务器的步骤,再次建立与数据库的连接;

3、熟悉企业管理器

(1)单击建立的服务器连接,观察服务器的7个项目,写出它们的名称。

通过查看联机帮助,总结7个项目的基本功能。

 

(2)单击数据库,观察Northwind数据库下的11个项目,写出项目名称,通过联机帮助了解它们的基本功能。

 

(3)查看Northwind的表项目,单击表,观察表的名称、所有者、类型以及创建日期。

回答:

▪这些表的所有者有哪几种?

▪这些表的类型有哪几种?

▪选择表Employees,在右键菜单中选择打开表->返回所有行,观察表中的数据,说出这些数据的实际含义。

观察其他用户类型的表,你还能说出它们数据的实际含义吗?

 

(4)查看Northwind的视图项目,单击视图,观察视图的名称、所有者、类型以及创建日期。

选择视图ProductSalesfor1997,同上面观察表中数据的方法一样,观察视图中的数据,说出这些数据的意义。

 

(5)查看Northwind的用户项目,单击用户。

回答:

▪有哪类用户?

查看它们的属性对话框,它们的角色和权限是否相同?

▪通过联机帮助,写出dbo、Guest用户的区别。

(6)查看Northwind的角色项目,单击角色。

回答:

▪有哪些角色类型?

通过查看联机帮助,写出它们各自的含义和作用。

(7)查看Northwind的安全性项目,单击项目中的登录,观察不同的登录名称、类型、服务器访问、默认数据库,找到你自己的登录名称,右键单击打开属性对话框,观察对话框中的设置,写出登录属性对话框中的设置作用。

4、熟悉查询分析器

(1)打开查询分析器。

基本步骤:

▪单击注册的数据库服务器,确定服务器已经连接;

▪在主菜单“工具”中选择“SQL查询分析器”;

▪在打开的查询分析器窗口中,左侧的对象浏览器为注册的服务器,在工具栏的数据库选择中选择Northwind数据库为当前数据库;右侧窗口为查询窗口。

(2)分别在查询窗口中输入如下查询语句,观察查询结果,写出结果的数据记录个数:

查询语句1:

SELECT*

FROMShippers

ORDERBYCompanyName

结果记录数:

3

查询语句2:

SELECTFirstName,HomePhone

FROMNorthwind.dbo.Employees

ORDERBYFirstNameASC

结果记录数:

9

查询语句3:

SELECTROUND((UnitPrice*.9),2)ASDiscountPrice

FROMProducts

WHEREProductID=58

结果记录数:

1

查询语句4:

SELECTOrderID,

DATEDIFF(dd,ShippedDate,GETDATE())ASDaysSinceShipped

FROMNorthwind.dbo.Orders

WHEREShippedDateISNOTNULL

结果记录数:

809

查询语句5:

SELECTProductID,ProductName

FROMNorthwind.dbo.Products

WHERECategoryID=1ORCategoryID=4ORCategoryID=5

结果记录数:

29

 

四、实验小结

 

五、评阅成绩

实验预习20%

实验过程20%

实验结果30%

实验报告30%

总成绩

 

实验二数据定义

一、实验目的

1、掌握SQL数据定义功能:

数据库定义、表的定义、索引定义。

2、掌握利用企业管理器和SQL语句定义表、索引的方法。

二、实验预习

1、SQL中基本表定义语句格式:

 

2、SQL中修改基本表语句格式:

 

三、实验内容和要求

1、在企业管理器中,利用菜单操作的方式在各自的数据库中建立如下四个基本表:

(1)供应商表S:

列名

说明

数据类型

约束

SNO

供应商号

CHAR(6)

PRIMARYKEY

SNAME

供应商名

VARCHAR(20)

NOTNULL

STATUS

供应商状态

VARCHAR(50)

CITY

所在城市

VARCHAR(50)

(2)零件表P:

列名

说明

数据类型

约束

PNO

零件号

CHAR(6)

PRIMARYKEY

PNAME

零件名

VARCHAR(20)

NOTNULL

COLOR

颜色

CHAR

(2)

WEIGHT

重量

NUMERIC(9,2)

CHECK(WEIGHT>0ANDWEIGHT<=100)

(3)工程项目表J:

列名

说明

数据类型

约束

JNO

项目号

CHAR(6)

PRIMARYKEY

JNAME

项目名

VARCHAR(20)

NOTNULL

CITY

城市

VARCHAR(50)

(4)供应情况表SPJ:

列名

说明

数据类型

约束

SNO

供应商号

CHAR(6)

NOTNULL

PNO

零件号

CHAR(6)

NOTNULL

JNO

项目号

CHAR(6)

NOTNULL

QTY

供应数量

SMALLINT

DEFAULT100

2、用CREATE语句建立如下三个表,并写出相应的语句。

(1)学生表Student:

列名

说明

数据类型

约束

SNO

学号

CHAR(7)

主码

SNAME

姓名

CHAR(10)

NOTNULL

SSEX

性别

CHAR

(2)

取“男”或“女”

SAGE

年龄

SMALLINT

取值15-45

SDEPT

所在系

VARCHAR(20)

默认“计算机系”

语句:

CREATETABLEStudent(

Snochar(7)PRIMARYKEY,

Snamechar(10)notnull,

Ssexchar

(2)CHECK(Ssex='男'orSsex='女'),

SagesmallintCHECK(Sage>=15andSage<=45),

Sdeptchar(20)DEFAULT'计算机系'

(2)课程表Course:

列名

说明

数据类型

约束

CNO

课程号

CHAR(10)

主码

CNAME

课程名

VARCHAR(20)

NOTNULL

CCREDIT

学分

SMALLINT

大于0

SEMSTER

学期

SMALLINT

大于0

PERIOD

学时

SMALLINT

大于0

语句:

CREATETABLECourse(

Cnochar(10)PRIMARYKEY,

Cnamevarchar(20)NOTNULL,

Ccreditsmallintcheck(ccredit>0),

semstersmallintcheck(semster>0),

periodsmallintcheck(period>0)

(3)选课表Sc:

列名

说明

数据类型

约束

SNO

学号

CHAR(7)

主码,引用Student的外码

CNO

课程号

CHAR(10)

主码,引用Course的外码

GRADE

成绩

SMALLINT

大于0

语句:

CREATETABLESC(

Snochar(7),

Cnochar(10),

Gradesmallintcheck(grade>=0),

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno)

3、利用SQL语句对表结构进行修改。

(1)为零件表P增加一个规格(GUIGE)列,数据类型为字符,长度50;

AlterTablePAddGUIGEchar(50)

(2)修改课程表Course的CNAME属性列的类型为VARCHAR(30);

AlterTableCourseAlterColumnCNAMEvarchar(30)

(3)为供应情况表SPJ添加参照完整性约束;

SPJ的SNO列参照S表SNO列

AlterTableSPJAddForeignKey(SNO)ReferencesS(SNO)

SPJ的PNO列参照P表PNO列

AlterTableSPJAddForeignKey(PNO)ReferencesP(PNO)

SPJ的JNO列参照J表JNO列

AlterTableSPJAddForeignKey(JNO)ReferencesJ(JNO)

(4)删除零件表P的规格(GUIGE)列

AlterTablePDropColumnGUIGE

4、利用企业管理器向表中添加数据

(1)供应商表S:

SNO

SNAME

STATUS

CITY

S1

精益

20

天津

S2

盛锡

10

北京

继续往表中增加一条记录:

四个字段的数据分别是S1,东方红,30,北京,会出现什么情况?

为什么?

不能增加,因为SNO是主键,不能取重复值。

(2)零件表P:

PNO

PNAME

COLOR

WEIGHT

P1

螺母

12

P2

螺栓

绿

17

P3

螺丝刀

105.5

是否能够正常输入三条数据?

如果否,问题出在哪里,为什么?

第三条记录不能输入,因为P3的WEIGHT属性取值违法了其检查约束。

(3)工程项目表J:

JNO

JNAME

CITY

J1

一汽

北京

J2

半导体厂

南京

J3

常州

第三条记录是否能够正常输入,若否,会出现什么问题,为什么?

第三条记录不能输入,因为JNAME不能取NULL值。

(4)供应情况表SPJ:

SN0

PNO

JNO

QTY

S1

P1

J1

200

S1

P1

J3

S2

P2

J4

输入过程中是否会遇到问题,若有,出在哪,为什么?

第三条记录不能输入,因为在工程项目表J中没有J3,破坏了参考完整性。

 

四、实验小结

 

五、评阅成绩

实验预习20%

实验过程20%

实验结果30%

实验报告30%

总成绩

实验三数据查询

一、实验目的

1、掌握查询语句的基本组成和使用方法

2、掌握常用查询技巧

二、实验预习

1、SQL中查询语句格式:

 

2、连接查询有哪些不同的连接方式?

有什么特点。

 

三、实验内容和要求

1、按照下表中的内容,在企业管理器中为数据库表输入相应的数据。

学生表:

Student

Sno

Sname

Ssex

Sage

Sdept

李勇

19

计算机系

王敏

20

计算机系

张莉

22

信息系

吴宾

21

信息系

张海

20

信息系

钱小平

18

数学系

王大力

19

数学系

课程表:

Course

Cno

Cname

Ccredit

Semster

Period

C01

计算机导论

3

1

3

C02

VB

4

3

4

C03

计算机网络

4

7

4

C04

数据库基础

6

6

4

C05

高等数学

8

1

8

选课表:

SC

Sno

Cno

Grade

C03

95

C03

51

C05

80

C05

60

C05

72

C05

80

C05

45

C05

81

C05

94

C01

NULL

C01

NULL

C02

87

C04

76

2、完成下列查询

(1)查询全体学生的信息。

select*fromstudent

(2)查询“信息系”学生的学号,姓名和出生年份。

selectSno,Sname,2009-SageasBirthyearfromstudentwhereSdept='信息系'

(3)查询考试不及格的学生的学号。

selectDistinctSnofromSCwhereGrade<60

(4)查询无考试成绩的学生的学号和相应的课程号。

selectSno,CnofromSCwhereGradeisnull

(5)将学生按年龄升序排序。

select*fromstudentorderbySageasc

(6)查询选修了课程的学生的学号和姓名。

SelectSno,SnamefromStudentWhereSnoin(SelectSnoFromSc)

或:

selectdistinctstudent.Sno,Snamefromstudent,SCwherestudent.Sno=SC.Sno

 

(7)查询年龄在20-23岁之间的学生的姓名,系,年龄。

selectSname,Sage,SdeptfromstudentwhereSagebetween20and23

(8)查询同时选修了“计算机导论”,“高等数学”课程的学生的学号,姓名。

selectstudent.Sno,SnamefromstudentwhereNOTEXISTS(

select*fromcoursewhere

Cnamein('高等数学','计算机导论')ANDNOTEXISTS(select*fromSCwhereSno=student.SnoandCno=course.Cno))

或:

selectstudent.Sno,Snamefromstudent,sc,Coursewherestudent.sno=sc.snoando=oandcname='高等数学'andstudent.snoin(selectsnofromscwherecno=(selectcnofromcoursewherecname='计算机导论'))

或:

selectstudent.Sno,Snamefromstudentwheresnoin(selectsnofromscwherecno=(selectcnofromcoursewherecname='高等数学'))andsnoin(selectsnofromscwherecno=(selectcnofromcoursewherecname='计算机导论'))

(9)查询姓“张”的学生的基本信息。

select*fromstudentwhereSnamelike'张%'

(10)查询“95211”班学生的选课情况,要求输出学号,姓名,课程名,成绩,按照学号升序排序。

selectstudent.Sno,Sname,Cname,Gradefromstudent,SC,coursewherestudent.Sno=SC.Snoandcourse.Cno=SC.Cno

andstudent.Snolike'95211%'orderbystudent.Sno

或:

selectstudent.Sno,Sname,Cname,Gradefromstudent,SC,coursewherestudent.Sno=SC.Snoandcourse.Cno=SC.Cno

andleft(student.sno,5)='95211'orderby1

(11)查询选修了课程的学生的总人数。

selectcount(distinctsno)fromSC

 

(12)查询选修了“C05”课程的的学生成绩单,要求输出学号,姓名,成绩,结果按班级升序,成绩降序排列。

selectstudent.Sno,Sname,Gradefromstudent,SCwherestudent.Sno=SC.SnoandCno='C05'orderbyleft(student.Sno,5)asc,Gradedesc

(13)统计各门课程的成绩,要求输出课程代号,课程名,平均成绩,选修人数。

(成绩为NULL值的不统计)

selectcourse.Cno,Cname,avg(Grade),count(Sno)fromcourse,Scwherecourse.Cno=SC.CnoandGradeisnotnullgroupbyCourse.Cno,Cname

(14)统计各门课程的不及格人数,要求输出课程代号,课程名,不及格人数。

selectCourse.Cno,Cname,count(Sno)fromSC,CoursewhereSC.Cno=course.Cno

andGrade<60groupbyCourse.Cno,Cname

(15)查询选修平均成绩在75分以上的学生的学号,姓名,所在系。

selectsc.sno,sname,sdeptfromstudent,scwherestudent.sno=sc.snogroupbysc.sno,sname,sdepthavingavg(grade)>75

或:

selectsno,sname,sdeptfromstudentwhereSnoin(SelectSnoFromSCGroupBySnoHavingAvg(Grade)>75)

(16)查询与“王大力”同一个系的学生的基本信息

select*fromstudentwheresdeptin(selectsdeptfromstudentwheresname='王大力')

(17)查询选修平均分高于所有学生平均分的学生的学号,并按学号升序排列。

selectstudent.Snofromstudent,SCwherestudent.Sno=SC.Snogroupbystudent.Snohavingavg(Grade)>(selectAvg(Grade)fromSC)orderbystudent.Snoasc

(18)查询未选修“VB”或“数据库基础”两门课的学生的学号,姓名,系名。

(要求用嵌套查询)

selectsno,sname,sdeptfromstudentwheresnonotin(selectsnofromscwherecnoin(selectcnofromcoursewherecnamein('VB','数据库基础')))

或:

selectsno,sname,sdeptfromStudentwhereexists(

select*fromCoursewherecname='VB'andnotexists(

select*fromSCwheresno=Student.snoandcno=CoandCame!

='数据库基础'))

(19)查询选修了全部课程的学生的学号,姓名,系名。

selectsno,sname,sdeptfromstudent

wherenotexists(select*fromcoursewherenotexists

(select

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2