T-SQL是SQL Server系统产品独有的关系数据库系统语言。
T-SQL主要由三部分组成
- DDL:数据定义语言,用于在数据库中对数据库、表、视图、索引等数据库对象进行创建及管理;
- DCL:数据控制语言,用于实现对数据库中数据的完整性、安全性等的控制;
- DML:数据操作语言,用于插入、修改、删除和查询数据库中的数据。
T-SQL语句结构
每条SQL语言都由一个谓语开始,如SELECT,UPDATE。谓语后紧接着一个或者多个子句,子句给出了被谓语作用的数据或提供谓语动作的详细信息,每一条子句都由一个关键字开始。
比如select语句主要结构如下:
select 子句
[ into 子句 ]
from 子句
[ where 子句 ]
[ group by 子句 ]
[ having 子句 ]
[ oder by 子句 ase/desc ]
T-SQL语句分类
- 变量说明语句:用来说明变量的命令;
- 数据定义语句:用来建立数据库、数据库对象和定义列,大部分以create开头的命令,如create table 、create view、drop table等;
- 数据操作语句:用来操作数据库的命令,如select、insert、updata、delete和cursor等;
- 数据控制语句:用来控制数据库组件的存取许可、存取权限等命令,如grant、revoke等;
- 流程控制语句:用于设计应用程序流程的语句,如if while和case等;
- 内嵌函数:说明变量的命令;
- 其他命令:嵌于命令中使用的标准函数。
常量
- 数字常量:整数常量、小数常量和浮点常量(e,即乘10的几次幂 )
- 字符串常量:常用单引号括在内;
- 日期和时间常量
- 符号常量:SQL包含几个特有的符号变量,例current_date表示当前日期,类似的如current_time,current_timestamp等。
变量
数据在内存中储存可以变化的量叫变量。
局部变量
局部变量是用户可自定义的变量,必须以@开头。
1、声明局部变量
局部变量的声明需要使用declare语句
declare
{ @varaible_name datatype [ ,…n ] }
其中@varaible_name是局部变量名;
datatype是数据类型
例如: declare @身份证类型 char(10)
2、为局部变量赋值
- 第一种方法是用select语句
select
@varaible_name=expression
[ from table_name[,…] where clause ]
赋值的时候select语句可以不用from子句。
select语句赋值和查询不能混淆!
- 第二种方法是用set语句
declare @varaible_name char(10)
set @varaible_name=expression
- 为多个变量一起赋值
declare @a int,@b char(10),@c int
select @a=1,@b='love',@c=2
全局变量
全局变量是数据库内部事先定义好的变量,其名称都是以@@开头的
- @@connections
使用@@connections可以让系统管理员很容易得到今天所有试图连接本服务器的连接数目; - @@cup_busy
记录自上次启动以来尝试的连接数,都是以ms为单位的cpu工作时间 - @@cursor_rows
返回在本次服务器连接中,打开游标取出数据行的数目; - @@DBTS
返回当前数据库中timestamp数据类型的当前值 - @@error
返回执行上一条Transact-SQL语句返回的错误代码。 - @@fetch_status
返回上一次使用游标fetch操作所返回的状态值,且返回值为整型。
……………………不在赘述!
注释符、运算符与通配符
流程控制
- begin ……end
用于将多个T-SQL语句组合成一个逻辑块。
在begin……end 可嵌套另外的begin……end来定义另一程序块。 - if
if <条件表达书>{命令行|程序块}
- if ……else
if <条件表达书>{命令行|程序块}
[ else {命令行|程序块} ]
例:
declare @x int,@y int
set @x=-1
@y=1
if @x>0
if@y>0
print"xy在第一象限"
else
print"xy在第四象限"
else
if@y>0
print"xy在第二象限"
else
print"xy在第三象限"
- case
使用case语句可以很方便地实现多重选择的情况,比if……then结构有更多的选择和判断的机会。
1、第一种简单的case函数
CASE 所计算的表达式
WHEN 选择条件表达式 THEN 返回表达式
[……n] --表示可以使用多个when……then
[
ELSE 返回表达式
END
2、case 搜索函数
CASE
WHNE 所计算的布尔表达式 THEN 返回表达式
[……n]
[
ELSE 返回表达式
END
3、举例
use 学生成绩数据库
go
select *,
评分总结=case
when 成绩>=90 then '成绩优秀'
when 成绩<90 and 成绩>=80 then '成绩良好'
when 成绩<80 and 成绩>=60 then '成绩及格'
else '成绩不及格'
end
from 成绩表
-
while
while子句是T-SQL语句支持的循环结构。在条件为真时,while子句可以循环执行其后一条T-SQL语句。如果要循环执行一组命令,需要配合begin……end子句使用。
while <条件表达式>
begin
<命令行|程序块>
end
举例:求1~10之间的整数和
declare @n int,@sum int
set @n=1
set @sum=0
while @n<=10
begin
set @sum=@sum+@n
set @n=@n+1
end
print @sum -
while ……continue……break
while <条件表达式>
begin
<命令行|程序块>
[break] --跳出循环,结束while命令
[continue] --回到循环第一步
end
举例1:求1~10之间偶数的和,用continue进行控制
declare @x int,@sum int
set @x=1
set @sum=0
while @x<10
begin
set @x=@x+1
if @x % 2=0
set @sum=@sum+@x
else
continue
end
- return
return语句用于从查询或过程中无条件退出。位于return之后的语句不会被执行。 - goto
- waitfor
常用命令
- DBCC命令用于验证数据库完整性、查找错误和分析系统使用情况等。
1、DBCC checkalloc 检查制定数据库的磁盘空间分配结构的一致性;
2、DBCC showcontig 显示指定表的数据和索引的碎片信息; - checkpoint
- declare
- raiserror
- readtext
- backup 数据备份
backup database 数据库名 to disk='文件名.bak'
-restore
-select 除了查询,还可以赋值
-set,一方面用于局部变量赋值,一方面用于执行SQL命令时SQL Server的处理选项设定
-shutdown立即停止SQL Server的执行。
-writetext
-use
网友评论