共享锁:读取数据时, 事务默认会为所依赖的数据资源请求共享锁, 读操作一完成,就立即释放资源上的共享锁(不是长期独有占用)(表后边加with (xlock))
存储过程的概念和分类
存储过程是一组预先编译好的T-SQL代码, 作为一个整体用于执行特定的操作, 存储过程属于数据库对象,它们存放在数据库中, 需要时用户可以调用, 存储过程首次执行的时候, Sql Server创建执行计划并把它存储在计划内存缓存中,然后Sql Server就能对存储过程的后续执行重用计划, 合同没有编译且没有准备好的等价即查询相比,重用计划使得存储过程提供了更快速更可靠的性能
存储过程是数据库对象
存储过程可以包含数据操作语句,变量,逻辑控制语句等
存储过程的优点:执行速度快,允许模块化程序设计,提高系统安全性,减少网络流通量
系统存储过程 (常用的:sp_databases, sp_tables, sp_columns, sp_help, sp_helpconstraint, sp_helpindex, sp_helptext)
用户自定义存储过程
有默认值就必须都有默认值 没有就都没有
row_number 生成连续递增行号
游标和触发器
使用的五个步骤
声明游标(declare cursor for),打开游标(open),提取数据(循环),关闭游标(colse),释放游标(deallocate)
insensitive(使用游标时,对源表数据的更新不敏感,并且不允许通过游标修改源表数据)
scroll 设置fetch语句中参数first(上一条),last,prior,next,relative,absolute
read only 只读
update 定义可通过游标更新的列
fetch into select列的数据和变量列表数据一致
@@fetch_status全局变量 等于 0 是表示成功读取到数据行了
游标默认指向第一条记录之前
游标是逐条处理的工具
动态SQL EXEC(‘语句’)
触发器(跨表的check)(一种特殊的存储过程)(强制的约束)
完成复杂的数据约束,检查所做的sql操作是否允许,修改其它数据表里的数据,调用更多的存储过程,返回自定义的错误信息,更改原本要操作的sql语句,防止数据表结构被更改或数据表被删除
优点:自动的,层叠更改,强制限制,可以用于跟踪
dml触发器, ddl触发器, 登录触发器
dml触发器:表或表的视图上执行可以触发,触发器和触发的语句在触发器内单个事务对待,检测到的错误,自动回滚
after触发器:记录已经更改完之后触发,检测到错误,可以回滚本次操作
instead of:取代原本要进行的操作
create trigger(创建触发器)
权限默认为数据库所有者,不得转让,严重减慢数据修改操作的性能,不能对系统表和临时表创建,不记录日志的更新不会引起dml触发器的触发
encryption 加密(for | after 都代表after触发器)
inserted表(存储着insert操作插入的行和update操作的新行) deleted表(村粗这update操作的旧行和delete操作删除的行)(两个逻辑表,有系统来维护,不允许用户直接修改)
第十章 函数
函数是用于封装频繁执行的逻辑的例程
存储过程只能用exec调用 不能放from后边当表来用(可以有返回值,仅限于整形)
任何必须执行的代码都可调用函数
函数是由一条或多条T-SQL语句组成的例程,可用于封装代码以便进行复用。函数接受零个或多个输入参数,并返回标量值或表,函数不支持输出参数
函数可以返回标量值,可以返回表
udf 用户定义函数(标量函数((用于将当前的值转换为新值,根据参数进行复杂的查找)返回单个数据值,类型在returns子句中定义),
内联表值函数(返回一个表,单个select语句的结果),
多语句表值函数(由一条或多条T-SQL语句构建的表(和存储过程不同,多语句表值函数可以在select语句的from子句中进行引用)))
create function (函数名) returns(返回值类型)(子句)begin return (函数体) end
内联表值函数:通常使用视图的任何地方使用内联表值函数(内联用户定义函数)
create function ruturns + 变量名(未来返回的表) + table(类型) + (表结构 类型字段的定义) + begin return(后边什么也不加) end
内联表值函数 可以有逻辑结构
聚合函数一般出现在select子句或having子句中
Sql 知识点
1. 数据完整性的实现方式
2. 常用系统存储过程和系统变量的作用
3. 区分批量插入数据的两种语句
4. 掌握单条select语句的执行过程和书写顺序
5. 分组 分组后的筛选 排序的应用
6. 子查询的应用
7. 事务的定义 特性,类型,事务相关操作所使用的语句
8. 存储过程的概念 优点 将复杂操作封装到存储过程中
9. 触发器工作原理
10 三大范式的规范定义
11. 视图的概念 优点 视图的应用
12. 游标的概念,利用游标解决实际问题