【计算机三级数据库技术】第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
目录
相关文章
|
22天前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
33 1
|
10天前
|
SQL Java 关系型数据库
探索Java数据库连接的奥秘:JDBC技术全攻略
探索Java数据库连接的奥秘:JDBC技术全攻略
36 8
|
26天前
|
Java 数据库连接 网络安全
JDBC数据库编程(java实训报告)
这篇文章是关于JDBC数据库编程的实训报告,涵盖了实验要求、实验环境、实验内容和总结。文中详细介绍了如何使用Java JDBC技术连接数据库,并进行增删改查等基本操作。实验内容包括建立数据库连接、查询、添加、删除和修改数据,每个部分都提供了相应的Java代码示例和操作测试结果截图。作者在总结中分享了在实验过程中遇到的问题和解决方案,以及对Java与数据库连接操作的掌握情况。
JDBC数据库编程(java实训报告)
|
16天前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
42 5
|
16天前
|
Cloud Native 数据库 开发者
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
|
16天前
|
Cloud Native 关系型数据库 分布式数据库
云原生数据库2.0问题之PolarDB利用云计算技术红利如何解决
云原生数据库2.0问题之PolarDB利用云计算技术红利如何解决
|
19天前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
54 2
|
4天前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
13 0
|
6天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
15 0
下一篇
DDNS