SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器

1. T-SQL编程

  1)声明变量

  declare @age int

  (2)为变量赋值

  set @age=26

  (3)while循环

    declare @i int=1
while @i<=100
begin
print @i
@i=@i+1
end

  (4)if  else

    if @i>10
begin
print '大于10'
end
else if @i>5
begin
print '大于5'
end
else
begin
print '小于等于5'
end

  (5)系统变量

    @@version: 返回  SQL Server的当前安装的系统和生成信息。
    @@error: 上一条sql语句出错,会有错误号;上一条sql执行没出错,则为0。
    @@lanuage: 返回当前所用语言的名称。

    @@max_connections:  返回 SQL Server实例允许同时进行的最大用户连接数。(实际允许的用户连接数还依赖于所安装的  SQL Server的版本以及应用程序和硬件的限制)
    @@Rowcount: 上一条sql语句影响的行数。
    @@servername: 返回正在运行  SQL Server的本地服务器的名称。

    @@connections: 此函数返回  SQL Server自上次启动以来尝试的连接数,无论连接是成功还是失败。

  (6)事务

    一个事务中,不能一个sql语句执行成功,一个执行失败。只要有一个sql语句执行失败,就是失败。

    自动提高事务:当执行一条sql语句,数据库自动打开一个事务,执行成功->自动提交,执行失败->自动回滚。

    隐式事务:当执行一条sql语句,数据库自动打开一个事务,需要手动提交,手动回滚。(打开隐式事务:set implicit_Transactions ON)

    显式事务:需要手动打开事务,手动提交,手动回滚。

    打开一个事务:

    begin transaction
declare @sum int=0
update tableA set Name='大胡子' where id=2
set @sum=@sum+@@error
update tableB set Name='大胡子' where id=2
set @sum=@sum+@@error
if @sum<>0
begin
rollback --回滚,也可写rollback transaction
end
else
begin
commit --提交,也可写commit transaction
end

2.  游标cursor (相当于C#中的For)

  定义游标:

    declare Mycursor cursor for
select UserName,Age,Email from tbUsers

  使用游标:

    open Mycursor
declare @uName varchar(50)
declare @uAge int
declare @uEmail varchar(50)
fetch next from Mycursor into @uName,@uAge,@uEmail
if (@@fetch_status=0)
begin
print @uName
print @uAge
print @uEmail
end
close Mycursor

3. 触发器 trigger

  触发器是数据库服务器中发生事件时自动执行的一种特殊存储过程。

  DML触发器:如果用户要通过数据操作语言 (DML) 事件编辑数据,则执行 DML 触发器。

        表或视图的 insert, delete, update语句(不支持select)。

  DDL触发器:DDL 触发器用于响应各种数据定义语言 (DDL) 事件。

        这些事件主要对应于  Transact-SQL Create、Alter 和 Drop 语句,以及执行类似 DDL 操作的某些系统存储过程。

  登录触发器: 登录触发器在遇到 Login 事件时触发,该事件是在建立用户会话时引发的。

  创建触发器:

    create trigger trg_In ON tbUsers
after delete
as
begin
insert into tbUsers_backup(Name,Age,Email) select Name,Age,Email from deleted
end

SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器的更多相关文章

  1. SQL server学习(五)——T-SQL编程之存储过程

    周五了,祝大家周末愉快. 之前一直在写SQL server的分享,今天再来个T-SQL编程中的存储过程. 存储过程 存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务 ...

  2. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  3. SQL Server -- 回忆笔记(三):ADO.NET之C#操作数据库

    SQL Server知识点回忆篇(三):ADO.NET之C#操作数据库 1.连接数据库 (1)创建连接字符串: 使用windows身份验证时的连接字符串: private string conStr= ...

  4. SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

    SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

  5. SQL Server -- 回忆笔记(一):初见数据库

    SQL Server知识点回忆篇(一):初见数据库 1.  主键 primary key    唯一标识, 不会重复的值才会用来当做主键使用. 表可以没有主键,但建议每张表都有主键. 2.  数据冗余 ...

  6. SQL server学习(五)T-SQL编程之存储过程

    周五了,祝大家周末愉快. 之前一直在写SQL server的分享,今天再来个T-SQL编程中的存储过程. 存储过程 存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务 ...

  7. SQL Server进阶(十一)可编程对象——变量、 批、流元素、 游标

    变量 --------------------------------------------------------------------- -- Variables -------------- ...

  8. 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句

    原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...

  9. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

随机推荐

  1. java自动拆装箱(转载)

    转载自:http://www.cnblogs.com/dolphin0520/p/3780005.html 注意:Integer的缓存机制.

  2. [Abp 源码分析]十五、自动审计记录

    0.简介 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客户端请求的参数信 ...

  3. BBS论坛(一)

    1.1.项目结构搭建 (1)创建flask项目Perfect_bbs,然后搭建项目结构如下: (2)构建蓝图 cms/views.py # cmd/views.py from flask import ...

  4. RabbitMQ学习笔记(四) Routing

    新的场景 在我们学习了RabbitMQ的发布与订阅之后,我们很容易就可以完成一个简单的消息群发器. 使用这个消息群发器,所有的消费者程序实例都会接收到相同的消息信息,从而实现广播的效果. 但是这种广播 ...

  5. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  6. RBAC用户特别授权的思考

    场景: 标准的RBAC,授权只应该赋予角色,再把角色指派给用户,当需要对特定用户授予权限时,就只能新建一个角色指派给这个用户.这就意味着每对一个新用户做特别授权都要创建一个特别角色. 今天脑洞大开,想 ...

  7. Android客户端与服务器交互方式-小结

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json.要在Android手机客户端与pc服务器交互,需要 ...

  8. dotnet core使用开源组件FastHttpApi进行web应用开发

    FastHttpApi相对于asp.net mvc来说有着更轻量和性能上的优势,性能上面就不在这里介绍了(具体可查看 https://github.com/IKende/FastHttpApi).在这 ...

  9. leetcode — path-sum

    /** * Source : https://oj.leetcode.com/problems/path-sum/ * * * Given a binary tree and a sum, deter ...

  10. C#杂记-自动实现的属性(自动属性)

    基础知识: 普通属性:可读或可写并将值存储到一个私有变量中的属性,不对数据做任何加工,没有自定义代码. private string name public string Name { get{ret ...