【计算机三级数据库技术】第8章 数据库后台编程技术--附思维导图

简介: 本文介绍了数据库后台编程的关键技术,包括存储过程、用户定义函数、触发器和游标,并附有思维导图。

1.png

1 存储过程

1.1 创建

(1)传参的存储过程

Create PROC [shema_name] proc_name
@变量名1 as varchar(20)
@变量名2 int 
AS 
select ....
where Address = @变量名1

(2)带返回值的存储过程

Create PROC [shema_name] proc_name
@变量名1 int
@变量名2 int output
AS 
select ....
Set  @变量名2 = 。。。

1.2 执行

Declare @res int
Exec Proc_name  5,7,@res output
print @ res

1.3 删除

Drop PROC proc_name

2 用户定义函数

2.1 创建和调用标量函数

(1)标量函数是返回单个数据值的函数

Create Function schema.function_name
(@cubelengh int,@cubewidth int ,@cubeheight int)
Return int
AS 
Begin
RETURN (@cubelength,@cubewidth,@cubeheight)
end

(2)调用:Select dbo.function_name(4,6,8)%dbo是架构名

2.2 创建和调用内联表值函数

(1)内联表函数的返回值是一个表,该表的内容是一个查询语句的结果

Create Function schema.function_name
(@cubelengh int,@cubewidth int ,@cubeheight int)
Return Table
AS 
RETURN (select ....)

2.3 创建和调用多语句表值函数

(1)基本概念
多语句表值函数的功能是视图和存储过程的组合,可以利用多语句表值函数返回一个表,表中的内容可由复杂的逻辑和多条SQL语句构建(类似于存储过程)可以在select 语句的From子句中使用多语句表值函数(同视图)

Create Function schema.function_name
(@cubelengh int,@cubewidth int ,@cubeheight int)
Returns @return_variable Table
AS 
BEGIN
....
RETURN
END

2.4 删除用自定义函数

Drop FUNCTION schema.function_name

3 触发器

3.1 基本概念

是一种特殊的存储过程,在于不需要由用户来直接调用,而是在对表中的数据进行UPdata、INsert、Delete操作时自动触发执行的。触发器是用于保证业务规则和数据完整性,其主要优点是用于可以用编程的方法来实现复杂的处理逻辑和商业规则,增强了数据完整性月约束的功能

3.2 创建触发器删除触发器

(1)创建

Create Trigger schema.trigger_name
On [Table|view]
For | After |INstead of
INSERT | UPDATE | DELETE
As ...
        FOR|After
                指定触发器只有在引发的SQL语句中指定的操作都已经成功执行,并且所有的约束检查也成功完成后,才执行此触发器(后触发器)
        Instead Of
                指定执行触发器而不是执行执行触发器执行的SQL,从而代替出发语句的操作(前触发器)
        INSERT | UPDATE | DELETE
                引发触发器执行的操作,若同时指定多个操作,则各操作之间用逗号分隔
    注意:After触发器,可以在同一个中操作上间建立多个触发器。但是对于Instead OF前触发器,只能建立一个触发器
  • 创建后触发器
                Create Trigger OperateCon
ON Table_sale For INSERT
AS
IF ....sql
Begin
ROLLBACK
END
ELSE 
....sql
  • 创建前触发器
Create Trigger OperateCon
ON Table_sale INSTEAD OF INSERT
AS
IF ....sql

(2)两个临时工作表

  • DELETED表
    用于存储Delete和UPdate语句所影响的行的副本,在执行Delete操作,被删除的数据被保存到Delete表中,在执行Update操作时,对于被修改操作影响的所有数据行,将更改前的数据保存到Delete表中,Deleted表和执行操作的基本表通常没有相同的数据行
  • INSERTED表
    用于存储INsert和UPdate语句所影响的行的副本,在执行INsert操作时,新插入的数据同时被保存到INserted表中,在执行Update操作时,对被修改操作影响的所有数据行,将更改后的数据保存到INSerted表中。INserted表中的内容是执行操作的基本表中新数据行的副本
  • 注意:UPdate操作类似于在删除之后执行插入:首先在执行操作的基本表中删除更新前的行,并将这些行复制到Deleted表中,然后将更新后的新行插入到执行操作的基本表和INSERTED表中

