SQL知识整理三:变量、全局变量、视图、事务、异常
变量
1.局部变量的声明(一个@)
declare @n int --声明变量关键字为declare 然后@加变量名 后面是变量类型
declare @s varchar(36)
2.局部变量的赋值
set @s='f4'
set @n=@n+1 --变量的赋值有两种方法,一种是通过set,一种是select 如果变量不附初始值则默认为null,null参与计算的结果还是null,这一行的@n就等于null
select @n=age from students --如过变量通过select赋值,这里可能在表中查到很多age结果,这里只赋值查询出来的最后一个age结果,如果set使用这种方法会出错。
set @n=(select age from Students where ID='1')--亦可以这样给他赋值
全局变量
全局变量:是系统预定义的,返回一些系统信息,全局变量以两个@@开头。
常用的变量:
@@CONNECTIONS 返回自上次启动以来连接或试图连接的次数。
@@CURSOR_ROWS 返回连接上最后打开的游标中当前存在的合格行的数量(返回被打开的游标中还未被读取的有效数据行的行数)
@@DATEFIRST 返回每周第一天的数字
@@ERROR 返回最后执行的SQL 语句的错误代码。
@@FETCH_STATUS 返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
@@IDENTITY 返回最后插入的标识值
@@LANGID 返回当前所使用语言的本地语言标识符(ID)。
@@LANGUAGE 返回当前使用的语言名。
@@LOCK_TIMEOUT 返回当前会话的当前锁超时设置,单位为毫秒。
@@PROCID 返回当前过程的存储过程标识符 (ID) 。
@@ROWCOUNT 返回受上一语句影响的行数。
@@SERVERNAME 返回运行 的本地服务器名称。
@@SPID 返回当前用户进程的服务器进程标识符 (ID)。
@@TRANCOUNT 返回当前连接的活动事务数。
@@VERSION 返回当前安装的日期、版本和处理器类型。
@@CPU_BUSY 返回自SQL Server 最近一次启动以来CPU 的工作时间其单位为毫秒
@@DATEFIRST 返回使用SET DATEFIRST 命令而被赋值的DATAFIRST 参数值SET DATEFIRST,命令用来指定每周的第一天是星期几
@@DBTS 返回当前数据库的时间戳值必须保证数据库中时间戳的值是惟一的
@@ERROR 返回执行Transact-SQL 语句的错误代码
@@FETCH_STATUS 返回上一次FETCH 语句的状态值
@@IDLE 返回自SQL Server 最近一次启动以来CPU 处于空闭状态的时间长短单位为毫秒
@@IO_BUSY 返回自SQL Server 最近一次启动以来CPU 执行输入输出操作所花费的时间其单位为毫秒
@@LANGID 返回当前所使用的语言ID 值
@@LANGUAGE 返回当前使用的语言名称
@@LOCK_TIMEOUT 返回当前会话等待锁的时间长短其单位为毫秒
@@MAX_CONNECTIONS 返回允许连接到SQL Server 的最大连接数目
@@MAX_PRECISION 返回decimal 和numeric 数据类型的精确度
@@NESTLEVEL 返回当前执行的存储过程的嵌套级数初始值为0
@@OPTIONS 返回当前SET 选项的信息
@@PACK_RECEIVED 返回SQL Server 通过网络读取的输入包的数目
@@PACK_SENT 返回SQL Server 写给网络的输出包的数目
@@PACKET_ERRORS 返回网络包的错误数目
@@PROCID 返回当前存储过程的ID 值
@@REMSERVER 返回远程SQL Server 数据库服务器的名称
@@SERVICENAME 返回SQL Server 正运行于哪种服务状态之下如MSSQLServer MSDTC SQLServerAgent
@@SPID 返回当前用户处理的服务器处理ID 值
@@TEXTSIZE 返回SET 语句的TEXTSIZE 选项值SET 语句定义了SELECT 语句中text 或image数据类型的最大长度基本单位为字节
@@TIMETICKS 返回每一时钟的微秒数
@@TOTAL_ERRORS 返回磁盘读写错误数目
@@TOTAL_READ 返回磁盘读操作的数目
@@TOTAL_WRITE 返回磁盘写操作的数目
@@TRANCOUNT 返回当前连接中处于激活状态的事务数
视图
1.视图是一张虚拟表,他所存储的不是实际数据,而是查询语句,但我们可以对视图进行像数据表一样的操作。
2.为什么使用视图呢?我的理解是:1.在远程传输数据时,可以避免过长的查询字符,减少流量。2.他可以简化繁杂的多表嵌套查询语句。3.安全性,防止非法用户访问敏感数据,因为我们可以通过创建视图展示给用户,我们想要给他们查看的数据。
3.视图的创建
create view vw_city
as
select cityName from city --这个查询语句可以随便的写,如果是些多层次的嵌套查询语句的话,那么下面使用视图的简易性就突出了。应为只用一句简短的查询语句就能把原本繁杂的搞定
4.视图的查询
select * from vw_city
5.由于视图是以查询语句的形式存储的,所以一般视图只用于查看数据,一般不对视图进行增删改。如果数据库中的表数据改变那么视图中的数据也会随之改变,因为视图就相当于查询语句
事务
事务定义:
事务有若干条T-SQL指令组成,并且所有的指令昨晚一个整体提交给数据库系统,执行时,这组指令要么全部执行完成,要么全部取消。因此,事务是一个不可分割的逻辑单元。
事务的特点:
事务有4个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability),也称作事务的ACID属性。
原子性:事务内的所有工作要么全部完成,要么全部不完成,不存在只有一部分完成的情况。
一致性:事务内的然后操作都不能违反数据库的然后约束或规则,事务完成时有内部数据结构都必须是正确的。
隔离性:事务直接是相互隔离的,如果有两个事务对同一个数据库进行操作,比如读取表数据。任何一个事务看到的所有内容要么是其他事务完成之前的状态,要么是其他事务完成之后的状态。一个事务不可能遇到另一个事务的中间状态。
持久性:事务完成之后,它对数据库系统的影响是持久的,即使是系统错误,重新启动系统后,该事务的结果依然存在。
事务的模式:
显示事务:是用户使用T-SQL明确的定义事务的开始(begin transaction)和提交(commit transaction)或回滚事务(rollback transaction)
自动提交事务:是一种能够自动执行并能自动回滚事务,这种方式是T-SQL的默认事务方式。例如在删除一个表记录的时候,如果这条记录有主外键关系的时候,删除就会受主外键约束的影响,那么这个删除就会取消。
可以设置事务进入隐式方式:set implicit_transaction on;
隐式事务:是指当事务提交或回滚后,SQL Server自动开始事务。因此,隐式事务不需要使用begin transaction显示开始,只需直接失业提交事务或回滚事务的T-SQL语句即可。
使用时,需要设置set implicit_transaction on语句,将隐式事务模式打开,下一个语句会启动一个新的事物,再下一个语句又将启动一个新事务。
事务的示例:
begin tran
select * from student where sname=@name and sage=@age
if @@ERROR<>0
begin
rollback tran
insert into student(studentid,sname,sage) values (1,@name,@age)
return 0
end
else
begin
commit tran
select * from student
end
go
异常
错误函数:
TRY...CATCH 使用错误函数来捕获错误信息。 ERROR_NUMBER() 返回错误号。 ERROR_MESSAGE() 返回错误消息的完整文本。此文本包括为任何可替换参数(如长度、对象名称或时间)提供的值。 ERROR_SEVERITY() 返回错误严重性。 ERROR_STATE() 返回错误状态号。 ERROR_LINE() 返回导致错误的例程中的行号。 ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
异常示例:
begin try
select 1 / 0;
end try
begin catch
exec proc_error_info; --调用错误消息存储过程
end catch
go
SQL知识整理三:变量、全局变量、视图、事务、异常的更多相关文章
- SQL知识整理一:触发器、存储过程、表变量、临时表
触发器 触发器的基础知识 create trigger tr_name on table/view {for | after | instead of } [update][,][insert][,] ...
- SQL知识整理二:锁、游标、索引
锁 锁的模式 锁模式 描述 共享(S) 用于不更改或不更新数据(只读操作),如SELECT语句 更新(U) 用于可更新的资源中.防止当多个会话在读取.锁定以及随后可能进行的资源更新时发生常见形式的死锁 ...
- 11、SQL基础整理(变量)
变量 定义变量:declare @hello varchar(20) 赋值:set @hello = ‘你好’ select(结果框显示)/print(消息框显示) @hello *三行必须同时 ...
- 数据库知识整理<三>
保证数据的完整性: 3.1数据完整性概述: 数据完整性的意义:我们知道数据库能防止储存垃圾数据,RDBMS实现该功能主要是通过维护数据完整性来实现的.根据数据完整性实施方法我们将其分为四类:实体完整性 ...
- TFS二次开发、C#知识点、SQL知识总结目录
TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...
- TFS二次开发、C#知识点、SQL知识
TFS二次开发.C#知识点.SQL知识总结目录 TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数
阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...
随机推荐
- servlet的匹配规则,兼谈/与/*
客户端通过URL地址访问服务器(servlet容器)资源,所以servlet若要能对外提供服务,必须要将程序按照java规范将其映射到对应的URL上,映射的规则是需要开发人员在WEB.XML中显示指定 ...
- (转载)solr时区问题解决方案
solr默认的使用的是utc格林尼治时间,与我们的GMT+8相差8个小时,网上好多解决办法是在自己应用中的时间上加8个小时和减8个小时做变换:或者不用date类型,改为long. 个人感觉这两个办法都 ...
- C正则库做DNS域名验证时的性能对比
C正则库做DNS域名验证时的性能对比 本文对C的正则库regex和pcre在做域名验证的场景下做评测. 验证DNS域名的正则表达式为: "^[0-9a-zA-Z_-]+(\\.[0-9a ...
- C++程序员如何入门Unreal Engine 4
摘要: 一位程序员网友小保哥分享自己的UE4快速上手过程,只是笔记,52VR做了一点更加适合阅读的修改,整理给大家. 首先,本文只是针对有比较熟练C++技能的程序员,他可以没有任何图形学或游戏引擎方面 ...
- java运行环境和运行机制
先来介绍三个概念: JVM----JAVA virtual machine java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runt ...
- Coursera台大机器学习课程笔记5 -- Theory of Generalization
本章思路: 根据之前的总结,如果M很大,那么无论假设泛化能力差的概率多小,都无法忽略,所以问题转化为证明M不大,然后上章将其转化为证明成长函数:mh(N)为多项式级别.直接证明似乎很困难,本章继续利用 ...
- 移动端 iframe的使用
对于iframe的设定有几个css属性常用 overflow:hidden;width:100%;当这样使用inframe内部中使用overflow,iframe会被撑开,导致width与overfl ...
- easyUI+springMVC的DataGrid-demo
DataGrid (一).搭建springMVC: 错误:无法访问HTML页面,HTTP Status 404- 原因:springMVC拦截了静态资源的访问 解决方案:方案①:(web.xml下)& ...
- Your intuition 你的直觉
If you’re thinking just like everyone else, you aren’t really thinking. Follow your intuition. Do wh ...
- vbs 中文字符串
vbs 字符串包含中文字符,文件以UTF-8无BOM格式保存,就会出现“编译器错误: 未结束的字符串常量”错误,改以ANSI保存就没有这个问题