数据库系统-变量|注释|批处理|流程控制|存储过程函数|游标|事务|锁


变量|注释|批处理|流程控制|存储过程函数|游标|事务|锁

SQL Server编程结构

变量

声明局部变量

1
2
DECLARE @局部变量名 数据类型
[, @局部变量名 数据类型]

可以同时定义多个变量,中间用逗号隔开

赋值局部变量

为局部变量赋值可以用SET或SELECT语句

1
2
3
4
5
6
SET @变量名=表达式

SELECT1,..,列n
@变量名=表达式
FROM 表名
WHERE 条件表达式

注: 如果SELECT语句返回多个值,则局部变量取最后一个返回值。例:

1
2
3
SELECT @Sname = Sname 
FROM Student
WHERE Ssex = '男'

显示信息

Print语句

print语句只能显示字符数据类型

注释

1
2
3
/*注释文本*/

-- 注释文本

批处理

批处理是成组执行的一条或多条T-SQL指令

GO语句用于指定批处理语句的结束处,单独使用一行。本身不是T-SQL的部分

注意

不能在同一个批处理处,先删除,后使用

不在在同一个批处理处,先修改,后使用

流程控制语句

BEGIN…END

1
2
3
4
BEGIN
语句
....
END

IF语句

IF-THEN语句
1
2
3
IF condition THEN
Sequence_of_statements;
END IF;
IF-THEN-ELSE语句
1
2
3
4
5
IF condition THEN
Sequence_of_statements1;
ELSE
Sequence_of_statements2;
END IF;
嵌套的IF语句

在THEN和ELSE子句中还可以包含IF语句

例题

Y5Mhaq.png

YTFdDP.png

WHILE

GOTO

WAITFOR

RETURN

CASE

存储过程(重点)

image-20230628181507337

image-20230628181658909

过程化 SQL块主要有两种类型,即命名块和匿名块

匿名块每次执行时都要进行编译,它不能被存储到数据库中,也不能在其他过程化SQ L块中调用

过程和函数是命名块,它们被编译后保存在数据库中,称 为持久性存储模块) ,可以被反复调用,运行速度较快

存储过程类型

image-20230628182009733

用户自定义的存储过程

image-20230628182135119

Transact-SQL

image-20230628182251852

CLR

image-20230628182307146

系统存储过程

image-20230628182429413

设计存储过程

image-20230628182531569

存储过程的设计规则

image-20230628182741905

image-20230628182842975

限定存储过程内的名称

image-20230628182929635

对过程定义进行模糊处理

image-20230628183007931

SET语句选项

image-20230628183051168

存储过程的基本概念

存储过程是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用即可

优点

存储过程降低了客户机和服务器之间的通信量

运行效率高

方便实施企业规则

创建存储过程

image-20230628183356349

image-20230628183437951

image-20230628183520082

image-20230628183651352

带参数存储过程实例

image-20230628183914762

带输出参数实例

image-20230628184158078

带返回状态值实例

image-20230628184631093

