第06章Transact-SQL程序设计例题解答_第1页
第06章Transact-SQL程序设计例题解答_第2页
第06章Transact-SQL程序设计例题解答_第3页
第06章Transact-SQL程序设计例题解答_第4页
第06章Transact-SQL程序设计例题解答_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、第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语句本身并不是Transact-SQL语句的组成部分,它只是一个用于表示批处

2、理结束的前端命令。例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_STUDENT表中查询B04511班性别为男的学生记录

3、*/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, Credit=2.5Where C_NUMBER=例

4、6-3-1:创建了一个变量CurrentDateTime,然后将GETDATE()函数的值放在变量中,最后输出CurrentDateTime变量的值。程序清单如下:-声明变量CurrentDateTimeDECLARE CurrentDateTime char(30)-给变量CurrentDateTime赋值SELECT CurrentDateTime = GETDATE()-显示变量CurrentDateTime的值SELECT CurrentDateTime AS 当前的日期和时间GO注意:变量只在定义它的批处理中有效,因此,在上例中的程序中间不能写入GO语句。例6-3-2:查询T_STU

5、DENT表,将返回的记录数赋给变量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)-给变量赋值SET StuSex =女-根据变量S

6、tuSex的值进行查询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)FROM T_SCORE,T_COURSE WH

7、ERE 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_SCORE.C_NUMBER=T_COURSE.C

8、_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班的学生信息SELECT 班级=SUBSTRING(S

9、_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=20 | 12, ExpResult3=20 12

10、-输出变量的值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 PRINT 第1个变量的值小于第2个变量的值。GO例6

11、-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_SCORE WHERE LEFT(S_NUMBE

12、R,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 关系型数据

13、库原理 END , SCORE AS 考试分数FROM T_SCOREWHERE LEFT(S_NUMBER,5)=05541ORDER BY S_NUMBER例6-6-3:查询05541班学生的考试情况,并根据考试分数输出考试等级,当分数大于等于90分,输出“优”,当分数在80至90之间,输出“良”,当分数在70至80之间,输出“中”,当分数在60至70之间,输出“及格”,当分数在60分以下,输出“不及格”。程序清单如下:USE STUDENTSELECT S_NUMBER AS 学号, 课程名称=CASE C_NUMBER WHEN THEN 高等数学 WHEN THEN 关系型数据库原理

14、 END , 考试等级=CASE WHEN SCORE=90 THEN 优 WHEN SCORE=80 THEN 良 WHEN SCORE=70 THEN 中 WHEN SCORE=60 THEN 及格 ELSE 不及格 ENDFROM T_SCOREWHERE LEFT(S_NUMBER,5)=05541ORDER BY S_NUMBER例6-6-4:使用WHILECONTINUEBREAK语句求5的阶乘。程序清单如下:DECLARE Result integer, i integerSELECT Result=1, i=5WHILE i0 BEGIN SET Result=Result*i

15、 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 integerSELECT Result=1, i=5Label1: SET Result=Result*i SET i=i-1 IF i1 GOTO Label1 ELSE BEGIN PRINT 5的阶乘为: PRINT Result END例6-6-6:在程序中使用WAITFOR语句,使WAITFOR后面的语句等待10秒钟后再继续执

16、行。程序清单如下:USE STUDENTGO-查询表中数据SELECT * FROM T_STUDENTGO-设置等待时间为10秒钟WAITFOR DELAY 0:0:10-10秒后继续下面的语句,查询T_COURSE表中的数据SELECT * FROM T_COURSEGO例6-6-7:编写一个自定义函数,功能是查询给定姓名的学生,如果没有找到则返回0,否则返回满足此条件的学生人数,主程序调用这个函数,查询姓名为“王华”的学生,并根据函数的返回值进行输出。程序清单如下:USE STUDENTGO-定义一个根据姓名查询学生信息的函数CREATE FUNCTION fun_FindStudent(stuName AS char(10)RETURNS intBEGIN DECLARE stuCount int SELECT stuCount=(SELECT COUNT(*) FROM T_STUDENT WH

温馨提示

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

评论

0/150

提交评论