信息系统与数据库技术全书实验参考答案(2)

2019-04-13 23:13

15)查询教师工号(TeacherCode)为“01010109”的教师是否已预订教材,若已预订则显示所订教材的数量;否则显示:“该教师没有预订教材”。

DECLARE @cn smallint,@text varchar(100)

SELECT @cn=(SELECT StuBookNum+TeaBookNum FROM T_BookOrder

WHERE TeacherCode='01010109') IF @cn>0

SET @text='该教师预订教材数量'+str(@cn) ELSE

SET @text='该教师没有预订教材' SELECT @text

4.使用联接关键字(JOIN――ON)建立查询 1)查询所有教师姓名(TeacherName)及所属学院名称(AcadName)。(提示:本题使用INNER JOIN完成查询)

SELECT TeacherName, AcadName

FROM T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode= T_Academy.AcadCode ORDER BY T_Teacher.AcadCode

2)查询所有学院名称(AcadName)及每个学院的教师姓名(TeacherName)。(提示:本题使用LEFT OUTER JOIN完成查询)

SELECT AcadName,TeacherName

FROM T_Academy LEFT OUTER JOIN T_Teacher ON T_Academy.AcadCode=T_Teacher.AcadCode

3)查询所有教师姓名(TeacherName)及所订教材代号(BookCode)。(提示:本题使用RIGHT OUTER JOIN完成查询)

SELECT TeacherName,BookCode

FROM T_BookOrder RIGHT OUTER JOIN T_Teacher ON T_BookOrder.TeacherCode=T_Teacher.TeacherCode

4)查询所有已订教材的教师姓名(TeacherName)、教材代号(BookCode)及教材名称(BookName)。(提示:本题使用嵌套的INNER JOIN完成查询)

SELECT TeacherName,T_BookOrder.BookCode,BookName From T_Teacher INNER JOIN

(T_BookOrder INNER JOIN T_BookInfo

ON T_BookOrder.BookCode=T_BookInfo.BookCode) ON T_Teacher.TeacherCode=T_BookOrder.TeacherCode

5.使用SELECT语句复制数据表

1)将T_BookOrder表中的教师编号(TeacherCode)、教材代号(BookCode)、学生用书量(StuBookNum)、教师用书量(TeaBookNum)字段及对应的书名(BookName)复制到新表NewTable1中。

SELECT TeacherCode,T_BookOrder.BookCode,BookName,StuBookNum,TeaBookNum INTO NewTable1

FROM T_BookInfo ,T_BookOrder

WHERE T_BookInfo.BookCode=T_BookOrder.BookCode 或:

SELECT BookName,T_BookOrder.BookCode,StuBookNum,TeaBookNum INTO NewTable1

FROM T_BookOrder INNER JOIN T_BookInfo ON T_BookOrder.BookCode=T_BookInfo.BookCode

2)将T_Teacher表中的教师姓名(TeacherName)、性别(Sex)字段及每个教师所属的学院名称(AcadName)复制到新表NewTable2中。

SELECT TeacherName, Sex, AcadName INTO NewTable2

FROM T_Teacher ,T_Academy

WHERE T_Teacher.AcadCode= T_Academy .AcadCode 或:

SELECT TeacherName, Sex, AcadName INTO NewTable2

FROM T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode= T_Academy.AcadCode

6.使用DELECT语句练习删除操作

1)删除NewTable1表中学生用书量(StuBookNum)和教师用书量(TeaBookNum)之和低于60的记录。

DELETE FROM NewTable1 WHERE StuBookNum+TeaBookNum<60

2)删除NewTable2表中姓“王”和姓“杨”的记录。

DELETE FROM NewTable2

WHERE LEFT(TeacherName,1)='王'OR LEFT(TeacherName,1)='杨' 或:

DELETE FROM NewTable2

WHERE TeacherName LIKE '王%' OR TeacherName LIKE '杨%'

3)删除NewTable1中“体育部”教师的订书记录。

DELETE FROM NewTable1

WHERE TeacherCode IN (SELECT T_Teacher.TeacherCode From T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode=T_Academy.AcadCode Where AcadName='体育部' )

7.使用INSERT语句练习插入操作

1)在NewTable2表中添加一条记录,姓名:吴清、性别:女、学院名称:计算机科学与技

术学院。

INSERT INTO NewTable2(TeacherName,Sex,AcadName) VALUES('吴清','女','计算机科学与技术学院')

2)将T_Teacher表中姓“王”和姓“杨”的记录添加到NewTable2表中。

INSERT INTO NewTable2

SELECT TeacherName,Sex,AcadName

FROM T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode=T_Academy.AcadCode

WHERE LEFT(TeacherName,1)='王' OR LEFT(TeacherName,1)='杨'

8.使用UPDATE语句修改数据

1)将2000年以前(不包括2000年)入校的、职称为助教的教师职称(TitleCode)往上提一级。

UPDATE T_Teacher SET Title='讲师'

WHERE Title='助教' AND YEAR(EnterDate)<2000

2)修改订书数量。要求:所有学院名称中包含汉字“工”的学院所属的教师所订的学生定书量减少3本、教师定书量增加3本。

UPDATE T_BookOrder

