第06章 TransactSQL程序设计例题解答Word格式.docx
- 文档编号:22279079
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:24
- 大小:20.39KB
第06章 TransactSQL程序设计例题解答Word格式.docx
《第06章 TransactSQL程序设计例题解答Word格式.docx》由会员分享,可在线阅读,更多相关《第06章 TransactSQL程序设计例题解答Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
INSERTINTOT_COURSE/*此表共有四个字段:
C_NUMBER,C_NAME,HOURS,CREDIT*/
(C_NUMBER,C_NAME,HOURS,CREDIT)
VALUES
('
20050418'
'
Pascal程序设计'
72,3)
--修改上面插入的记录
UPDATET_COURSE
SETHOURS=64,
Credit=2.5
WhereC_NUMBER='
例6-3-1:
创建了一个变量@CurrentDateTime,然后将GETDATE()函数的值放在变量中,最后输出@CurrentDateTime变量的值。
--声明变量@CurrentDateTime
DECLARE@CurrentDateTimechar(30)
--给变量@CurrentDateTime赋值
SELECT@CurrentDateTime=GETDATE()
--显示变量@CurrentDateTime的值
SELECT@CurrentDateTimeAS'
当前的日期和时间'
变量只在定义它的批处理中有效,因此,在上例中的程序中间不能写入GO语句。
例6-3-2:
查询T_STUDENT表,将返回的记录数赋给变量@RowsReturn。
--打开STUDENT数据库
--声明变量
DECLARE@RowsReturnint
--给变量赋值
SET@RowsReturn=(SELECTCOUNT(*)FROMT_STUDENT)
--显示变量的值
SELECT@RowsReturnAS'
SELECT返回的记录数'
例6-3-3:
在SELECT语句中使用由SET赋值的变量。
DECLARE@StuSexchar
(2)
SET@StuSex='
女'
--根据变量@StuSex的值进行查询
SELECTS_NUMBER,S_NAME,SEX,BIRTHDAY
WHERESEX=@StuSex
例6-3-4:
在T_SCORE表中,求05541班学生高等数学课程的最高分和最低分的学生信息,包括学号、姓名、课程名、成绩四个字段。
DECLARE@MaxScorereal,@MinScorereal
SELECT@MaxScore=MAX(SCORE),
@MinScore=MIN(SCORE)
FROMT_SCORE,T_COURSE
WHERET_SCORE.C_NUMBER=T_COURSE.C_NUMBER
ANDSUBSTRING(T_SCORE.S_NUMBER,1,5)='
ANDT_COURSE.C_NAME='
高等数学'
--根据变量@MaxScore和@MinScore的值进行查询,
--查询学生的学号、姓名、课程名称、考试分数
SELECTT_SCORE.S_NUMBER,S_NAME,C_NAME,SCORE
FROMT_STUDENT,T_COURSE,T_SCORE
WHERET_STUDENT.S_NUMBER=T_SCORE.S_NUMBER
ANDT_SCORE.C_NUMBER=T_COURSE.C_NUMBER
AND(
SCORE=@MaxScore
OR
SCORE=@MinScore
)
例6-4-1:
计算表达式的值,并将结果赋给变量@ExpResult。
--定义变量
DECLARE@ExpResultnumeric
SET@ExpResult=67%31
SELECT@ExpResultAS'
表达式计算结果'
例6-4-2:
查询05541班的学生信息,要求列出的字段为:
班级、本班内的学号、姓名、性别、出生日期、政治面貌。
--查询05541班的学生信息
SELECT班级=SUBSTRING(S_NUMBER,1,5),
本班内的学号=SUBSTRING(S_NUMBER,6,7),
姓名=S_NAME,
性别=SEX,
出生日期=BIRTHDAY,
政治面貌=POLITY
WHERESUBSTRING(S_NUMBER,1,5)='
例6-4-3:
使用位运算符计算表达式的值。
--声明4个变量
DECLARE@ExpResult1int,
@ExpResult2int,
@ExpResult3int
SELECT@ExpResult1=20&
12,
@ExpResult2=20|12,
@ExpResult3=20^12
--输出变量的值
SELECT@ExpResult1AS'
位与运算结果'
@ExpResult2AS'
位或运算结果'
@ExpResult3AS'
位异或运算结果'
例6-4-4:
使用比较运算符计算表达式的值。
--定义两个变量
DECLARE@Exp1integer,
@Exp2integer
SET@Exp1=30
SET@Exp2=50
--根据两个变量的值输出结果
IF@Exp1>
@Exp2
PRINT'
第1个变量的值大于第2个变量的值。
'
ELSEIF@Exp1=@Exp2
第1个变量的值等于第2个变量的值。
ELSE
第1个变量的值小于第2个变量的值。
例6-4-5:
@Exp2integer
--与运算结果
@Exp2AND@Exp1<
@Exp1>
@Exp2的结果值为真。
ELSE
@Exp2的结果值为假。
--或运算结果
@Exp2OR@Exp1<
例6-4-6:
使用字符串连接运算符计算表达式的值。
DECLARE@ExpResultchar(60)
--对变量赋值
SELECT@ExpResult='
河北省廊坊市'
+'
北华航天工业学院'
计算机软件教研室'
字符串的连接结果'
例6-4-7:
使用括号改变表达式的计算顺序。
DECLARE@ExpResultint
SELECT@ExpResult=100+(20-5)*2/3
计算结果'
例6-5-1:
从STUDENT数据库中返回T_STUDENT表的第4列的名称。
--使用系统函数求第4列的名称
SELECTCOL_NAME(OBJECT_ID('
T_STUDENT'
),4)
AS'
T_STUDENT表中第4列的名称'
例6-5-2:
从STUDENT数据库中返回T_STUDENT表的S_NUMBER列的长度。
--使用系统函数求S_NUMBER列的长度
SELECTCOL_LENGTH('
'
S_NUMBER'
)
T_STUDENT表中的S_NUMBER列的长度'
例6-5-3:
检查sysdatabases中的每一个数据库,使用数据库标识号来确定数据库名称。
USEmaster
SELECTdbid,DB_NAME(dbid)ASDB_NAME
FROMsysdatabases
ORDERBYdbid
例6-5-4:
在T_STUDENT表中先插入三条新记录,其中的POLITY字段的值为NULL,要求对记录进行查询时,对应的NULL值在显示时显示“群众”。
--打开数据库STUDENT
--向T_STUDENT表中插入三条记录
INSERTINTOT_STUDENT(
S_NUMBER,S_NAME,SEX)
VALUES(
Y0452201'
王志鹏'
Y0452202'
周小娟'
Y0452203'
李磊'
--查询刚插入的记录信息
SELECTS_NUMBERAS学号,S_NAMEAS姓名,
SEXAS性别,POLITYAS政治面貌
WHERESUBSTRING(S_NUMBER,1,6)='
Y04522'
--将政治面貌字段的值为空的记录用'
群众'
代替NULL显示
SEXAS性别,(ISNULL(POLITY,'
))AS政治面貌
例6-5-5:
利用@@ERROR返回程序的错误代码。
--对T_COURSE表操作,在T_COURSE表中
INSERTINTOT_COURSE
40050407'
C语言程序设计'
--输出此时错误代码的值
SELECT@@ERRORAS'
第一次插入记录时的错误代码'
/*在T_COURSE表中再插入一条新的记录,
但课程号与上面插入的记录相同,
输出此时错误代码的值*/
VALUES
VB程序设计'
64,2.5)
第二次插入记录时的错误代码'
例6-5-6:
显示到当前日期和时间为止试图登录SQLServer的次数。
SELECTGETDATE()AS'
今天的日期和时间'
@@CONNECTIONSAS'
企图登录的次数'
例6-5-7:
返回在程序执行过程中上一条SQL语句影响的记录数。
--查询T_STUDENT表中的记录
SELECT*
--查询上一条SELECT语句影响的记录数
SELECT@@ROWCOUNTAS'
第一次查询返回的记录数'
--查询T_STUDENT表中性别为男的记录
WHERESEX='
第二次查询返回的记录数'
40050408'
--查询上一条INSERT语句影响的记录数
第一次插入记录时影响的记录数'
--插入一条新的记录,
--但课程号与前面插入的记录相同
VC程序设计'
第二次插入记录时影响的记录数'
例6-5-8:
返回SQLServer安装的日期、版本和处理器类型。
SELECT@@VERSIONAS'
当前的SQLServer信息'
例6-5-9:
使用RTRIM函数删除字符型字段中的尾部空格。
--使用字符串函数RTRIM去掉尾部空格
T_COURSE'
C_NAME'
)AS'
课程名称列的长度'
C_NAMEAS课程名称,
DATALENGTH(RTRIM(C_NAME))AS'
课程名称列的实际数据长度'
FROMT_COURSE
例6-5-10:
使用SUBSTRING函数、LEFT函数和RIGHT函数求T_STUDENT中的班级名称和学号。
--使用字符串函数
SELECTSUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2)AS'
班级'
RIGHT(RTRIM(S_NUMBER),2)AS学号,
S_NAMEAS姓名,
SEXAS性别,
BIRTHDAYAS出生日期,
POLITYAS政治面貌
WHERELEFT(S_NUMBER,5)='
例6-5-11:
在第一个字符串(GoodMorning)中删除从第6个位置(字符M)开始的7个字符,然后在删除的起始位置插入第二个字符串(Afternoon),创建并返回一个新的字符串。
--定义变量@varString
DECLARE@varStringchar(30)
SELECT@varString=STUFF('
GoodMorning'
6,7,'
Afternoon'
SELECT@varStringAS'
返回的字符串'
例6-5-12:
查询T_STUDENT表的学生信息,要求显示的字段为:
学号、姓名、性别和学生的年龄。
SELECTS_NUMBERAS学号,
YEAR(GETDATE())-YEAR(BIRTHDAY)AS年龄
例6-5-13:
在T_STUDENT表中查询每个学生的出生月份。
DATEPART(Month,BIRTHDAY)AS出生月份
例6-5-14:
从系统当前日期中返回系统当前的年份数、月份数和天数。
SELECTYEAR(GETDATE())AS当前年份,
MONTH(GETDATE())AS当前月份,
DAY(GETDATE())AS当前天数
例6-5-15:
在同一表达式中使用CEILING(),FLOOR(),ROUND()函数。
SELECTCEILING(28.6)AS'
CEILING(28.6)的值'
FLOOR(28.6)AS'
FLOOR(28.6)的值'
ROUND(37.2364,3)AS'
ROUND(37.2364,3)的值'
例6-5-16:
查询T_STUDENT表中出生年份为1985年的学生信息。
POLITYAS政治面貌
WHERECONVERT(char(40),BIRTHDAY,102)LIKE'
1985%'
例6-5-17:
编写一个用户自定义函数fun_SumScores,要求根据输入的班级号和课程号,求此班此门课程的总分。
--创建用户自定义函数fun_SumScores
CREATEFUNCTIONfun_SumScores
(
@ClassNameASchar(10),
@CourseNumberASchar(10)
RETURNSreal
BEGIN
DECLARE@SumResultASreal
SELECT@SumResult=SUM(SCORE)
FROMT_SCORE
WHERESUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2)=@ClassName
ANDC_NUMBER=@CourseNumber
GROUPBYSUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2)
RETURN@SumResult
END
例6-5-18:
使用自定义函数fun_SumScores,求T_SCORE表中的各个班级的各门课程的总分。
--使用自定义函数fun_SumScores求总分
SELECTDISTINCT
班级名称=SUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2),
课程名称=T_COURSE.C_NAME,
总分=dbo.fun_SumScores(
SUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2),
T_SCORE.C_NUMBER
FROMT_SCORE,T_COURSE
例6-6-1:
根据T_SCORE表中的考试成绩,查询05541班学生高等数学的平均成绩,并根据平均成绩输出相应的提示信息。
IF(SELECTAVG(SCORE)FROMT_SCORE
WHERELEFT(S_NUMBER,5)='
ANDC_NUMBER='
10010218'
>
75
BEGIN
05541班高等数学的平均考试成绩比较理想!
SELECTAVG(SCORE)AS平均考试成绩
FROMT_SCORE
END
05541班高等数学的平均考试成绩不太理想!
例6-6-2:
查询05541班学生的考试情况,并使用CASE语句将课程号替换为课程名进行显示。
SELECTS_NUMBERAS学号,
课程名称=CASEC_NUMBER
WHEN'
THEN'
高等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第06章 TransactSQL程序设计例题解答 06 TransactSQL 程序设计 例题 解答