1
2
CREATE PROCEDURE 过程名([@参数1 类型,.., @参数n 类型)
AS <过程化SQL块>
1
2
3
4
--参数不带括号也可以
CREATE PROCEDURE 过程名
@参数1 类型,.., @参数n 类型
AS

可简写成PROC

无参数

1
2
3
CREATE PROCEDURE aa
AS
SQL语句

实例

Y5Y8jf.png YTuBVA.png

默认参数

YTkJaT.png
1
2
3
4
EXECUTE exp4
EXECUTE exp4 '%...'
EXECUTE exp4 @pno='....'
EXECUTE exp4 '...', '...'

执行存储过程

Y5dghQ.png

可简写成EXEC

修改存储过程

重命名

1
ALTER PROCEDURE 过程名1 RENAME TO 过程名2;

重编译

1
2
ALTER PROCEDURE 过程名(参数)
AS

删除存储过程

1
DROP PROCEDURE 过程名;

函数

image-20230627181423609

和存储过程一样都是持久性存储模块;不同的是函数要指定返回类型

自定义函数

image-20230627181608352

标量值函数

image-20230627181919688

内联表值函数

image-20230627182303422

image-20230627182435852

多语句表值函数

image-20230627182510793

image-20230627182737834

定义

1
2
CREATE FUNCTION 函数名([参数1, ..., 参数n]) RETURNS<类型>
AS <过程化SQL块>

执行

1
CALL/SELECT 函数名([参数1, ..., 参数n])

修改

1
ALTER FUNCTION 过程名 1 RENAME TO 过程名 2; --重命名
1
ALTER FUNCTION 函数名 COMPILE; --重新编译一个函数

内置函数

image-20230627182915896

image-20230627182928490

聚集函数

image-20230627183106755

字符串函数

image-20230627183157027

image-20230627183320746

image-20230627183344420

日期函数

image-20230627183401452

image-20230627183434394

数学函数

image-20230627183446749

image-20230627183534239

image-20230627183553132

数据类型转换函数

image-20230627183659272

image-20230627183856643

image-20230627183906996

image-20230627183918226

系统函数

image-20230627183941014

image-20230627183955787

image-20230627184004014

游标

image-20230627172342865

image-20230627172413236

使用游标的步骤

声明游标

image-20230627172740854

INSENSITIVE

image-20230627172905452

SCROLL

image-20230627172923654

游标类型

image-20230627173021164

SELECT_STATEMENT

image-20230627173255471

READ_ONLY
UPDATE

打开游标

image-20230627173329463

读取数据

image-20230627173433404

image-20230627173453217

关闭游标

image-20230627173508316

释放游标

image-20230627173524423

游标运用

使用游标逐行读取

image-20230627173636851

image-20230627173713173

返回指定行记录

image-20230627173846851

使用游标修改数据

image-20230627174621686

使用游标删除数据

image-20230627174716635

使用ORDER关键字改变游标中行的顺序

image-20230627174805233

事务

image-20230628105646288

原子性

image-20230628105804097

一致性

image-20230628105840169

隔离性

image-20230628105927683

持久性

image-20230628105945187

控制事务流程

image-20230628110105411

显示事务

image-20230628110309931

启动事务

image-20230628110600141

image-20230628110724477

事务名称

image-20230628110916104

事务变量名称

image-20230628111012533

WITH MARK

image-20230628111130309

提交事务

image-20230628111229391

回滚事务

image-20230628111259526

image-20230628111835274

自动提交事务

image-20230628112708042

image-20230628112958566

image-20230628113009847

image-20230628113243700

隐式事务

image-20230628112000960

image-20230628112022358

image-20230628112344326

数据锁定

image-20230628113438700

丢失更新

image-20230628113648731

脏读

image-20230628113720153

不可重复读

image-20230628113754875

数据锁分类

image-20230628114413216

共享锁

image-20230628114641834

更新锁

image-20230628114741150

排它锁

image-20230628115601543

意向锁

image-20230628115816496

锁的粒度与时间

image-20230628180307058

自定义锁

image-20230628180354945

使用注意事项

image-20230628180427351

image-20230628180439260


你未必万丈光芒,但始终温暖有光。

本文标题:数据库系统-变量|注释|批处理|流程控制|存储过程函数|游标|事务|锁

文章作者:TTYONG

发布时间:2020年05月19日 - 14:05

最后更新:2023年06月28日 - 19:06

原始链接:http://tianyong.fun/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F-%E5%8F%98%E9%87%8F%E6%B3%A8%E9%87%8A%E6%89%B9%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E5%87%BD%E6%95%B0%E6%B8%B8%E6%A0%87%E4%BA%8B%E5%8A%A1%E9%94%81.html

许可协议: 转载请保留原文链接及作者。

多少都是爱
0%