1、第06章 TransactSQL程序设计例题解答第6章 Transact-SQL程序设计例题解答例6-1-1:使用GO语句的例子。程序清单如下:-第一个批处理完成打开STUDENT数据库的操作USE STUDENTGO/* GO是批处理结束标志*/-第二个批处理查询T_STUDENT表中的数据SELECT * FROM T_STUDENTGO-第三个批处理查询T_STUDENT表中-姓张的男学生的学号、姓名和性别SELECT S_NUMBER, S_NAME, SEXFROM T_STUDENTWHERE S_NAME like 张%AND SEX=男GO注意:GO语句本身并不是Transac
2、t-SQL语句的组成部分,它只是一个用于表示批处理结束的前端命令。例6-2-1:在程序中使用注释的例子。程序清单如下:-本程序是一个使用注释的例子。USE STUDENT -打开STUDENT数据库GO/* 下面的SQL语句完成在T_STUDENT表中查询05541班学生的学号、姓名和出生日期三个字段的记录,要求按姓名的降序排序*/SELECT S_NUMBER,S_NAME,BIRTHDAY FROM T_STUDENTWHERE SUBSTRING(T_STUDENT.S_NUMBER,1,5)=05541ORDER BY S_NAME DESC GO/* 下面的SQL语句完成在T_STU
3、DENT表中查询B04511班性别为男的学生记录*/SELECT * FROM T_STUDENTWHERE SUBSTRING(T_STUDENT.S_NUMBER,1,6)=B04511AND SEX=男GO-下面的SQL语句完成在T_COURSE表中-插入一条新的记录INSERT INTO T_COURSE /* 此表共有四个字段:C_NUMBER,C_NAME,HOURS,CREDIT */(C_NUMBER,C_NAME,HOURS,CREDIT) VALUES(,Pascal程序设计,72,3)GO- 修改上面插入的记录UPDATE T_COURSESET HOURS=64, Cr
4、edit=2.5Where C_NUMBER=例6-3-1:创建了一个变量CurrentDateTime,然后将GETDATE()函数的值放在变量中,最后输出CurrentDateTime变量的值。程序清单如下:-声明变量CurrentDateTimeDECLARE CurrentDateTime char(30)-给变量CurrentDateTime赋值SELECT CurrentDateTime = GETDATE()-显示变量CurrentDateTime的值SELECT CurrentDateTime AS 当前的日期和时间GO注意:变量只在定义它的批处理中有效,因此,在上例中的程序中
5、间不能写入GO语句。例6-3-2:查询T_STUDENT表,将返回的记录数赋给变量RowsReturn。程序清单如下:-打开STUDENT数据库USE STUDENTGO-声明变量DECLARE RowsReturn int-给变量赋值SET RowsReturn = (SELECT COUNT(*) FROM T_STUDENT)-显示变量的值SELECT RowsReturn AS SELECT 返回的记录数GO例6-3-3:在SELECT语句中使用由SET赋值的变量。程序清单如下:-打开STUDENT数据库USE STUDENTGO-声明变量DECLARE StuSex char(2)-
6、给变量赋值SET StuSex =女-根据变量StuSex的值进行查询SELECT S_NUMBER,S_NAME,SEX,BIRTHDAYFROM T_STUDENTWHERE SEX = StuSexGO例6-3-4:在T_SCORE表中,求05541班学生高等数学课程的最高分和最低分的学生信息,包括学号、姓名、课程名、成绩四个字段。程序清单如下:-打开STUDENT数据库USE STUDENTGO-声明变量DECLARE MaxScore real,MinScore real-给变量赋值SELECT MaxScore = MAX(SCORE), MinScore = MIN(SCORE)
7、FROM T_SCORE,T_COURSE WHERE T_SCORE.C_NUMBER=T_COURSE.C_NUMBERAND SUBSTRING(T_SCORE.S_NUMBER,1,5)=05541 AND T_COURSE.C_NAME=高等数学-根据变量MaxScore和MinScore的值进行查询,-查询学生的学号、姓名、课程名称、考试分数SELECT T_SCORE.S_NUMBER,S_NAME,C_NAME,SCOREFROM T_STUDENT,T_COURSE,T_SCOREWHERE T_STUDENT.S_NUMBER=T_SCORE.S_NUMBERAND T_S
8、CORE.C_NUMBER=T_COURSE.C_NUMBERAND (SCORE=MaxScore ORSCORE=MinScore )GO例6-4-1:计算表达式的值,并将结果赋给变量ExpResult。程序清单如下:-定义变量DECLARE ExpResult numeric-给变量赋值SET ExpResult=67%31-显示变量的值SELECT ExpResult AS 表达式计算结果例6-4-2:查询05541班的学生信息,要求列出的字段为:班级、本班内的学号、姓名、性别、出生日期、政治面貌。程序清单如下:-打开STUDENT数据库USE STUDENTGO-查询05541班的学
9、生信息SELECT 班级=SUBSTRING(S_NUMBER,1,5), 本班内的学号=SUBSTRING(S_NUMBER,6,7), 姓名=S_NAME, 性别=SEX, 出生日期=BIRTHDAY, 政治面貌=POLITYFROM T_STUDENTWHERE SUBSTRING(S_NUMBER,1,5)=05541GO例6-4-3:使用位运算符计算表达式的值。程序清单如下:-声明4个变量DECLARE ExpResult1 int, ExpResult2 int, ExpResult3 int-给变量赋值SELECT ExpResult1=20 & 12, ExpResult2=2
10、0 | 12, ExpResult3=20 12-输出变量的值SELECT ExpResult1 AS 位与运算结果, ExpResult2 AS 位或运算结果, ExpResult3 AS 位异或运算结果GO例6-4-4:使用比较运算符计算表达式的值。程序清单如下:-定义两个变量DECLARE Exp1 integer, Exp2 integer-给变量赋值SET Exp1=30SET Exp2=50-根据两个变量的值输出结果IF Exp1Exp2 PRINT 第1个变量的值大于第2个变量的值。ELSE IF Exp1=Exp2 PRINT 第1个变量的值等于第2个变量的值。ELSE PRI
11、NT 第1个变量的值小于第2个变量的值。GO例6-4-5:使用比较运算符计算表达式的值。程序清单如下:-定义两个变量DECLARE Exp1 integer, Exp2 integer-给变量赋值SET Exp1=30SET Exp2=50-根据两个变量的值输出结果-与运算结果IF Exp1Exp2 AND Exp1Exp2 AND Exp1Exp2 AND Exp1Exp2 OR Exp1Exp2 OR Exp1Exp2 OR Exp175 BEGIN PRINT 05541班高等数学的平均考试成绩比较理想! PRINT SELECT AVG(SCORE) AS 平均考试成绩 FROM T_
12、SCORE WHERE LEFT(S_NUMBER,5)=05541 AND C_NUMBER= ENDELSE BEGIN PRINT 05541班高等数学的平均考试成绩不太理想! PRINT SELECT AVG(SCORE) AS 平均考试成绩 FROM T_SCORE WHERE LEFT(S_NUMBER,5)=05541 AND C_NUMBER= END例6-6-2:查询05541班学生的考试情况,并使用CASE语句将课程号替换为课程名进行显示。程序清单如下:USE STUDENTGOSELECT S_NUMBER AS 学号, 课程名称=CASE C_NUMBER WHEN THEN 高等数学 WHEN THEN 关系型数据库原理 END , SCORE AS 考试分数FROM T_SCOREWHERE LEFT(S_NUMBER,5)=05541
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1