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. 搭建自己的hexo博客

    这是我最近用hexo搭建的个人博客,欢迎来参观留言,以下是我创建这个hexo的一步步步骤,欢迎指正! 我的博客 参考自 潘柏信的博客;CnFeat 主题参考这里 pacman; 主题选自这里 hexa ...

  2. expect--自动批量分发公钥脚本

    1.在使用之前,先安装epel源,yum install expect -y2.写分发脚本,后缀为exp #!/usr/bin/expect set host_ip [lindex $argv 0] ...

  3. Qt5模块简介

        原文链接:Qt5 模块简介 无意中看到这篇文章,虽然讲的不是经常用的东西,但是看了这篇文章之后,可以对qt有个大致的了解,能够清晰的知道自己想要什么,应该关注那一部分,学习了,相信以后会又很大 ...

  4. asp.net core 系列 12 选项 TOptions

    一.概述 本章讲的选项模式是对Configuration配置的功能扩展. 讲这篇时有个专用名词叫“选项类(TOptions)” .该选项类作用是指:把选项类中的属性与配置来源中的键关联起来.举个例,假 ...

  5. RS232串口的Windows编程纪要

    再次是一篇入门文,各路神仙退散. 直接进入主题,又不是历史课,关于RS232那些前世今生的故事就不摆了. 硬件链接 首先以9针小口为例(大口应当只能去博物馆看了吧)看一下管脚排布,其实RS232本身没 ...

  6. Java基础12:深入理解Class类和Object类

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  7. Linux 虚拟内存

    查看进程占用内存情况: ps -aux VSZ表示占用虚拟内存单位KBRSS表示占用物理内存单位KB 添加swap文件大小为4G 内部存储块每块1M dd if=/dev/zero of=/swap ...

  8. ELK-Elasticsearch安装

    1.安装JDK必须安装JDK并且要求版本至少是1.8以上包含1.8的版本. 2.创建 es 用户这里需要注意的是,es 规定 root 用户不能启动 es,所以需要创建一个用户来启动 es # 创建用 ...

  9. Session执行机制与原理

    Session执行机制与原理 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 什么是Session 首先了解一下Session的中文意思:一次会话,什么是一次会话呢?我举个例子:就我们现 ...

  10. leetcode — palindrome-partitioning

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...