数据库原理实验指导书参考答案Word下载.docx
- 文档编号:19405859
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:32
- 大小:158.57KB
数据库原理实验指导书参考答案Word下载.docx
《数据库原理实验指导书参考答案Word下载.docx》由会员分享,可在线阅读,更多相关《数据库原理实验指导书参考答案Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
▪在打开的查询分析器窗口中,左侧的对象浏览器为注册的服务器,在工具栏的数据库选择中选择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'
数据结构'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 实验 指导书 参考答案