首页 > 代码库 > T-SQL

T-SQL

变量分为:

局部变量:
局部变量必须以标记@作为前缀 ,如@age
局部变量的使用也是先声明,再赋值
全局变量:
全局变量必须以标记@ @作为前缀,如@@version
全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值

声明局部变量

     DECLARE   @变量名  数据类型

例如:

DECLARE @name varchar(8)

DECLARE @seat int


 

赋值

   SET @变量名 =值

   SELECT  @变量名 = 值

例如:

SET @name=‘张三’

SELECT @name=stuName FROM stuInfo

        WHERE stuNo=‘s25302’ (必须确保筛选出的记录只有1条 )


 

全局变量都使用两个@标志作为前缀

变量

含义

@@ERROR

最后一个T-SQL错误的错误号

@@IDENTITY

最后一次插入的标识值

@@LANGUAGE

当前使用的语言的名称

@@MAX_CONNECTIONS

可以创建的同时连接的最大数目

@@ROWCOUNT 

受上一个SQL语句影响的行数

@@SERVERNAME

本地服务器的名称

@@TRANSCOUNT 

当前连接打开的事务数

@@VERSION 

SQL Server的版本信息

 

BEGIN…END语句相当于其他语言中的复合语句,如JAVA语言中的{ }。它用于将多条T-SQL语句封装为一个整体的语句块,即将BEGIN…END内的所有T-SQL语句视为一个单元执行。
IF-ELSE语句
WHILE循环语句,BREAK表示退出循环

CASE

  WHEN 条件1 THEN  结果1

  WHEN 条件2 THEN  结果2

  ……

  ELSE 其他结果

END


参考语句:

print  ‘ABCDE五级显示成绩如下:‘

SELECT Student_id,

   成绩= CASE 

                  WHEN Student_grade<60 THEN ‘E‘

                  WHEN Student_grade BETWEEN 60 AND 69 THEN ‘D‘

                  WHEN Student_grade BETWEEN 70 AND 79 THEN ‘C‘

                  WHEN Student_grade BETWEEN 80 AND 89 THEN ‘B‘

                  ElSE    ‘A‘

              END

      FROM Student_course


总结:

  • 变量的赋值有两种方式:使用SET语句或SELECT语句。
  • 输出结果也有两种方式:print语句和SELECT语句。
  • 控制流语句提供了条件操作所需的顺序和逻辑。
  • 语句块使用BEGIN…END。
  • 批处理可以提高语句执行的效率,批处理结束的标志是“GO”。

 



存储过程:

create proc(edure) procName

  参数列表 --输入参数 按值传递

       --输出参数 按引用传递

  @参数名 数据类型 [output]

as  

--T-SQL编程,定义变量,流程控制

go

 


数据库事务:

begin transaction

rollback transaction

commit transaction

 


create[unique] [ clustered//nonclustered] index index_name
on table_name(column_name [ASC//DESC])
[with
[pad_index]
[[,] fillfactor = fillfactor]
[[,] drop_existing]
]
  
注:unique指定创建的索引是惟一索引
    clustered//nonclustered指定被创建的索引类型,聚簇还是非聚簇,二选一
    index_name指定新建索引的名字
    table_name创建索引的基表的名字
    column_name索引中包含的列的名字
    [ASC//DESC]指定某个具体的索引列是升序还是降序排序,默认为ASC升序
    pad_index、fillfactor填充因子,指定创建索引过程中个索引页的填满程度
    drop_existing 删除先前存在的与创建索引同名的聚簇或非聚簇索引

 


触发器是一种特殊的存储过程:

  • 触发器定义在特定的表上,与表相关
  • 自动触发执行
  • 不能直接调用
  • 是一个事务(可回滚)

触发器触发时:

  • 系统自动在内存中创建deleted表或inserted表
  • 只读,不允许修改,触发器执行完成后,自动删除

inserted表:

  • 临时保存了插入或更新后的记录行
  • 可以从inserted表中检查插入的数据是否满足业务需求
  • 如果不满足,则向用户报告错误消息,并回滚插入操作

deleted表:

  • 临时保存了删除或更新前的记录行
  • 可以从deleted表中检查被删除的数据是否满足业务需求
  • 如果不满足,则向用户报告错误消息,并回滚插入操作

语法

create trigger tgr_name
on table_name
with encrypion –加密触发器
for update...
as
Transact-SQL

T-SQL