您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第06章Transact-SQL程序设计例题解答
第6章Transact-SQL程序设计——例题解答例6-1-1:使用GO语句的例子。程序清单如下:--第一个批处理完成打开STUDENT数据库的操作USESTUDENTGO/*GO是批处理结束标志*/--第二个批处理查询T_STUDENT表中的数据SELECT*FROMT_STUDENTGO--第三个批处理查询T_STUDENT表中--姓张的男学生的学号、姓名和性别SELECTS_NUMBER,S_NAME,SEXFROMT_STUDENTWHERES_NAMElike'张%'ANDSEX='男'GO注意:GO语句本身并不是Transact-SQL语句的组成部分,它只是一个用于表示批处理结束的前端命令。例6-2-1:在程序中使用注释的例子。程序清单如下:--本程序是一个使用注释的例子。USESTUDENT--打开STUDENT数据库GO/*下面的SQL语句完成在T_STUDENT表中查询05541班学生的学号、姓名和出生日期三个字段的记录,要求按姓名的降序排序*/SQLServer2005实用教程SELECTS_NUMBER,S_NAME,BIRTHDAYFROMT_STUDENTWHERESUBSTRING(T_STUDENT.S_NUMBER,1,5)='05541'ORDERBYS_NAMEDESCGO/*下面的SQL语句完成在T_STUDENT表中查询B04511班性别为男的学生记录*/SELECT*FROMT_STUDENTWHERESUBSTRING(T_STUDENT.S_NUMBER,1,6)='B04511'ANDSEX='男'GO--下面的SQL语句完成在T_COURSE表中--插入一条新的记录INSERTINTOT_COURSE/*此表共有四个字段:C_NUMBER,C_NAME,HOURS,CREDIT*/(C_NUMBER,C_NAME,HOURS,CREDIT)VALUES('20050418','Pascal程序设计',72,3)GO--修改上面插入的记录UPDATET_COURSESETHOURS=64,Credit=2.5WhereC_NUMBER='20050418'例6-3-1:创建了一个变量@CurrentDateTime,然后将GETDATE()函数的值放在变量中,最后输出@CurrentDateTime变量的值。程序清单如下:--声明变量@CurrentDateTimeDECLARE@CurrentDateTimechar(30)第6章Transact-SQL程序设计--给变量@CurrentDateTime赋值SELECT@CurrentDateTime=GETDATE()--显示变量@CurrentDateTime的值SELECT@CurrentDateTimeAS'当前的日期和时间'GO注意:变量只在定义它的批处理中有效,因此,在上例中的程序中间不能写入GO语句。例6-3-2:查询T_STUDENT表,将返回的记录数赋给变量@RowsReturn。程序清单如下:--打开STUDENT数据库USESTUDENTGO--声明变量DECLARE@RowsReturnint--给变量赋值SET@RowsReturn=(SELECTCOUNT(*)FROMT_STUDENT)--显示变量的值SELECT@RowsReturnAS'SELECT返回的记录数'GO例6-3-3:在SELECT语句中使用由SET赋值的变量。程序清单如下:--打开STUDENT数据库USESTUDENTGO--声明变量DECLARE@StuSexchar(2)--给变量赋值SET@StuSex='女'--根据变量@StuSex的值进行查询SELECTS_NUMBER,S_NAME,SEX,BIRTHDAYFROMT_STUDENTSQLServer2005实用教程WHERESEX=@StuSexGO例6-3-4:在T_SCORE表中,求05541班学生高等数学课程的最高分和最低分的学生信息,包括学号、姓名、课程名、成绩四个字段。程序清单如下:--打开STUDENT数据库USESTUDENTGO--声明变量DECLARE@MaxScorereal,@MinScorereal--给变量赋值SELECT@MaxScore=MAX(SCORE),@MinScore=MIN(SCORE)FROMT_SCORE,T_COURSEWHERET_SCORE.C_NUMBER=T_COURSE.C_NUMBERANDSUBSTRING(T_SCORE.S_NUMBER,1,5)='05541'ANDT_COURSE.C_NAME='高等数学'--根据变量@MaxScore和@MinScore的值进行查询,--查询学生的学号、姓名、课程名称、考试分数SELECTT_SCORE.S_NUMBER,S_NAME,C_NAME,SCOREFROMT_STUDENT,T_COURSE,T_SCOREWHERET_STUDENT.S_NUMBER=T_SCORE.S_NUMBERANDT_SCORE.C_NUMBER=T_COURSE.C_NUMBERAND(SCORE=@MaxScoreORSCORE=@MinScore)GO第6章Transact-SQL程序设计例6-4-1:计算表达式的值,并将结果赋给变量@ExpResult。程序清单如下:--定义变量DECLARE@ExpResultnumeric--给变量赋值SET@ExpResult=67%31--显示变量的值SELECT@ExpResultAS'表达式计算结果'例6-4-2:查询05541班的学生信息,要求列出的字段为:班级、本班内的学号、姓名、性别、出生日期、政治面貌。程序清单如下:--打开STUDENT数据库USESTUDENTGO--查询05541班的学生信息SELECT班级=SUBSTRING(S_NUMBER,1,5),本班内的学号=SUBSTRING(S_NUMBER,6,7),姓名=S_NAME,性别=SEX,出生日期=BIRTHDAY,政治面貌=POLITYFROMT_STUDENTWHERESUBSTRING(S_NUMBER,1,5)='05541'GO例6-4-3:使用位运算符计算表达式的值。程序清单如下:--声明4个变量DECLARE@ExpResult1int,@ExpResult2int,@ExpResult3intSQLServer2005实用教程--给变量赋值SELECT@ExpResult1=20&12,@ExpResult2=20|12,@ExpResult3=20^12--输出变量的值SELECT@ExpResult1AS'位与运算结果',@ExpResult2AS'位或运算结果',@ExpResult3AS'位异或运算结果'GO例6-4-4:使用比较运算符计算表达式的值。程序清单如下:--定义两个变量DECLARE@Exp1integer,@Exp2integer--给变量赋值SET@Exp1=30SET@Exp2=50--根据两个变量的值输出结果IF@Exp1@Exp2PRINT'第1个变量的值大于第2个变量的值。'ELSEIF@Exp1=@Exp2PRINT'第1个变量的值等于第2个变量的值。'ELSEPRINT'第1个变量的值小于第2个变量的值。'GO例6-4-5:使用比较运算符计算表达式的值。程序清单如下:--定义两个变量DECLARE@Exp1integer,@Exp2integer第6章Transact-SQL程序设计--给变量赋值SET@Exp1=30SET@Exp2=50--根据两个变量的值输出结果--与运算结果IF@Exp1@Exp2AND@Exp1@Exp2PRINT'@Exp1@Exp2AND@Exp1@Exp2的结果值为真。'ELSEPRINT'@Exp1@Exp2AND@Exp1@Exp2的结果值为假。'--或运算结果IF@Exp1@Exp2OR@Exp1@Exp2PRINT'@Exp1@Exp2OR@Exp1@Exp2的结果值为真。'ELSEPRINT'@Exp1@Exp2OR@Exp1@Exp2的结果值为假。'GO例6-4-6:使用字符串连接运算符计算表达式的值。程序清单如下:--定义变量DECLARE@ExpResultchar(60)--对变量赋值SELECT@ExpResult='河北省廊坊市'+'北华航天工业学院'+'计算机软件教研室'--输出变量的值SELECT@ExpResultAS'字符串的连接结果'GO例6-4-7:使用括号改变表达式的计算顺序。程序清单如下:--定义变量DECLARE@ExpResultint--给变量赋值SELECT@ExpResult=100+(20-5)*2/3--输出变量的值SQLServer2005实用教程SELECT@ExpResultAS'计算结果'GO例6-5-1:从STUDENT数据库中返回T_STUDENT表的第4列的名称。程序清单如下:--打开STUDENT数据库USESTUDENTGO--使用系统函数求第4列的名称SELECTCOL_NAME(OBJECT_ID('T_STUDENT'),4)AS'T_STUDENT表中第4列的名称'例6-5-2:从STUDENT数据库中返回T_STUDENT表的S_NUMBER列的长度。程序清单如下:--打开STUDENT数据库USESTUDENTGO--使用系统函数求S_NUMBER列的长度SELECTCOL_LENGTH('T_STUDENT','S_NUMBER')AS'T_STUDENT表中的S_NUMBER列的长度'例6-5-3:检查sysdatabases中的每一个数据库,使用数据库标识号来确定数据库名称。程序清单如下:USEmasterSELECTdbid,DB_NAME(dbid)ASDB_NAMEFROMsysdatabasesORDERBYdbid例6-5-4:在T_STUDENT表中先插入三条新记录,其中的POLITY字段的值为NULL,要求对记录进行查询时,对应的NULL值在显示时显示“群众”。程序清单如下:第6章Transact-SQL程序设计--打开数据库STUDENTUSESTUDENTGO--向T_STUDENT表中插入三条记录INSERTINTOT_STUDENT(S_NUMBER,S_NAME,SEX)VALUES('Y0452201','王志鹏','男')INSERTINTOT_STUDENT(S_NUMBER,S_NAME,SEX)VALUES('Y0452202','周小娟','女')INSERTINTOT_STUDENT(S_NUMBER,S_NAME,SEX)VALUES('Y0452203','李磊','男')--查询刚插入的记录信息SELECTS_NUMBERAS学号,S_NAMEAS姓名,SEXAS性别,POLITYAS政治面貌FROMT_STUDENTWHERESUBSTRING(S_NUMBER,1,6)='Y04522'--将政治面貌字段的值为空的记录用'群众'代替NULL显示SELECTS_NUMBERAS学号,S_NAMEAS姓名,SEXAS性别,(ISNULL(POLITY,'群众'))AS政治面貌FROMT_STUDENTWHERESUBSTRING(S_NUMBER,1,6)='Y04522'例6-5-5:利用@@ERROR返回程序的错误代码。程序清单如下:--打开STUDENT数据库SQLServer2005实用教程USESTUDENTGO--对T_COURSE表操作,在T_COURSE表中--插入一条新的记录INSERTINTOT_COURSE(C_NUMBER,C_NAME,HOURS,CREDIT)VALUES('40050407','C语言程序设计',72,3)--输出此时错误代码的值SELECT@
本文标题:第06章Transact-SQL程序设计例题解答
链接地址:https://www.777doc.com/doc-2241156 .html