Transact -SQL 语句
Transact- SQL 概述
了解
- SQL 结构化查询语言
- Transact-SQL 语言是 SQL 的增强版本
种类
- 数据
- 定义
- 操纵
- 控制
- 常用
- 事务管理
- 流程控制
- 附加的语言元素
常量与变量
常量
- 常量指具体的值,不需要声明
变量
分类
- 全局
- 局部
局部变量声明
- 格式
DECLARE
{@local_variablep[AS]data_type
|@cursor_variable_nameCURSOR
}[,…n]
- 给声明的局部变量赋值
set@local_variable=expression
select@local_variable=expression[,…n]
运算符
算数运算符
运算符 | 说明 |
---|---|
+ | 加法运算 |
— | 减法运算 |
* | 乘法运算 |
/ | 除法运算,若两个表达式都是整数,则结果取整数值,小数值将略去 |
% | 取模运算,返回两数相除后的余数 |
位运算符
运算符 | 说明 |
---|---|
& | 位与逻辑运算 |
l | 位或逻辑运算 |
^ | 位异或逻辑运算 |
比较运算符
运算符 | 说明 |
---|---|
= | 等于 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
<> | 不等于 |
!= | 不等于 |
!> | 不大于 |
!< | 不小于 |
逻辑运算符
运算符 | 说明 |
---|---|
all | 如果一组的比较都为true,则结果为true |
and | 都为true,则为true,否则为false |
any | 任何一个为true,则为true |
between | 操作数在某个范围,则为true |
exists | 若子查询中包含某些行,则为true |
in | 若操作数中等于表达式中的一个,则为true |
like | 操作数与某种模式相匹配,则为true |
not | 对任何其他布尔运算符的结果值取反 |
or | 任何一个为true,结果为true |
some | 在一组比较中,有些比较为true,结果为true |
其他运算符
- 赋值运算符
- 连接运算符
- 一元运算符
|
运算符 | 描述 |
---|---|
+ | 数值为正 |
- | 数值为负 |
~ | 返回数字的逻辑非 |
表达式
- 表达式是一个或者多个值、运算符和 SQL 函数的组合。每个表达式都有值,通过求值可以得到。
注释
目的
- 养成好的开发习惯
- 对代码进行说明诊断
内容
- 程序名称
- 作者名称
- 变量说明
- 代码更改日期
- 算法描述
添加
- 双联字符(单行注释)——“–”
- 正斜杠星号(多行注释)——“/…/”
流程控制语句
begin…end 语句块
语法格式
BEGIN
{
sql_statement|statement_block
}
END
选择结构
if……else 语句
单条件使用
语法格式
IF Boolean_expression
{sql_statement| statement_block}
ELSE
{sql_statement| statement_block}
嵌套使用
case语句
- 多个条件进行判断
语法格式
case input_expression
WHEN where_expression THEN result_expression
[...n]
[ELSE else_result_expression]
END
##循环
while语句
语法格式
WHILE Boolean_expression
{sql_statement|statement_block}
[BREAK]
{sql_statement|statement_block}
[CONTINUE]
{sql_statement|statement_block}
goto语句
作用
- 减少代码量
错误处理语句
try…catch语句
####代码格式
BEGIN TRY
{sql_statement|statement_block}
END TRY
BEGIN CATCH
{sql_statement|statement_block}
END CATCH
waitfor延迟语句
语法格式
waitfor
{
delay time
|time time
}
函数
数学函数
函数 | 描述 |
---|---|
ABS | 返回数值表达式的绝对值 |
EXP | 返回指定表达式以e为底的指数 |
CEILING | 返回小于或等于数值表达式的最小整数 |
FLOOR | 返回小于或等于数值表达式的最大整数 |
LN | 返回数值表达式的自然对数 |
LOG | 返回数值表达式以10为底的对数 |
POWER | 返回对数值表达式进行幂运算的结果 |
ROUND | 返回舍入到指定长度或精度的数值表达式 |
SIGH | 返回数值表达式的“+”“—”“0” |
SOUARE | 返回数值表达式的平方 |
SQRT | 返回数值表达式的平方根 |
字符串函数
字符串函数 | 描述 |
---|---|
ACSII | 返回指定ASCII代码的字符 |
CHAR | 返回指定ASCII代码的字符 |
LEN | 返回指定字符串表达式的字符数,不包含尾随的空格 |
LEFT | 返回字符串中从左边开始指定个数的字符 |
LOWER | 将大写字符数据转换为小写 |
LTRIM | 删除前导空格字符串 |
REPLICATE | 复制函数,以指定的次数重复字符表达式 |
REPLACE | 替换函数 |
RIGHT | 返回字符串中从右边开始指定个数的字符 |
RTRIM | 删除尾随空格函数 |
SPACE | 空格函数,返回由重复的空格组成的字符串 |
STR | 数字向字符转换函数 |
SUBSTRING | 子串函数,返回字符表达式、二进制表达式、文本表达式或图像表达式的一部分 |
UPPER | 大写函数 |
聚合函数
常用聚合函数 | 作用 |
---|---|
AVG | 平均数 |
COUNT | 结果的记录数 |
MAX | 最大值 |
MIN | 最小值 |
SUM | 列的数值的和 |
日期和时间函数
日期函数 | 描述 |
---|---|
DATEADD | 返回给指定日期加上一个时间间隔后的新达特time值 |
DATADIFF | 返回跨两个指定日期的日期边界数和时间边界数 |
DATENAME | 返回标识指定日期的指定日期部分的字符串 |
DATEPART | 返回标识指定日期的指定日期部分的整数 |
DAY | 返回一个整数,标识指定日期的天DATEPART部分 |
GETDATE | 以datetime值得SQL service标准内部格式返回当前系统日期还有时间 |
GETUTCDATE | 返回表示当前的UTC时间 |
MONTH | 返回标识指定日期的“月”部分的整数 |
YEAR | 返回表示指定日期的年份的整数 |
标量值函数
创建语法格式
CREAT FUNCTION function_name
([{@parameter_name scalar_parameter_data_type[=default]}[,…n]])
RETURENS scalar return_data_typr
[WITH ENCRYPTION]
[AS]
BEGIN
function_body
RETURN scalar_expression
END
表值函数
语法格式
CREATE FUNCTION function_name
([{@parameter_name scalar_ parameter_data_type[= default],...n]])
RETURNS TABLE
[WITH ENCRYPTION]
[AS]
RETURN (select_statement)
系统与元数据函数
- convert 数据类型转换
- current_user 返回当前用户的名称
- isdate 判断是否为有效日期
- isnull 用一个指定替换值替换任意空值
- isnumeric 判断输入是否为数值
游标
概述
- 数据访问机制
- 用户访问单独的数据行并操作
组成
- 游标结果集(由定义游标的select语句返回的行的集合)
- 游标位置(执行结果集中的某一行的指针)
特点
- 返回完整的结果集
- 允许定位在结果集的特定行
- 从结果集的当前位置检索若干行
- 支持对结果集中当前位置的行进行数据修改
- 可以为其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持
- 提供脚本、存储过程和触发器中使用的访问结果集中数据的T-SQL语句
声明
语法格式
DECLARE cursor_name[INSENSITIVE][SCROLL]CURSOR
FORselect_statement
[FOR{READ ONLY|UPDATE[OF column_name[,...n]]}]
操作游标
打开游标
OPEN{ {[GLOBAL]cursor_name}|cursor_variable_name}|cursor_name
检索游标
FETCH
[[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@navr}|RELATIVE{n|@nvar}]FROM]
{{[GLOBAL]cursor_name}|@cursor_variable_name}
[INTO@variable_name[,...n]]
关闭游标
CLOSE{{[GLOBAL]cursor_name}|cursor_variable_name}
释放游标
DEALLOCATE{{[GLOBAL]cursor_name}|cursor_variable_name}
判断游标提取状态
@FETCH_STATUS
- 取值
- 0——fetch语句失败
- -1——失败或者行不在结果集中
- -2——提取的行不存在
事务
作用
- 对语句进行封装
语句
BEGIN TEANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
SAVE TRANSACTION
事务模式
自动提交事务
- 每条单独的语句都是一个事务
显式事务
- 每个事务以begin transaction语句显式开始,以commit或rollback语句显式结束
隐式事务
- 在前一个事务完成时新事务隐式启动,以commit或rollback语句显式完成
批处理级事务
- 只应用多个活动结果集(MARS)。在MARS会话中启动的transact_sql显式或隐式事务变为批处理级事务
XACT_ABOUT选项
作用
- 指定当SQL语句错误是,SQL Service是否自动回滚到当前事务
语法格式
SET XACT_ABOUT{ON|OFF}
- 当SET XACT_ABOUT为ON,执行语句时产生错误,则事务终止并回滚
- 当SET XACT_ABOUT为OFF,回滚产生错误的语句,事务继续处理
- 设置是在执行或者运行时设置
嵌套事务
锁
概述
- 事务向系统提出需求,对被操作数据加锁
- 可以锁定行、页、表、盘区、数据库
- 确保在用户并发访问数据库的时候不受干扰
分类
- 共享(s)
- 读操作
- 多个事务科封锁一个共享单位的数据
- 任何事务都不能修改加S锁的数据
- 加S锁的数据读取完毕后,S锁立即被释放
- 独占(x)
- 写操作
- 仅允许一个事务封锁此共享数据
- 其他事务等到X锁被释放后才可以对该数据访问
- X锁到事务结束后才被释放
- 更新(u)
- 用来预定要对此页施加X锁,允许其他事务读,但是不允许再施加U锁或者X锁
- 当被读取数据也将要被更新时,则升级为X锁
- U锁一直到事务结束时才可以被释放
死锁
###概述
- 指大于或等于两个的进程在执行时,因争夺资源造成的互相等待的现象
- 无外力作用,都将无法推进下去
产生死锁条件
- 互斥条件
- 请求与保持条件
- 不剥夺条件
- 循环等待条件
上述条件之一不满足,就不会产生死锁
解除与预防
- 按同一顺序访问对象
- 避免事务中的用户交互
- 保持事务简短并在一个批处理中
- 使用低隔离级别
- 使用绑定连接
建议
- 频繁使用表用集簇化索引
- 避免一次性影响大量记录的T-SQL语句
- 让UPDATE和DELETE语句使用索引
- 使用嵌套事务是,避免提交和回退冲突
- 对一些数据不需要几十读取更新值得表在写SQL的时候在表的后台加上(nolock)
Transact -SQL 语句相关推荐
- 交互式SQL(Transact SQL,TSQL)
交互式SQL(Transact SQL,TSQL) 它是SQL Server的查询语言.提供以下命令: · 创建和数据库对象. · 访问和修改数据. · 数据聚合(aggregation,又称聚集). ...
- SQL server添加主外键约束 sql语句
---添加主键约束 <br> alter table 表名 <br> add constraint 约束名 primary key (主键) <br> ...
- mysql 删除外键 sql语句_sql server ql语句删除外键和删除
sql server ql语句删除外键和删除 alter table tablename add constraint ordersrelationship foreign key mployeeid ...
- Transact SQL 常用语句以及函数
Transact SQL 语 句 功 能 ======================================================================== --数据 ...
- SQL Server中的几个方法和Transact SQL 常用语句以及函数[个人推荐]
--数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 -- ...
- Transact SQL 语 句
Transact SQL 语 句 功 能 ======================================================================== -- ...
- 合肥工业大学—SQL Server数据库实验三:SQL语句创建和删除基本表
SQL语句创建和删除基本表 1. 编写6个基本表 2. 修改基本表结构,完整性约束条件 3. 用Drop table 语句删除基本表 1. 编写6个基本表 设有简单教学管理的6个关系模式如下: 系(系 ...
- 怎么查找执行比较慢的sql语句
一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句. 2,long_query_tim ...
- 练习用基础SQL语句
http://www.cnblogs.com/zxlovenet/p/3728842.html 本文语句大部分SQL语句来自<数据库系统概论>(第四版)王珊&萨师煊 ,是我们上课用 ...
最新文章
- 认识下PHP如何使用 phpmailer 发送电子邮件
- Google Maglev 牛逼的网络负载均衡器(转)
- php使用strstr函数 ,判断字符串A中是否含有字符串B
- Java 必看的 Spring 知识汇总!
- java hevc和heif_iOS 影音新格式 HEIF HEVC
- 软件工程(总体设计②设计原理)
- UI upload多文件上传
- 同时多次调用存储规程_本体技术视点 | 神奇的Merkle树是如何实现存储层优化的?...
- django Rest Framework----认证/访问权限控制/访问频率限制 执行流程 Authentication/Permissions/Throttling 源码分析...
- Python Flask Web 第四课 —— 模板引擎Jinja2
- Git版本控制及Goland使用Git教程
- 软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
- 如何免费复制网页内容
- npm i --legacy-peer-deps
- python统计三国_如何用python对《三国演义》、《红楼梦》等名著开展词云分析及字频统计、出场统计等工作。...
- 【洛谷1489】猫狗大战【BZOJ1899】【ZJOI2004】Lunch午餐
- 30岁哥大计算机博士生遇刺身亡!论文刚被顶会接收,曾留学中国
- 200卡拨号上网设置
- Win10获取C盘所有权限,所有者TrustedInstaller 变更administrators【强行更改权限有风险,请谨慎使用,初次更改后windows建就打不开开始栏了】
- mysql 计算农历_MySQL 获取农历年函数