数据库原理实验指导书参考答案Word下载.docx

上传人:b****6 文档编号:19405859 上传时间:2023-01-06 格式:DOCX 页数:32 大小:158.57KB
下载 相关 举报
数据库原理实验指导书参考答案Word下载.docx_第1页
第1页 / 共32页
数据库原理实验指导书参考答案Word下载.docx_第2页
第2页 / 共32页
数据库原理实验指导书参考答案Word下载.docx_第3页
第3页 / 共32页
数据库原理实验指导书参考答案Word下载.docx_第4页
第4页 / 共32页
数据库原理实验指导书参考答案Word下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

数据库原理实验指导书参考答案Word下载.docx

《数据库原理实验指导书参考答案Word下载.docx》由会员分享,可在线阅读,更多相关《数据库原理实验指导书参考答案Word下载.docx(32页珍藏版)》请在冰豆网上搜索。

数据库原理实验指导书参考答案Word下载.docx

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

右侧窗口为查询窗口。

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

查询语句1:

SELECT*

FROMShippers

ORDERBYCompanyName

结果记录数:

查询语句2:

SELECTFirstName,HomePhone

FROMNorthwind.dbo.Employees

ORDERBYFirstNameASC

查询语句3:

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

FROMProducts

WHEREProductID=58

查询语句4:

SELECTOrderID,

DATEDIFF(dd,ShippedDate,GETDATE())ASDaysSinceShipped

FROMNorthwind.dbo.Orders

WHEREShippedDateISNOTNULL

查询语句5:

SELECTProductID,ProductName

FROMNorthwind.dbo.Products

WHERECategoryID=1ORCategoryID=4ORCategoryID=5

四、实验小结

五、评阅成绩

实验预习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

所在城市

(2)零件表P:

PNO

零件号

PNAME

零件名

COLOR

颜色

CHAR

(2)

WEIGHT

重量

NUMERIC(9,2)

CHECK(WEIGHT>

0ANDWEIGHT<

=100)

(3)工程项目表J:

JNO

项目号

JNAME

项目名

城市

(4)供应情况表SPJ:

QTY

供应数量

SMALLINT

DEFAULT100

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

(1)学生表Student:

学号

CHAR(7)

主码

姓名

CHAR(10)

SSEX

性别

取“男”或“女”

SAGE

年龄

取值15-45

SDEPT

所在系

默认“计算机系”

语句:

CREATETABLEStudent(

Snochar(7)PRIMARYKEY,

Snamechar(10)notnull,

Ssexchar

(2)CHECK(Ssex='

男'

orSsex='

女'

),

SagesmallintCHECK(Sage>

=15andSage<

=45),

Sdeptchar(20)DEFAULT'

计算机系'

(2)课程表Course:

CNO

课程号

CNAME

课程名

CCREDIT

学分

大于0

SEMSTER

学期

PERIOD

学时

CREATETABLECourse(

Cnochar(10)PRIMARYKEY,

Cnamevarchar(20)NOTNULL,

Ccreditsmallintcheck(ccredit>

0),

semstersmallintcheck(semster>

periodsmallintcheck(period>

0)

(3)选课表Sc:

主码,引用Student的外码

主码,引用Course的外码

GRADE

成绩

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、利用企业管理器向表中添加数据

S1

精益

20

天津

S2

盛锡

10

北京

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

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

为什么?

P1

螺母

12

P2

螺栓

绿

17

P3

螺丝刀

105.5

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

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

J1

一汽

J2

半导体厂

南京

J3

常州

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

SN0

200

J4

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

实验三数据查询

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

2、掌握常用查询技巧

1、SQL中查询语句格式:

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

有什么特点。

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

学生表:

Student

Sno

Sname

Ssex

Sage

Sdept

9512101

李勇

19

计算机系

9512103

王敏

9521101

张莉

22

信息系

9521102

吴宾

21

9521103

张海

9531101

钱小平

18

数学系

9531102

王大力

课程表:

Course

Cno

Cname

Ccredit

Semster

Period

C01

计算机导论

3

1

C02

VB

4

C03

计算机网络

7

C04

数据库基础

6

C05

高等数学

8

选课表:

SC

Grade

95

51

80

60

72

45

81

94

NULL

87

76

2、完成下列查询

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

select*fromstudent

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

selectSno,Sname,2009-SageasBirthyearfromstudentwhereSdept='

信息系'

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

selectDistinctSnofromSCwhereGrade<

(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

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='

andnotexists(

select*fromSCwheresno=Student.snoandcno=CoandCame!

='

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

selectsno,sname,sdeptfromstudent

wherenotexists(select*fromcoursewherenotexists

(select*fromscwheresno=student.snoandcno=o))

wheresnoin(selectsnofromscgroupbysnohavingcount(cno)=(selectcoount(*)fromcourse))

(20)输出“高等数学”课程成绩前三名的学生的学号,姓名,系名

selecttop3student.sno,sname,sdeptfromstudent,sc,coursewherestudent.sno=sc.snoando=oandcname='

orderbygradedesc

实验四数据更新

1、掌握SQL语言的数据更新操作

2、掌握SQLServer2000企业管理器的数据导入和导出功能

1、数据插入语句格式:

2、数据修改语句格式:

3、数据删除语句格式:

4、SQLServer中可进行批量数据导入和导出,可支持哪些格式的数据导入导出?

(举常见格式类型)

(执行操作后,将语句填写在下面的空白处)

1、插入数据

(1)在学生表Student中插入数据:

Sno:

9512102Sname:

刘晨Ssex:

男Sage:

20Sdept:

insertintoStudent

values('

9512102'

刘晨'

20,'

(2)在课程表Course中插入数据:

Cno:

C06Cname:

数据结构Ccredit:

5Semster:

insertintoCourse(cno,cname,ccredit,semster)

C06'

数据结构'

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

当前位置:首页 > 表格模板 > 书信模板

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

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