SET StuBookNum=StuBookNum-3,TeaBookNum=TeaBookNum+3 WHERE TeacherCode IN

(SELECT T_BookOrder.TeacherCode

FROM T_BookOrder,T_Academy,T_Teacher

WHERE T_BookOrder.TeacherCode= T_Teacher.TeacherCode

AND T_Teacher.AcadCode= T_Academy.AcadCode AND AcadName LIKE '%工%' )

3)将订书量超过300本的教材库存量增加500本。

UPDATE T_BookInfo SET StockNum=500

WHERE BookCode IN (SELECT BookCode FROM T_BookOrder )

10.3 实验三 SQL Server的视图、存储过程和触发器

一.实验目的

本实验主要了解SQL Server视图、存储过程和触发器的基本概念和使用方法。通过本实验,读者将学会在企业管理器中创建、修改、执行和删除存储过程的操作以及在查询分析器中执行的T-SQL语句;掌握触发器的创建、修改和删除的操作方法和T-SQL语句。掌握视图的创建、修改和删除的操作方法和T-SQL语句。

二.实验环境

? Microsoft SQL Server 2000 企业管理器和Microsoft SQL Server 2000 查询分析器 ? Book数据库

三.实验内容

1.创建存储过程proc_book1,查询指定学院的教师预订教材的情况。要求显示教材名称(T_BookInfo.BookName)、教师姓名(T_Teacher.TeacherName)和教材数量(T_BookOrder.StuBookNum+T_BookOrder.TeaBookNum)。 (1)查询条件为:学院代码

CREATE PROC proc_book1 @acode char(6) AS

SELECT BookName, TeacherName,StuBookNum+TeaBookNum AS 数量 FROM T_Teacher INNER JOIN (T_BookOrder INNER JOIN T_BookInfo ON T_BookOrder.BookCode= T_BookInfo.BookCode) ON T_Teacher.TeacherCode=T_BookOrder.TeacherCode WHERE T_Teacher.AcadCode=@acode

--执行存储过程proc_book1,查询学院代号为'02'的教师预订教材的信息。 EXEC proc_book1 '02' 或:

EXEC proc_book1 @scode='02'

(2)查询条件为:学院名称

CREATE PROC proc_book1_2 @aname varchar(50) AS

SELECT BookName, TeacherName,StuBookNum+TeaBookNum AS 数量 FROM T_Academy,T_Teacher,T_BookOrder,T_BookInfo WHERE T_Academy.AcadCode=T_Teacher.AcadCode

AND T_Teacher.TeacherCode=T_BookOrder.TeacherCode AND T_BookInfo.BookCode=T_BookOrder.BookCode AND T_Academy.AcadName=@aname

--执行存储过程proc_book1_2,查询学院名称为'人文学院'的教师预订教材的信息。 EXEC proc_book1_2 '人文学院' 或

EXEC proc_book1_2 @scode='人文学院'

2.创建存储过程proc_book2,查询指定教材的预订数量。

统计条件为:教材代码

CREATE PROCEDURE proc_book2 @tcode char(20) AS

SELECT SUM(StuBookNum)+SUM(TeaBookNum) FROM T_BookOrder GROUP BY BookCode HAVING BookCode=@tcode

--执行存储过程proc_book2,统计教材代号为'010004'的预订信息。 exec proc_book2 '100001'

3.创建添加教材信息的存储过程proc_book3。

CREATE PROCEDURE proc_book3 (@bookcode char(6),@bookname varchar(40), @publishercode varchar(2),@author varchar(40), @publisherdate datetime,@price money, @isbncode char(20),@stocknum smallint, @booksort char(20)) AS BEGIN

INSERT INTO T_BookInfo

VALUES(@bookcode,@bookname,@publishercode,@author, @publisherdate,@price, @isbncode,@stocknum,@booksort) END

--执行存储过程proc_book3

EXEC proc_book3 '500001','信息系统管理技术','31','谭浩强','2007-05-11',30,'760211008',30,'计算机'

4.创建存储过程proc_book4,查询指定教材名称和出版社名称的教材所对应的教材代号和库存。

CREATE PROCEDURE proc_book4

@bookname varchar(40),@publisher varchar(40),

@bookcode char(6) OUTPUT,@stocknum smallint OUTPUT AS

SELECT @bookcode=BookCode,@stocknum=StockNum FROM T_BookInfo INNER JOIN T_Publisher

ON T_Publisher.PublisherCode=T_BookInfo.PublisherCode WHERE T_Publisher.Publisher=@publisher AND BookName=@bookname

--执行存储过程proc_book4

DECLARE @bookcode char(6),@stocknum smallint

EXEC proc_book4 'C语言程序设计','电子工业出版社',@bookcode OUTPUT,@stocknum OUTPUT PRINT '该教材的代号'+CAST(@bookcode AS char(6)) PRINT '该教材的库存'+STR(@stocknum)

5.创建触发器tri_book1,在对T_Teacher表进行插入、修改和删除记录时,都会自动显示表中的内容。

CREATE TRIGGER tri_book1 ON T_Teacher

FOR INSERT,UPDATE,DELETE AS


信息系统与数据库技术全书实验参考答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:6小学语文教师素养大赛知识问答题目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: