《2022年第章Transact-SQL程序设计例题解答 .pdf》由会员分享,可在线阅读,更多相关《2022年第章Transact-SQL程序设计例题解答 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 6 章Transact-SQL程序设计例题解答例 6-1-1:使用 GO 语句的例子。程序清单如下:-第一个批处理完成打开STUDENT 数据库的操作USE STUDENT GO/*GO是批处理结束标志*/-第二个批处理查询T_STUDENT 表中的数据SELECT*FROM T_STUDENT GO-第三个批处理查询T_STUDENT 表中-姓张的男学生的学号、姓名和性别SELECT S_NUMBER,S_NAME,SEX FROM T_STUDENT WHERE S_NAME like 张%AND SEX=男 GO 注意:GO 语句本身并不是Transact-SQL 语句的组成部分,它
2、只是一个用于表示批处理结束的前端命令。例 6-2-1:在程序中使用注释的例子。程序清单如下:-本程序是一个使用注释的例子。USE STUDENT -打开 STUDENT 数据库GO/*下面的 SQL 语句完成在T_STUDENT 表中查询05541班学生的学号、姓名和出生日期三个字段的记录,要求按姓名的降序排序*/名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 20 页 -SQL Server 2005 实用教程SELECT S_NUMBER,S_NAME,BIRTHDAY FROM T_STUDENT WHERE SUBSTRING(T_STUDENT.S_NUMBER,1,5
3、)=05541 ORDER BY S_NAME DESC GO/*下面的 SQL 语句完成在T_STUDENT 表中查询B04511班性别为男的学生记录*/SELECT*FROM T_STUDENT WHERE SUBSTRING(T_STUDENT.S_NUMBER,1,6)=B04511 AND SEX=男 GO-下面的 SQL 语句完成在T_COURSE表中-插入一条新的记录INSERT INTO T_COURSE/*此表共有四个字段:C_NUMBER,C_NAME,HOURS,CREDIT*/(C_NUMBER,C_NAME,HOURS,CREDIT)VALUES(20050418,P
4、ascal程序设计,72,3)GO-修改上面插入的记录UPDATE T_COURSE SET HOURS=64,Credit=2.5 Where C_NUMBER=20050418 例 6-3-1:创建了一个变量CurrentDateTime,然后将 GETDATE()函数的值放在变量中,最后输出 CurrentDateTime变量的值。程序清单如下:-声明变量 CurrentDateTime DECLARE CurrentDateTime char(30)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 20 页 -第 6 章Transact-SQL 程序设计-给变量 Curre
5、ntDateTime赋值SELECT CurrentDateTime=GETDATE()-显示变量 CurrentDateTime的值SELECT CurrentDateTime AS 当前的日期和时间 GO 注意:变量只在定义它的批处理中有效,因此,在上例中的程序中间不能写入GO 语句。例 6-3-2:查询 T_STUDENT表,将返回的记录数赋给变量RowsReturn。程序清单如下:-打开 STUDENT 数据库USE STUDENT GO-声明变量DECLARE RowsReturn int-给变量赋值SET RowsReturn=(SELECT COUNT(*)FROM T_STUD
6、ENT)-显示变量的值SELECT RowsReturn AS SELECT 返回的记录数 GO 例 6-3-3:在 SELECT 语句中使用由SET 赋值的变量。程序清单如下:-打开 STUDENT 数据库USE STUDENT GO-声明变量DECLARE StuSex char(2)-给变量赋值SET StuSex=女-根据变量 StuSex 的值进行查询SELECT S_NUMBER,S_NAME,SEX,BIRTHDAY FROM T_STUDENT 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 20 页 -SQL Server 2005 实用教程WHERE SEX=
7、StuSex GO 例 6-3-4:在 T_SCORE表中,求05541 班学生高等数学课程的最高分和最低分的学生信息,包括学号、姓名、课程名、成绩四个字段。程序清单如下:-打开 STUDENT 数据库USE STUDENT GO-声明变量DECLARE MaxScore real,MinScore real-给变量赋值SELECT MaxScore=MAX(SCORE),MinScore=MIN(SCORE)FROM T_SCORE,T_COURSE WHERE T_SCORE.C_NUMBER=T_COURSE.C_NUMBER AND SUBSTRING(T_SCORE.S_NUMBER
8、,1,5)=05541 AND T_COURSE.C_NAME=高等数学 -根据变量 MaxScore 和MinScore的值进行查询,-查询学生的学号、姓名、课程名称、考试分数SELECT T_SCORE.S_NUMBER,S_NAME,C_NAME,SCORE FROM T_STUDENT,T_COURSE,T_SCORE WHERE T_STUDENT.S_NUMBER=T_SCORE.S_NUMBER AND T_SCORE.C_NUMBER=T_COURSE.C_NUMBER AND(SCORE=MaxScore OR SCORE=MinScore )GO 名师资料总结-精品资料欢迎
9、下载-名师精心整理-第 4 页,共 20 页 -第 6 章Transact-SQL 程序设计例 6-4-1:计算表达式的值,并将结果赋给变量ExpResult。程序清单如下:-定义变量DECLARE ExpResult numeric-给变量赋值SET ExpResult=67%31-显示变量的值SELECT ExpResult AS 表达式计算结果 例 6-4-2:查询 05541 班的学生信息,要求列出的字段为:班级、本班内的学号、姓名、性别、出生日期、政治面貌。程序清单如下:-打开 STUDENT 数据库USE STUDENT GO-查询 05541班的学生信息SELECT 班级=SUB
10、STRING(S_NUMBER,1,5),本班内的学号=SUBSTRING(S_NUMBER,6,7),姓名=S_NAME,性别=SEX,出生日期=BIRTHDAY,政治面貌=POLITY FROM T_STUDENT WHERE SUBSTRING(S_NUMBER,1,5)=05541 GO 例 6-4-3:使用位运算符计算表达式的值。程序清单如下:-声明 4 个变量DECLARE ExpResult1 int,ExpResult2 int,ExpResult3 int 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 20 页 -SQL Server 2005 实用教程-给变
11、量赋值SELECT ExpResult1=20&12,ExpResult2=20|12,ExpResult3=20 12-输出变量的值SELECT ExpResult1 AS 位与运算结果,ExpResult2 AS 位或运算结果,ExpResult3 AS 位异或运算结果 GO 例 6-4-4:使用比较运算符计算表达式的值。程序清单如下:-定义两个变量DECLARE Exp1 integer,Exp2 integer-给变量赋值SET Exp1=30 SET Exp2=50-根据两个变量的值输出结果IF Exp1Exp2 PRINT 第 1 个变量的值大于第2 个变量的值。ELSE IF E
12、xp1=Exp2 PRINT 第 1 个变量的值等于第2 个变量的值。ELSE PRINT 第 1 个变量的值小于第2 个变量的值。GO 例 6-4-5:使用比较运算符计算表达式的值。程序清单如下:-定义两个变量DECLARE Exp1 integer,Exp2 integer 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 20 页 -第 6 章Transact-SQL 程序设计-给变量赋值SET Exp1=30 SET Exp2=50-根据两个变量的值输出结果-与运算结果IF Exp1Exp2 AND Exp1Exp2 AND Exp1Exp2 AND Exp1Exp2 OR
13、 Exp1Exp2 OR Exp1Exp2 OR Exp175 BEGIN PRINT 05541班高等数学的平均考试成绩比较理想!PRINT SELECT AVG(SCORE)AS 平均考试成绩 FROM T_SCORE WHERE LEFT(S_NUMBER,5)=05541 AND C_NUMBER=10010218 END ELSE BEGIN PRINT 05541班高等数学的平均考试成绩不太理想!PRINT SELECT AVG(SCORE)AS 平均考试成绩 FROM T_SCORE WHERE LEFT(S_NUMBER,5)=05541 AND C_NUMBER=100102
14、18 END 例 6-6-2:查询 05541 班学生的考试情况,并使用CASE 语句将课程号替换为课程名进行显示。程序清单如下:USE STUDENT GO SELECT S_NUMBER AS 学号,名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 20 页 -第 6 章Transact-SQL 程序设计课程名称=CASE C_NUMBER WHEN 10010218 THEN 高等数学 WHEN 40051060 THEN 关系型数据库原理 END ,SCORE AS 考试分数FROM T_SCORE WHERE LEFT(S_NUMBER,5)=05541 ORDER B
15、Y S_NUMBER 例 6-6-3:查询 05541 班学生的考试情况,并根据考试分数输出考试等级,当分数大于等于 90 分,输出“优”,当分数在80 至 90 之间,输出“良”,当分数在70 至 80 之间,输出“中”,当分数在60 至 70 之间,输出“及格”,当分数在60 分以下,输出“不及格”。程序清单如下:USE STUDENT SELECT S_NUMBER AS 学号,课程名称=CASE C_NUMBER WHEN 10010218 THEN 高等数学 WHEN 40051060 THEN 关系型数据库原理 END ,考试等级=CASE WHEN SCORE=90 THEN 优
16、 WHEN SCORE=80 THEN 良 WHEN SCORE=70 THEN 中 WHEN SCORE=60 THEN 及格 ELSE 不及格 END FROM T_SCORE WHERE LEFT(S_NUMBER,5)=05541 ORDER BY S_NUMBER 名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 20 页 -SQL Server 2005 实用教程例 6-6-4:使用 WHILE CONTINUE BREAK 语句求 5 的阶乘。程序清单如下:DECLARE Result integer,i integer SELECT Result=1,i=5 WH
17、ILE i0 BEGIN SET Result=Result*i SET i=i-1 IF i1 CONTINUE ELSE BEGIN PRINT 5的阶乘为:PRINT Result BREAK END END 例 6-6-5:利用 GOTO 语句求 5 的阶乘。程序清单如下:DECLARE Result integer,i integer SELECT Result=1,i=5 Label1:SET Result=Result*i SET i=i-1 IF i1 GOTO Label1 ELSE BEGIN 名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 20 页 -第
18、6 章Transact-SQL 程序设计 PRINT 5的阶乘为:PRINT Result END 例 6-6-6:在程序中使用WAITFOR 语句,使WAITFOR后面的语句等待10 秒钟后再继续执行。程序清单如下:USE STUDENT GO-查询表中数据SELECT*FROM T_STUDENT GO-设置等待时间为10 秒钟WAITFOR DELAY 0:0:10-10秒后继续下面的语句,查询T_COURSE表中的数据SELECT*FROM T_COURSE GO 例 6-6-7:编写一个自定义函数,功能是查询给定姓名的学生,如果没有找到则返回0,否则返回满足此条件的学生人数,主程序调
19、用这个函数,查询姓名为“王华”的学生,并根据函数的返回值进行输出。程序清单如下:USE STUDENT GO-定义一个根据姓名查询学生信息的函数CREATE FUNCTION fun_FindStudent(stuName AS char(10)RETURNS int BEGIN DECLARE stuCount int SELECT stuCount=(SELECT COUNT(*)FROM T_STUDENT WHERE S_NAME=stuName)RETURN stuCount 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 20 页 -SQL Server 2005 实用教程END GO-调用函数,输出结果DECLARE stuName char(10)DECLARE CountNum int SET stuName=王华 SET CountNum=dbo.fun_FindStudent(stuName)IF CountNum=0 PRINT 未找到姓名为+RTRIM(stuName)+的学生!ELSE PRINT 找到+CAST(CountNum AS char(2)+个姓名为 +RTRIM(stuName)+的学生。名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 20 页 -