• 一周速学SQL Server(第六天)


    相关文章链接:

    一周速学SQL Server(第一天)

    一周速学SQL Server(第二天)

    一周速学SQL Server(第三天)

    一周速学SQL Server(第四天)

    一周速学SQL Server(第五天)

    一、自定义函数之标量函数

    1.1、自定义函数三大类

    1)标量函数:对单一值的操作,返回单一值。有begin end包括起来。

    2)内嵌表值函数:相当于参数化的视图,返回的是一个表。没有begin end包括起来。

    3)多声明表值函数:返回的是一个表,有begin end包括起来。返回的表数据由函数体中的语句插入的,可以多次查询使用,甚至可以多次筛选与合并,弥补了内嵌函数的不足。

    1.2、标量函数

    1)语法:

    1. create function [dbo].函数名(传入的参数 参数类型 默认值)
    2. returens 标量函数返回值类型
    3. with encryption  ——若要加密需写此条代码
    4. as
    5. begin
    6. T-SQL语句(不可以有修改数据的操作)
    7. return表达式/
    8. end

     

    注意:1)创建时,若指定了函数所有者,调用时必须指定函数所有者。

               2)调用时,若函数指定了默认值,在参数时使用defalut则使用默认值传参。若没有指定默认值,使用default则使用NULL传参。

               3)语法上returns后加返回值类型。

    二、自定义函数之内嵌表值函数

    1)概念:功能上相当于参数化的视图。返回的是一个表,没有begin end包裹。

    2)语法

    1. create function [dbo].函数名(传入的参数 参数类型 默认值)
    2. returns table
    3. as
    4. returnselect语句)

    3)注意点

            returns后加返回值类型,只能返回table!

            as后面是没有beign end只能是return(select语句)

    三、自定义函数之多声明表值函数 

    3.1、概念

            也称为多语句表值函数。返回的是一个表,可定义表名、表的结构。是标量函数与内嵌标值函数的结合,弥补了内嵌标值函数的不足。

    3.2、语法

    1. create function [dbo].函数名(传入的参数 参数类型 ,传入的参数 参数类型)
    2. returns @表名 table ——表结构定义
    3. as
    4. begin
    5. --函数体
    6. Insert into @表名(要插入的列,要插入的列)select 查询结果
    7. return
    8. end

    3.3、注意点 

    1)函数所有者定义时写了,调用时就必须写,一般是dbo

    2)return后面什么都不跟

    3)函数一般做查询使用,不能数据修改。

    4)如果能用内嵌表值函数能够满足,就不要用多声明表值函数。

    3.4、应用

    应用:比较灵活,可以在select中使用;被直接应用;通过递归方法得到使用函数。

    四、事务的介绍

    4.1、事务是什么?

            一系列T-SQL语句构成列事务操作的逻辑工作单元。事务是为了完成一定的业务逻辑,将操作封装起来,与其他语句形成边界,形成相对独立的工作定义。

            通过事务可以提高数据的安全性;增强了数据的处理效率;维护数据库的完整性。

    4.2、事务应用:多个表操作

    处理过程中,出现了某种错误或系统伺机或断电,数据并没有保存到数据库。

    4.3、事务处理结果

    两种:1)所有操作并未发生任何错误,事务就会全部被提交;

                2)如果有某一个操作发生错误或故障,最终所有操作都会全部回滚到最初状态。

    4.4、事务的特性(4个特性ACID

    1)原子性(Atomic):将事务可做一个工作单元,所有元素作为一个整体提交或回滚,各个元素是不可分割的。一个操作。

    2)一致性(ConDemoltent):数据状态必须保存一致,以保证数据完好无损。

    3)隔离性(Isolated):多个事务之间是彼此隔离的。表明事务的独立性。

    4)持久性(Durability):事务提交后对数据库的更改是永久保存的,即使系统出现故障,也会保留,因为其真实的修改了数据库。

    五、数据库事务创建

    1)事务分为显示事务和隐式事务。

    2)事务创建步骤:开启事务->提交事务->回滚事务

    显示事务

    隐式事务

    开启事务

    begin tran

    set implicit_transactions on

    提交事务

    commit tran

    commit tran

    回滚事务

    rollback

    rollback

    关闭事务

    /

    set implicit_transactions off

    3)如何调用事务一般放在存储过程中

    六、事务并发问题

    6.1、如何发生的?

    多个用户对用一条数据进行访问,

    6.2、事务并发问题

    1)丢失或覆盖更新:一个事务在不知道其他事务存在的情况下,对数据进行修改,而造成的数据丢失。

    2)脏读:一个事务读取了其他事务并未提交的更新。

    3)不可重复读:当多个事务访问同一条数据,每次读取的数据不同,称为不可重复读。

    4)幻象读:第一次读取的数据行与第二次读取的不一致,第二次读取到的数据是第一次读取时不存在的。

    6.3、解决

    1)设置事务隔离级别:事务接受的不一致数据访问级别

    隔离级别太低容易造成并发问题;

    隔离级别设置高可有效降低并发问题

    2)read committed 默认的级别(常用)——可以避免脏读问题,会产生不可重复读和幻象读。

    3)read uncommitted 相当于0级——4种并发问题都可能产生。

    4)repeatable read ——可以避免脏读,不可重复读,会产生幻象读。

    5)serializable 最高级别——可以有效避免4种并发问题。

    6.4、怎样设置隔离级别

    set tran isolation level 隔离级别

  • 相关阅读:
    TallComponents TallPDF.NET 5.X Crack
    KoTime:Idea插件-一键代码热更新、方法分析,依赖检查等
    okhttp
    mac安装java
    sass安装步骤、概述、基本语法等
    风机5G智能制造工厂工业物联数字孪生平台,推进制造业数字化转型
    如何将两台Mac显示器设置为单个屏幕配置
    Gateway服务网关
    【从头构筑C#知识体系】2.C# 2.0
    几款实用的照片变漫画免费软件,千万别错过
  • 原文地址:https://blog.csdn.net/beiye_/article/details/127126053