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. 巡风源码阅读与分析---AddPlugin()方法

    文件位置:view/view.py AddPlugin() # 新增插件异步 @app.route('/addplugin', methods=['get', 'post']) @logincheck ...

  2. hive中beeline取回数据的完整流程

    这里我们从BeeLine.execute讲起. 接下来来到BeeLine.dispatch,这里的入参就是sql语句.方法的最后调用了Commands.sql,然后调用到了Commands.execu ...

  3. python +selenium识别不来click事件,出现报错

    assert "login" in browser.title browser.implicitly_wait(10) elem = browser.find_element_by ...

  4. 获取model的自定义特性

    class Program { static void Main(String[] args) { var t = typeof(A); var pName = t.GetProperty(" ...

  5. QQ如何开通在线客服

    一. 注册一个网站专用QQ. 二. 到QQ商家设置QQ在线状态:http://wp.qq.com/set.html 1.免费开通 2.根据你的需求设置 3,复制代码放置在html页面上即可,效果如下图

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

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

  7. HBase BulkLoad批量写入数据实战

    1.概述 在进行数据传输中,批量加载数据到HBase集群有多种方式,比如通过HBase API进行批量写入数据.使用Sqoop工具批量导数到HBase集群.使用MapReduce批量导入等.这些方式, ...

  8. linux(centos)搭建.net core 运行环境

     总的来说,非常简单,我记录一下: 1.打开https://www.microsoft.com/net/download?initial-os=linux 这里"Instal .NET C ...

  9. ES6躬行记(14)——函数

    在前面的章节中,已陆陆续续介绍了ES6为改良函数而引入的几个新特性,本章将会继续讲解ES6对函数的其余改进,包括默认参数.元属性.块级函数和箭头函数等. 一.默认参数 在ES5时代,只能在函数体中定义 ...

  10. 【细语】C#之扩展方法原理及其使用

    1.写在前面 今天群里一个小伙伴问了这样一个问题,扩展方法与实例方法的执行顺序是什么样子的,谁先谁后(这个问题会在文章结尾回答).所以写了这边文章,力图从原理角度解释扩展方法及其使用. 以下为主要内容 ...