2020年数据库原理实验指导书参考答案_第1页
2020年数据库原理实验指导书参考答案_第2页
2020年数据库原理实验指导书参考答案_第3页
2020年数据库原理实验指导书参考答案_第4页
2020年数据库原理实验指导书参考答案_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理实验指导书参考答案

中割准工出院

《数据库原理与应用》实验指导

/年第一学期

姓名:______________

学号:______________

班级:______________

指导教师:______________

计算机科学与工程学院

文档仅供参考

实验一SQLServer使用初步

一、实验目的

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

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

3、掌握SQLServer企业管理器的使用方

法。

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

二、实验预习

1、什么是数据库管理系统DBMS?你所知道

的DBMS有哪些?

2、SQLServer()的安装步骤?

文档仅供参考

三、实验内容和要求

1、注册服务器

基本步骤:

(1)打开企业管理器

(2)右击SQLServer组f新建SQLServer

注册

(3)添加可用的服务器(实际数据库服务

器的名称或IP地址)

(4)选择身份验证模式(选“系统管理员

分配给我的登录信息”)

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

(6)选择SQLServer组(选“在现有的SQL

Server组中添加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

结果记录数:

查询语句2:

文档仅供参考

SELECTFirstName,HomePhone

FROMNorthwind.dbo.Employees

ORDERBYFirstNameASC

结果记录数:

查询语句3:

SELECTROUND((UnitPrice*.9),2)

ASDiscountPrice

FROMProducts

WHEREProductID=58

结果记录数:

查询语句4:

SELECTOrderlD,

DATEDIFF(dd,ShippedDate,

GETDATE())ASDaysSinceShipped

FROMNorthwind.dbo.Orders

WHEREShippedDateISNOTNULL

文档仅供参考

结果记录数:

查询语句5:

SELECTProductID,ProductName

FROMNorthwind.dbo.Products

WHERECategorylD=1ORCategorylD

=4ORCategorylD=5

结果记录数:

四、实验小结

文档仅供参考

五、评阅成绩

实验预实验过实验结实验报总成绩

习20%程20%果30%告30%

文档仅供参考

实验二数据定义

一、实验目的

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

表的定义、索引定义。

2、掌握利用企业管理器和SQL语句定义表、

索引的方法。

二、实验预习

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

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

文档仅供参考

三、实验内容和要求

1、在企业管理器中,利用菜单操作的方式

在各自的数据库中建立如下四个基本表:

(1)供应商表S:

列名说数据类型约束

SNO供CHAR(6)PRIMARY

应KEY

SNAME供VARCHAR(20)NOT

应NULL

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>0

量AND

WEIGHT<=100)

(3)工程项目表J:

列名说明数据类型约束

文档仅供参考

JNO项目CHAR(6)PRIMARY

号KEY

JNAME项目VARCHAR(20)NOT

名NULL

CITYVARCHAR(50)

(4)供应情况表SPJ:

皿.1口MAmi

列名说明数据类型约束

SNO供应商CHAR(6)NOTNULL

PNO零件号CHAR(6)NOTNULL

JNO项目号CHAR(6)NOTNULL

QTY供应数SMALLINTDEFAULT

量100

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

相应的语句。

(1)学生表Student:

列名说明数据类型约束

SNO学号CHAR(7)主码

文档仅供参考

SNAME姓名CHAR(10)NOT

NULL

SSEX性别CHAR(2)取“男”

或“女”

SAGE年龄SMALLINT取值

15-45

SDEPT所在VARCHAR(20)默认

系“计算

机系”

语句:

CREATETABLEStudent(

Snochar(7)PRIMARYKEY,

Snamechar(10)notnull,

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

女'),

SagesmallintCHECK(Sage>=15and

Sage<=45),

Sdeptchar(20)DEFAULT'计算机系'

)

(2)课程表Course:

列名说数据类型约束

文档仅供参考

CNO课CHAR(10)主码

CNAME课VARCHAR(20)NOT

程NULL

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);

AlterTableCourseAlterColumnCNAME