(3)删除

            DROP TRigger trigger_name

4 游标

4.1 游标的组成

游标结果集
游标当前指针

4.2 特点

    允许定位结果集中特定行
    允许从结果集的当前位置检索一行或多行
    支持对结果集中当前行的数据进行修改
    为由其他用户对显示在结果集中的数据所做的更改提供不同级别的可见性支持

4.3 使用游标

(1)声明游标

declare cursor_name [INSENSITIVE][SCROLL] CURSOR 
FOR select_sql
[FOR {Read ONLY |UPDATE of column_name}]
                INSENSITIVE:定义一个游标,以创建将由游标使用的数据的临时副本
                SCROLL:指定所有的提取选项均可用

(2)打开游标

            open cursor_name

(3)提取数据

FETCH [[NEXT | PRIOR | FIRST |LAST]
| ABSOLUTE n
| RELATIVE n
FROM
]
cursor_name [INTO @variable_name]
            NEXT:返回紧跟当前行之后的数据行
            PRIOR:返回紧邻当前行前面的数据行,并且当前行递减为结果行
            FIRST:返回游标中第一行并将其作为当前行
            LAST:返回游标中的最后一行并将其作为当前行
            ABSOLUTE n:n为正数,返回从游标开始第一行开始的第n行。n为负数,返回从游标最后一行开始之前的第n行
            RELATIVE n:如果n为正数,则返回当前行之后的第n行,并将返回的行称为新的当前行。为负数,返回当前行之前的n行

注意:在对游标数据进行提取的过程中,可以使用@@FETCH_STATUS全局变量判断数据提取的状态

(4)关闭游标

            CLOSE cursor_name

(5)释放游标

            DEALLOCATE CS_cursor

4.4 示例

Declare CS_cursor SCROLL CURSOR FOR
select Cname,BirthDate FROM Table_customer
Join SC ON S.Sno = SC.Sno
where Address Like' 北京市海淀区'
Order By BirthDdate DESC
Open CS_cursor
FETCH LAST FROM CS_cursor  --提取游标中的最后一行数据
FETCH ABSOLUTE 4 FROM CS_cursor --提取游标中的第4行数据
CLOSE CS_cursor
DEALLOCATE CS_cursor
目录
相关文章
|
5月前
|
SQL Java 数据库连接
除了JDBC,还有哪些常见的数据库访问技术?
除了JDBC,还有哪些常见的数据库访问技术?
481 2
|
12月前
|
存储 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
阿里云PolarDB云原生数据库在TPC-C基准测试中,以20.55亿tpmC的成绩打破性能与性价比世界纪录。此外,国产轻量版PolarDB已上线,提供更具性价比的选择。
|
11月前
|
Cloud Native 关系型数据库 分布式数据库
|
12月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
11月前
|
存储 关系型数据库 分布式数据库
|
6月前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
609 8
|
6月前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
424 1
|
11月前
|
存储 关系型数据库 分布式数据库
|
6月前
|
SQL 数据管理 BI
数据库操作三基石:DDL、DML、DQL 技术入门指南
本文围绕数据库操作核心语言 DDL、DML、DQL 展开入门讲解。DDL 作为 “结构建筑师”,通过CREATE(建库 / 表)、ALTER(修改表)、DROP(删除)等命令定义数据库结构;DML 作为 “数据管理员”,以INSERT(插入)、UPDATE(更新)、DELETE(删除)操作数据表记录,需搭配WHERE条件避免误操作;DQL 作为 “数据检索师”,通过SELECT结合WHERE、ORDER BY、LIMIT等子句实现数据查询与统计。三者相辅相成,是数据库操作的基础,使用时需注意 DDL 的不可撤销性、DML 的条件约束及 DQL 的效率优化,为数据库学习与实践奠定基础。
|
7月前
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
286 0