SQL Server →3
T-SQL编程与高级查询
·T-SQL语句的分类
1.变量声明。T-sql 语句中可以使用两种类型的变量。局部变量和全局变量。
2.数据定义语言(Data Definition Language,DDL),用来建立数据库及数据库对象,绝大部分以,create开头,如:create,table。
3.数据控制语言(Date Control Language,DCL),用来控制数据库组件的存取许可、权限等命令。
4.数据操作语言,(Data Manipulation Language ,DML)用来操作数据库中数据的命令,如:Select uapdate。
5.流程控制语言(Flow Control Language,FCL)用于控制应用程序流程的语句,如:if、case
。
·T-Sql中的注释
1.嵌入行内的注释语句 :--
2.块注释语句:/* */
·T-Sql中的批处理
.批处理是指包含一条或多条T-Sql语句,这组语句从应用程序一次性地发送到SQL Server服务器执行。例:
insert into cardInfo values('023-004','123456',50,getdate());
select * from cardInfo
go
·变量
1.局部变量
语法: declare{@变量名 数据类型 [,......n]} *注意:
.1 局部变量必须以@开头,不区分大小写 ,变量名必须符合SQL Server命名规则。
.2 declare 语句默认会将变量的值初始化为null。
2. T-SQl局部变量赋值
语法:
set @变量名 = 值 select语句为局部变量赋值
语法:
select @变量名 = 值
3. 局部变量的作用域
变量的作用域就是可以引用该变量的T-SQL语句的范围。变量的作用域从声明变量的地方开始到声明变量的批处理或存储过程的结尾。
4.局部变量的应用
.1 作为计算器计算循环执行的次数或控制循环执行的的次数。
.2 保存数据值以供控制流语句测试。
.3 保存存储过程要返回的数据值或函数返回值。
·全局变量
*注意:
→ 全局变量不是由用户的程序定义的,它们是服务器级定义的。
→ 用户只能使用预先定义的全局变量。
→ 引用全局变量时,必须以标记符 “@@”开头。
常用的全局变量:
@@ERROR 返回执行上一个T-SQL语句的错误代码
@@IDENTITY 返回上次插入的标识符
@@ROWCOUNT 返回受上一语句影响的行数
例:
select * from cardInfo go select @@ROWCOUNT as '受影响的行数' go
·输出语句
两种方式输出:
1.print 语法:
print {字符串 | 变量 | 函数 | 字符串} 使用print语句输出的都是文本字符串,且都是占据一行
2. select 语句输出:
例: select @@version as 'SQL Server 版本',getdate()'当前时间' go
·T-SQL流程语句
1. if...eles 语句 语法:
if(条件表达式) 语句块或语句
else 语句或语句块
*注意: 若要定义语句块,请使用控制流关键字 BEGIN 和 END。
语法为:
if(条件表达式)
begin ...语句
end
else
begin ...语句
end
2.case 格式:
→ 简单case格式:将某个表达式与一组简单表达式进行比较,以确定结果。
→ 搜索case格式:计算一组布尔表达式,以确定结果。
① 简单CASE格式:
语法:
case 测试表达式
when 表达式 then 结果表达式 1
[...n] [else 结果表达式 n]
end
*注意:如果没有else语句,则返回NULL ② 搜索case格式 语法: case when 布尔表达式 then 结果表达式 1 [...n] [else 结果表达式 n] end
3.while语句
语法:
while 布尔表达式
{语句与语句块}
[break]
{语句与语句块}
[continue]
{语句语句语句块}
*注意:也要用begin 和 end 将语句块括起来 break:跳出循环 continue:结束本次循环,进行下次循环
·使用子查询 1.常用的子查询:
① 使用比较运算符(=、<>、>、<、<=、>=、!<、!>)的子查询
② in 和 not in子查询
③ exists 和 not exists 子查询 语法: where [not] exists(子查询)
*注意:
exists 关键字前面没有列名、常量或其它表达式。
由exists 引入的子查询的选择列表通常是由星号(*)组成,由于只是测试是否存在符合子查询中指定条件的行,所以不必列出列名。 not exists与exists 相反 2. 子查询出现在where关键字之后 3. 子查询出现在from关键字之后
浙公网安备 33010602011771号