时间:2022-06-23 07:18:23
应用SQL Server 2000解决实际问题时,标准的T-SQL语句不能满足需要,需要加一些非标准的语言要素。作为高职院校的教师,要培养高技能的人才,教师必须对理论教学内容和实践教学内容都要做到精、透,这就需要不断地学习和积累经验。
众所周知,结构化查询语言SQL(Structured Query Language)是IBM公司在20世纪70年代开发的查询语言,SQL标准经过多次修改,现在已成为关系型数据库环境下的标准查询语言。作为SQL Server使用的Transact-SQL语言,它不但包含了标准的SQL语言部分,而且为了增强可编程性和灵活性,另外增加了如注释、变量、函数等非标准的语言要素。在对SQL Server 2000的三年教学中,对SQL Server语句的应用进行了归纳总结,积累了一些经验。
一、go语句的应用
为了提高程序的执行效率,在Transact-SQL语言编写的程序中,把多个语句放在一起形成语句组,在执行程序时把语句组作为一个批处理一次性地发送到SQL Server服务器。同时,为了使程序的各组成部分及功能划分比较清楚,在每一个批处理后用Go语句作为结束标志,虽然Go语句有时不是必须用的。但在下列情况下,必须使用GO语句。
1、在使用命令创建数据库并打开数据库时,若这两个操作一起执行则必须使用GO语句进行分隔。
2、在数据库中创建视图时,在打开数据库语句和创建视图语句一起执行时必须使用GO语句进行分隔。
3、在执行存储过程时,若没有使用EXEC命令,则此存储过程与其他语句一起执行时必须使用GO语句进行分隔。
4、在数据库中创建函数、存储过程或触发器时,在打开数据库语句和创建函数、存储过程或触发器语句一起执行时必须使用GO语句进行分隔。
另外,严格来讲,Go语句本身不是Transact-SQL语句的组成部分,所以在给程序添加注释时注释内容不能直接放在GO语句的后面。
二、select语句的应用
Select语句能够完成对表中数据的查询,而且查询是对表中数据处理的最常用的操作,但select语句的功能及应用还有很多。
1、显示函数或变量的值
例如:
程序如下:
use student
go
select*from course
go
insert into course values('03102','网络数据库',5)
select@@error as '第一次插入记录时的错误代码'
在这里,select语句通过显示全局变量@@error的值来表明上一条语句执行是否出错,并在显示值前显示提示信息行。
又例如:显示当前日期时间以及到当前日期时间试图登录SQL Server的次数。
程序如下:
select getdate(),@@connections
在这里,显示结果没有提示信息行,但在同一行一次可显示两个(或多个)值。
2、局部变量的赋值
例如:
程序段如下:
declare @a int,@ch char(12)
select@a=5,@ch='网络数据库'
在这里,变量的值与表中数据无关。
3、在查询子句中把查询结果直接赋给变量
例如:
程序如下:
use student
declare@rowcount int
select@rowcount=count(*)from stu
/*上一条语句的功能是查询表stu,返回的记录个数赋给变量@rowcount*/
select@rowcount as 'STU表的记录数'
在这里,语句
select@rowcount=count(*)from stu
等价于语句
set@rowcount=(select count(*)from stu)
可见,select语句还可作为表达式放在赋值运算符的后面。但需要说明的是,上述两种情况仅限于查询结果是单值的情况。
4、显示表中不存在的列
假设表stuscore中有三个列,列名依次是s_number(学号)、c_number(课程号)和score(分数),且学号的值的表示形式如:'0421305',表示此学生是2004级213班05号。那么,显示此表的记录信息时在学号字段前显示班级信息,命令语句如下:
select班级=substring(s_number,3,3),
s_number学号,c_number 课程号,score分数from stuscore
(作者单位:黑龙江农业工程职业学院)