varchar(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:

SN0SNAMESTATUSCITY

S1精益20天津

S2盛锡10北京

继续往表中增加一条记录:四个字段的数据

分别是S1,东方红,30,北京,会出现什么情

况?为什么?

(2)零件表P:

PN0PNAMECOLORWEIGHT

P1螺母红12

P2螺栓绿17

文档仅供参考

P3螺丝蓝105.5

是否能够正常输入三条数据?如果否,问题

出在哪里,为什么?

(3)工程项目表J:

JNOJNAMECITY

J1一汽北京

J2半导体南京

r

J3常州

第三条记录是否能够正常输入,若否,会出

现什么问题,为什么?

(4)供应情况表SPJ:

文档仅供参考

SNOPNOJNOQTY

S1P1J1200

S1P1J3

S2P2J4

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

为什么?

四、实验小结

文档仅供参考

五、评阅成绩

实验预实验过实验结实验报总成绩

习20%程20%果30%告30%

文档仅供参考

实验三数据查询

一、实验目的

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

2、掌握常见查询技巧

二、实验预习

1、SQL中查询语句格式:

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

么特点。

文档仅供参考

三、实验内容和要求

1、按照下表中的内容,在企业管理器中为

数据库表输入相应的数据。

学生表:Student

SnoSnameSsexSageSdept

9512101李勇男19计算机

9512103王敏女20计算机

9521101张莉女22信息系

9521102吴宾男21信息系

9521103张海男20信息系

9531101钱小平女18数学系

9531102王大力男19数学系

课程表:Course

CnoCnameCcreditSemsterPeriod

C01计算机313

导论

C02VB434

C03计算机474

文档仅供参考

网络

C04数据库664

基础

C05高等数818

选课表:SC

SnoCnoGrade

9512101C0395

9512103C0351

9512101C0580

9512103C0560

9521101C0572

9521102C0580

9521103C0545

9531101C0581

9531102C0594

9512101C01NULL

9531102C01NULL

9512101C0287

文档仅供参考

9512101C0476

2、完成下列查询

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

select*fromstudent

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

出生年份。

selectSno,Sname,-SageasBirthyear

fromstudentwhereSdept=,信息系'

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

selectDistinctSnofromSCwhere

Grade<60

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

的课程号。

文档仅供参考

selectSno,CnofromSCwhereGradeis

null

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

select*fromstudentorderbySageasc

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

SelectSno,SnamefromStudentWhereSno

in(SelectSnoFromSc)

或:

selectdistinctstudent.Sno,Snamefrom

student,SCwherestudent.Sno=SC.Sno

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

名,系,年龄。

文档仅供参考

selectSname,Sage,Sdeptfromstudent

whereSagebetween20and23

(8)查询同时选修了“计算机导论”,“高

等数学”课程的学生的学号,姓名。

selectstudent.Sno,Snamefromstudent

whereNOTEXISTS(

select*fromcoursewhere

Cnamein('高等数学','计算机导论

')ANDNOTEXISTS(select*fromSC

whereSno=student.Snoand

Cno=course.Cno))

或:

selectstudent.Sno,Snamefrom

student,sc,Coursewhere

student.sno=sc.snoand

o=oandcname=,高等数学’

andstudent,snoin(selectsnofromsc

wherecno=(selectcnofromcoursewhere

文档仅供参考

cname=,计算机导论'))

或:

selectstudent.Sno,Snamefromstudent

wheresnoin(selectsnofromscwhere

cno=(selectenofromcoursewhere

cname='高等数学'))andsnoin(select

snofromscwherecno=(selectenofrom

coursewherecname=,计算机导论’))

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

select*fromstudentwhereSnamelike

'张%'

(10)查询“95211”班学生的选课情况,

要求输出学号,姓名,课程名,成绩,按照

学号升序排序。

selectstudent.Sno,Sname,Cname,Grade

fromstudent,SC,coursewhere

文档仅供参考

student.Sno=SC.Snoand

course.Cno=SC.Cno

andstudent.Snolike'95211%'order

bystudent.Sno

或:

selectstudent.Sno,Sname,Cname,Grade

fromstudent,SC,coursewhere

student.Sno=SC.Snoand

course.Cno=SC.Cno

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

orderby1

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

selectcount(distinctsno)fromSC

(12)查询选修了“C05”课程的的学生成

绩单,要求输出学号,姓名,成绩,结果按

班级升序,成绩降序排列。

文档仅供参考

selectstudent.Sno,Sname,Gradefrom

student,SCwherestudent.Sno=SC.Snoand

Cno='C05'orderby

left(student.Sno,5)asc,Gradedesc

(13)统计各门课程的成绩,要求输出课程

代号,课程名,平均成绩,选修人数。(成

绩为NULL值的不统计)

select

course.Cno,Cname,avg(Grade),count(Sno)

fromcourse,Scwherecourse.Cno=SC.Cno

andGradeisnotnullgroupby

Course.Cno,Cname

(14)统计各门课程的不及格人数,要求输

出课程代号,课程名,不及格人数。

selectCourse.Cno,Cname,count(Sno)

fromSC,CoursewhereSC.Cno=course.Cno

文档仅供参考

andGrade<60groupby

Course.Cno,Cname

(15)查询选修平均成绩在75分以上的学

生的学号,姓名,所在系。

selectsc.sno,sname,sdeptfrom

student,scwherestudent.sno=sc.sno

groupbysc.sno,sname,sdepthaving

avg(grade)>75

或:

selectsno,sname,sdeptfromstudent

whereSnoin(SelectSnoFromSCGroup

BySnoHavingAvg(Grade)>75)

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

基本信息

select*fromstudentwheresdept

in(selectsdeptfromstudentwhere

文档仅供参考

sname=,王大力’)

(17)查询选修平均分高于所有学生平均分

的学生的学号,并按学号升序排列。

selectstudent.Snofromstudent,SC

wherestudent.Sno=SC.Snogroupby

student.Snohavingavg(Grade)>(select

Avg(Grade)fromSC)orderbystudent.Sno

asc

(18)查询未选修“VB”或“数据库基础”

两门课的学生的学号,姓名,系名。(要求

用嵌套查询)

selectsno,sname,sdeptfromstudent

wheresnonotin(selectsnofromscwhere

enoin(selectenofromcoursewhere

cnamein('VB','数据库基础')))

或:

文档仅供参考

selectsno,sname,sdeptfromStudent

whereexists(

select*fromCoursewherecname=,VB'

andnotexists(

select*fromSCwheresno=Student.sno

andcno=Course.enoandCourse,cname!=,

数据库基础,))

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

姓名,系名。

selectsno,sname,sdeptfromstudent

wherenotexists(select*fromcourse

wherenotexists

(select*fromscwhere

sno=student.snoandcno=course.eno))

或:

selectsno,sname,sdeptfromstudent

wheresnoin(selectsnofromscgroup

文档仅供参考

bysnohavingcount(eno)=(select

coount(*)fromcourse))

(20)输出“高等数学”课程成绩前三名的

学生的学号,姓名,系名

selecttop3student,sno,sname,sdept

fromstudent,sc,coursewhere

student.sno=sc.snoand

o=course.enoandcname=,高等数学’

orderbygradedesc

四、实验小结

五、评阅成绩

实验预实验过实验结实验报总成绩

文档仅供参考

习20%程20%果30%告30%

文档仅供参考

实验四数据更新

一、实验目的

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

2、掌握SQLServer企业管理器的数据导

入和导出功能

二、实验预习

1、数据插入语句格式:

2、数据修改语句格式:

3、数据删除语句格式:

4、SQLServer中可进行批量数据导入和导

出,可支持哪些格式的数据导入导出?(举

常见格式类型)

文档仅供参考

三、实验内容和要求

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

处)

1、插入数据

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

Sno:9512102Sname:刘晨Ssex:男

Sage:20Sdept:计算机系

insertintoStudent

values('9512102'J刘晨','男',20,'计算机系')

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

Cno:C06Cname:数据结构Ccredit:

5Semster:4

insertintoCourse(cno,cname,ccredit,semster)

values('C06','数据结构',5,4)

或:

insertintoCoursevalues('C06','数据结构',5,4,null)

文档仅供参考

(3)在选课表SC中插入95211班学生选修

C04的选课信息。

提示:插入的数据的Sno从Student表中查

询而来,插入的Cno为“C04”

insertintoSC(sno,Cno)

selectsno,'c04'fromStudentwheresnolike'95211%'

(4)查询高等数学的成绩,包括学号,成

绩,并按学号升序排序。将查询的结果输出

到一个名为gs_cj的表中。

selectsno,gradeintogs__cj

fromsc,o=oandcname=,高等数学'

orderbysno

(5)将SC表中“C05”课程的选课记录输

出至一个新表中,表名为GsOl。

select*intoGsOl

fromscwherecno=,c05*

文档仅供参考

2、修改数据

(1)将所有学生的年龄增加1岁。

updatestudentsetsage=sage+l

(2)修改“9512101”学生的“C01”课程

成绩为85o

updatescsetgrade=85

wheresno=,951210Tandcno=,cOT

(3)修改“9531102”学生的“C01”课程

成绩为70o

updatescsetgrade=70

wheresno=,9531102,andcno=,cOT

(4)将所有平均分为75分以上的学生的各

文档仅供参考

门课成绩在原来基础上增加1%。

updatescsetgrade=grade*l.01

wheresnoin

(selectsnofromscgroupbysnohavingavg(grade)>=75)

3、删除数据

(1)删除“9531102”学生“C05”课程的

成绩记录

deletefromscwheresno=,9531102*andcno='c05'

(2)删除所有课程为“C05”的选课记录

deletefromscwherecno=,c05,

4、数据的导出

(1)将数据库中的S,P,J,SPJ表导出为一

个ACCESS数据库,名为DB_SPJ。

(2)Student表中数据导出到一个文本文

件,用,作为数据项的分隔符。

文档仅供参考

(3)将Course表中数据导出到一个Excel

文件中。

5、批量增加数据

(1)利用查询,将其它表中的数据增加到

需要的数据表中。

将GsOl表中的数据添加到SC表中。(用

Insert语句实现)

insertintoscselect*fromGsOl

(2)从外部其它数据源导入数据(选做)

-从文本文件中导入

■从ACCESS中导入数据

■从EXECEL中导入数据

文档仅供参考

四、实验小结

五、评阅成绩

实验预实验过实验结实验报总成绩

习20%程20%果30%告30%

文档仅供参考

实验五数据控制

一、实验目的

1、掌握数据库完整性约束条件的设置

2、掌握触发器的基本使用

3、掌握SQLServer的安全性控制方法

二、实验预习

1、关系数据库的完整性约束有哪些?

2、什么是触发器?其作用是什么?SQL

Server中的触发器主要有哪些?

文档仅供参考

三、实验内容和要求

1、实体完整性约束

(1)为供应商表SPJ建立完整性约束,约

束列为SNO,PNO,JNOo

方法1:在表设计器中建立,请写出建立的

步骤:

方法2:写出创立表的同时定义完整性约束

的SQL语句。

createtablespj

(

snochar(6)foreignkeyreferences

s(sno),

pnochar(6)foreignkeyreferences

文档仅供参考

P(pno),

jnochar(6)foreignkeyreferences

j(jno),

qtysmallintdefault100,

primarykey(sno,pno,jno)

)

(2)根据实验2中的内容,输入数据下面

的数据,能否成功?为什么?

S1P1J1200

(3)输入下面的数据能否成功,为什么?

S1NULLJ1200

文档仅供参考

(4)根据上面实验的结果,请说明实体完

整性约束的含义。

2、参照完整性约束

(1)修改Student表中记录,将学号

9512101改为9512103,更改是否成功?若

不成功请说出原因。

updatestudentsetsno=,9512103,where

sno=951210r

(2)修改SC表中记录,将学号为9512101

的记录均改为学号9512109,是否更改成

功?若不成功请说出原因。

文档仅供参考

updatescsetsno=,9512109,where

sno=9512101'

(3)设置SC表的参照完整性为更新和删除

时均为级联。

方法1:在表设计器中设置,请写出设置的

步骤:

方法2:在创立表时同时设置参照完整性约

束,并设置规则为级联。请写出SQL语句。

文档仅供参考

CREATETABLESC(

Snochar(10),

Cnochar(10),

Gradenumeric(6,2),

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Cno)REFERENCES

Course(Cno)

ondeletecascadeonupdatecascade,

FOREIGNKEY(Sno)REFERENCES

Student(Sno)

ondeletecascadeonupdatecascade

)

(4)修改Student表学号9512101为

9512109,观察SC表中相应记录是否更新?

updatestudentsetsno=,9512109,where

sno=,951210V

文档仅供参考

(5)在Course表中删除课程代号为C01的

记录,观察SC表中选课C01的记录是否删

除?

deletefromcoursewherecno=,COT

3、用户自定义完整性

(1)设置Student表的Sno输入长度必须

为7个字符的约束。请将CHECK约束子句写

在下面:

altertablestudentaddcheck(snolike

,3

(2)设置student表的Sdept只能为“计

算机系”,“数学系”,“信息系”,“物理系”。

请将CHECK约束子句写在下面:

altertablestudentaddcheck(sdeptin('

计算机系’,'数学系信息系','物理系

文档仅供参考

'))

4、触发器

(1)定义一个触发器,其基本功能是在SC

表中增加或修改一个选课记录时,检查该课

程的选课人数是否超过限定(可自行定义一

个限定值,根据表中数据的情况而定)。若

超过限定值,则拒绝操作。

触发器代码:

CREATETRIGGERtriglONSC

FORINSERT,UPDATE

AS

IF(SELECTCOUNT(*)FROMSCWHERE

CNO=(selectCNOfromINSERTED))>10

BEGIN

PRINT'选课人数超过上限'

文档仅供参考

ROLLBACK

END

(2)定义一个触发器,当删除Student表

中数据时,先将删除的数据插入到另一个专

门存放已删除数据的表中(实验时,首先定

义一个与Student表结构相同的表用来存放

删除的数据),然后执行删除操作。

触发器代码:

selecttop0*intosifromstudent

createtriggertrig2onstudent

fordelete

as

insertintosiselect*fromdeleted

5、用户权限控制

(1)在自己数据库中添加其它用户。

(2)为添加的用户进行授权和权限收回。

相互检查是否获得了相应的权限。

文档仅供参考

sp_adduser'rjl07','rjl07'

grantselectonstudenttorjl07

grantselect,update(cname)oncourseto

rjl07

revokeselectoncoursefromrjl07

sp_dropuserJrjl07,

四、实验小结

五、评阅成绩

实验预实验过实验结实验报总成绩

习20%程20%果30%告30%

文档仅供参考

实验六视图与存储过程

一、实验目的

1、掌握视图的定义及使用

2、掌握存储过程的建立和调用

二、实验预习

1、基本表与视图有什么不同?哪种视图能

够更新?

2、视图定义语句格式:

3、什么是存储过程,其作用主要是什么?

文档仅供参考

三、实验内容和要求

1、视图(将执行的SQL语句写在下面)

(1)建立视图IS_STUDENT,视图中包含信息

系全体学生的基本信息。

createviewIS_STUDENT

as

select*fromstudentwheresdept=,信

息系'

select*fromIS_STUDENT

(2)建立视图CJ_STUDENT,视图中包含所有

成绩不及格的学生的学号,姓名,课程名,

成绩。

createviewCJ_STUDENT

as

selectsc.sno,sname,cname,gradefrom

sc,student,course

wheresc.sno=student.snoand

文档仅供参考

o=course.enoandgrade<60

select*fromCJ_STUDENT

(3)建立视图AVG_CJ,视图包括学生的学

号以及她们的平均成绩,按成绩降序排列。

createviewavg_cj(sno,ag)

as

selectsno,avg(grade)fromscgroupby

sno

select*fromavg_cj

(4)修改视图IS_STUDENT,将年龄均加lo

观察基本表Student中相应的数据是否发生

变化。

updateis_studentsetsage=sage+l

select*fromisstudent

文档仅供参考

(5)在视图IS_STUDENT中插入新的记录,

学号为9531103,姓名为张玉,女,21岁。

insertintois_student

valuesC9531103',‘张玉‘,'女',21,'信息

系')

select*fromis_student

(6)根据视图AVG_CJ,查询平均成绩大于

60的学生的学号。

select*fromavg_cjwhereag>60

2、存储过程

(1)建立存储过程student_Gradel,功能

是查询计算机系学生的成绩,包括学号,姓

名,课程名,成绩,按学号升序排序。

存储过程代码:

createproceduresutdent_gradel

as

文档仅供参考

selectsc.sno,sname,cname,gradefrom

sc,student,course

wheresc.sno=student.snoand

o=course.enoandsdept=,计算机系’

orderbysc.sno

执行存储过程代码:

execsutdent_gradel

(2)建立存储过程student_Grade2,功能

是根据参数提供的系名,查询该系学生的成

绩,包括学号,姓名,课程名,成绩,按学

号升序排序。

存储过程代码:

createproceduresutdent_grade2©sdept

char(20)

as

selectsc.sno,sname,cname,gradefrom

文档仅供参考

sc,student,course

wheresc.sno=student.snoand

o=course.enoandsdept=@sdept

orderbysc.sno

执行存储过程代码:

execsutdent_grade2'信息、系'

(3)建立存储过程student_Grade3,功能是

根据参数提供的学生的姓名和课程名,查询

该学生相应的课程成绩,若存在不为空的成

绩,则返回参数值为成绩值,否则返回-1。

存储过程代码:

createprocedurestudent_grade3©sname

char(10),©cnamevarchar(20),©grade

smallintoutput

as

select@grade=gradefrom

student,sc,coursewhere

文档仅供参考

student.sno=sc.snoand

o=course.enoandsname=@snameand

cname=@cname

if©gradeisnull

set@grade=-l

执行存储过程代码:

declare@gsmallint

execstudent_Grade3'李勇','计算机导论

’,@goutput

print@g

(4)建立存储过程check_Xk,功能是根据

提供的参数学号和课程号,完成选课记录的

插入功能。要求如下:

■首先检查该课程选课人数是否已满(可

自己根据表中数据的情况定义一个限定

值),若满,则返回一个0;若不满,继

续检查该学生是否已经选满3门课程,

若满,则返回-1,否则将选课记录插入

文档仅供参考

到SC表中,并返回lo

存储过程代码:

createprocedurecheck_xk@sno

char(7),@cnochar(10)

if(selectcount(*)fromscwhere

cno=@cno)>=80

return0

else

if(selectcount(*)fromscwhere

sno=@sno)>=3

return-1

else

begin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论