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. Python内置函数(45)——object

    英文文档: class objectReturn a new featureless object. object is a base for all classes. It has the meth ...

  2. 说一说MVC的控制器(二)

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. Python爬虫入门教程 28-100 虎嗅网文章数据抓取 pyspider

    1. 虎嗅网文章数据----写在前面 今天继续使用pyspider爬取数据,很不幸,虎嗅资讯网被我选中了,网址为 https://www.huxiu.com/ 爬的就是它的资讯频道,本文章仅供学习交流 ...

  4. Solr 05 - Solr Web管理界面的基本使用

    目录 1 Dashboard - 仪表盘 2 Logging - 日志信息 3 CoreAdmin - Solr核心 4 Java Properties - Java参数 5 Thread Dump ...

  5. 你以为的MongoDB副本集的高可用是真的高可用了吗?

    很久没来更新博客,自感是一个只会搬砖的劳工,总搞些MySQL相关的数据库实在无聊,且时不时遇到些不讲道理的Dev吧,真的是心累至极,有种想回头我也去干开发的冲动,当个需求者有话语权要风得风,要雨得雨多 ...

  6. JavaScript与WebAssembly进行比较

    本文由云+社区发表 作者:QQ音乐前端团队 在识别和描述核心元素的过程中,我们分享了构建SessionStack时使用的一些经验法则,这是一个轻量级但健壮且高性能的JavaScript应用程序,以帮助 ...

  7. kubernetes系列06—kubernetes资源清单定义入门

    本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...

  8. java continue break 关键字 详解 区别 用法 标记 标签 使用 示例 联系

    本文关键词: java continue break 关键字 详解 区别  用法 标记  标签 使用 示例 联系   跳出循环 带标签的continue和break 嵌套循环  深入continue ...

  9. Docker容器运行ASP.NET Core

    最近要学习的知识太多,都不知道先学哪些了,原本计划这篇博客是写xamarin.forms中的listview用法,关于listview的用法简书上有一篇介绍的也比较详细,所以暂时先缓一缓,属于次要任务 ...

  10. 第30章 部署 - Identity Server 4 中文文档(v1.0.0)

    您的身份服务器只是一个标准的ASP.NET Core应用程序,包括IdentityServer中间件.首先阅读有关发布和部署的官方Microsoft 文档(尤其是有关负载平衡器和代理的部分). 30. ...