SQL学习笔记6 视图 存储过程 事务处理

Android 13/14/15 默认授权应用权限的实现方法 Android版本修改方式实现原理13/14修改Permission.java将所有权限标记为Normal权限15修改DeviceIdleController.java + DefaultPermissionGrantPolicy.java监听应用安装并主动授权。 阅读详情

视图 VIEW

视图是虚拟的表,其只包含使用时动态检索数据的查询。视图本身不包含数据,返回的数据都是从其他表中检索出来的,一旦这些表的数据发生变化,对应的视图也将返回变化的数据。
(Access不支持视图,SQLite只支持视图只读)

其包括以下用途:

  • 简化复杂的联结
  • 重新格式化检索出的数据
  • 过滤不想要的数据
  • 创建包含计算字段的视图

正常检索数据,当需要检索订购了某种产品的顾客时,需要理解这些表的结果,并修改WHERE子句,显得很繁琐

SELECT cust_name,cust_contact,prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id = orders.cust_id
AND orderitems.order_num = orders.cust_id.order_num;
AND prod_id = '001';

创建视图

CREATE VIEW productcustomers AS
SELECT cust_name,cust_contact,prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id = orders.cust_id
AND orderitems.order_num = orders.cust_id.order_num;

检索视图

SELECT cust_name,cust_contact
FROM productcustomers 
WHERE prod_id = '001';
  • 创建视图以后,以后有类似的查询,都可以直接检索视图,简化了查询步骤
  • 与表一样,视图必须唯一命名
  • 视图可以嵌套,即查询时利用其它视图来构造视图,但严重消耗性能
  • 许多DBMS禁止在视图中使用ORDER BY子句
  • 有些DBMS要求对返回的所有列命名
  • 删除视图,可以使用DROP VIEW viewname

存储过程

存储过程就是为以后使用而保存的一条或多条SQL语句,经编译后存储在数据库,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。可将其视为批文件。但其他们的作用不仅限于批处理。个人理解有点像自定义的函数
Access和SQLite不支持存储过程

执行存储过程

EXECUTE addnewproduct('001','zjw','6.49');
  • EXECUTE接受存储过程名和需要传递给它的任何参数

创建存储过程
自动创建订单(SQL server)

-- 接受一个参数,顾客id
CREATE PROCEDURE NewOrder @cust_id CHAR(10)
AS
-- 定义变量
DECLARE @order_num INTEGER
-- 获取最大订单号
SELECT @order_num = MAX(order_num)
FROM orders
-- 计算下一订单号
SELECT @order_num = @order_num + 1
--插入新订单
INSERT INTO orders(order_num,order_date,cust_id)
VALUES(@order_num,GETDATE(),@cust_id)
--返回新订单号
RETURN @order_num;
  • 只适用于SQL server
  • DECLARE用于声明变量,SQL server中所有局部变量都以@开头
  • 不同的DBMS,实现存储过程的语法实现不一

事务处理 TRANSACTION

使用事务处理(Transaction processing),通过确保成批的SQL操作,要么完全执行、要么不执行,保证不包含不完整的操作结果。
事务管理用来管理INSERT, UPDATE ,DELETE,不能回退SELECT, CREATE ,DROP

  • 事务:一组SQL语句
  • 回退(rollback):撤销指定SQL语句的过程
  • 提交(commit):将未存储的SQL语句结果写入数据表
  • 保留点(savepoint):指事务处理中设置的临时占位符,可以对它发布回退

SQLserver

BEGIN TRANSACTION
....
COMMIT TRANSACTION

MariaDB 和 MySQL

START TRANSACTION
...

Oracle

SET TRANSACTION
...

PostgreSQL

BEGIN
...
  • 多数实现没有明确标识事务处理在何处结束,通常COMMIT用于保存更改,ROLLBACK用于撤销

使用ROLLBACK

DELETE FROM orders;
ROLLBACK;

使用COMMIT

BEGIN TRANSACTION
DELETE orderitems WHERE order_num = 12345
DELETE orders WHERE order_num = 12345
COMMIT TRANSACTION
  • 任意一条语句出错,都不会提交更改

使用保留点
保留点可设置多个,使SQL语句能灵活的回退

SAVEPOINT delete1
...
ROLLBACK TO delete1
  • 适用于MariaDB、MySQL、Oracle
SAVE TRANSACTION delete1
...
ROLLBACK TRANSACTION delete1
  • 适用于SQL server
jlink驱动安装 jlink驱动下载安装及keil识别 阅读详情

相关推荐

七步设计高频变压器

七步设计高频变压器

m0_71394959的博客 5401

sql 存储过程使用事务

begin tran --开启事务 begin try update student set age=1111 where id=1 update student set age='a' where id=2 commit tran -- 提交事务 end try begin catch -- 捕获异常

czh4869623的专栏 939

保姆级教程:在Ubuntu 22.04上用VLLM+OpenWebUI部署DeepSeek-R1-14B(含Q8量化模型下载)

本文提供在Ubuntu 22.04上使用VLLM和OpenWebUI部署DeepSeek-R1-14B大语言模型的完整教程,包括环境配置、模型下载、VLLM参数调优及OpenWebUI集成。特别针对Q8量化模型优化部署流程,解决CUDA版本冲突等常见问题,适合开发者快速搭建本地AI对话系统。

weixin_26712075的博客 430

SQL 使用存储过程

存储过程       我们使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有的操作都这么简单,经常会有一些复杂的操作需要多条语句才能完成。例如以下的情形:    1. 为了处理订单,必须核对以保证库存中有相应的物品。    2. 如果物品有库存,需要预定,不再出售给别的人,并且减少物品数据以反映正确的库存量。    3. 库存中没有的物品需要订购,这需要与供应商进行某种交互。    4...

GUI1259802368的博客 1699

Rocky Linux 9.2:利用LVM动态调整/home与/根分区空间分配

本文详细介绍了在Rocky Linux 9.2系统中,如何利用LVM(逻辑卷管理器)动态调整/home与根分区(/)的空间分配。针对根分区空间不足而/home分区闲置的常见问题,文章提供了从检查磁盘布局、备份数据、卸载分区、调整逻辑卷大小到重建文件系统的完整操作步骤,并重点说明了XFS与EXT4文件系统在缩容时的不同处理方法,帮助系统管理员安全、在线地实现存储空间的灵活调配。

weixin_29271263的博客 177

关于ADS重新安装失败的解决方案

ads卸载安装license被锁无法修改导致安装最后没有证书

weixin_47103290的博客 9702

五、视图、存储过程与函数、触发器

1.视图 1.视图简介 ​ 基于 SQL 语句的结果集的可视化的虚拟表,视图中的字段就是来自一个或多个数据库中的真实的表中的字段; CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition 2.视图的特点 1、简单:因为视图是查询语句执行后返回的已经过滤好的复合条件的结果集,所以使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件。 2、安全:使用视图的用户只能访问他们被允许查询的结果集,对于

Cxf2018的博客 280

告别黑窗口:XShell+X11转发图形化界面的5分钟保姆级教程(附Xming配置)

本文详细介绍了如何使用XShell和X11转发技术快速实现Linux图形化界面的远程访问。通过5分钟快速配置指南,包括服务端设置、客户端工具选择及XShell+Xming的完美配置,帮助用户高效运行GUI应用程序,提升远程工作效率。特别适合需要图形化操作的开发者和运维人员。

weixin_29223603的博客 328

19 使用存储过程

1.存储过程 存储过程是为以后使用而保存的一条或多条SQL语句 可以单独编写每条SQL语句,并根据结果有条件地执行其他语句。 2.为什么要使用存储过程 (1)通过把处理封装在一个易用的单元中,可以简化复杂的操作; (2)由于不要求反复建立在一系列处理步骤,因而保证了数据的一致性; (3)简化对变动的管理; (4)因为存储过程通常以编译过的形式存储,所以DBMS处理命令所需的...

diyintao3579的博客 171

Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题

​ 使用 SSL 连接时出错。错误 1409442E:SSL 例程:ssl3_read_bytes:tlsv1 警报协议版本 由于我使用的是最新版本的Indy,根据Delphi Praxis 上的此线程,这种情况不应该发生。事实证明,不知何故,一个非常旧版本的 openssl DLLlibeay32.dll和ssleay32.dll已被放置在我计算机上的 sarch 路径中(版本 1.0.0e)。

Delphi开发局QQ群:32422310 2495

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

当前基于MQTT协议设计了一个实时图传系统,通过这个项目来演示,两个MQTT设备如何互相订阅,进行消息流转。 在阿里云服务器上创建2个设备,分为为设备A和设备B;设备A负责采集本地摄像头画面上传,设备B负责接收设备A上传的数据然后解析显示出来。在阿里云服务器上需要配置云产品流转,让设备A的数据上传后自动发送给设备B。这样就完成了视频画面数据的流转。不过因为阿里云的最大数据限制,每次最大发送10240字节的数据。

1万+

SQL 必知必会·笔记<17>使用存储过程

存储过程就是为以后使用而保存的一条或多条SQL 语句。可将其视为批文件,虽然它们的作用不仅限于批处理。   1. 存储过程的优点和缺点 存储过程的优点: 使用存储过程有三个主要的好处,即简单、安全、高性能: 通过把处理封装在一个易用的单元中,可以简化复杂的操作 由于不要求反复建立一系列处理步骤,因而保证了数据的一致性。可以防止错误。需要执行的步骤越多,出错的可能性就越大。 简化对...

weixin_34092455的博客 149

前端Three.js面试题及参考答案

渲染循环(Render Loop)是 Three.js 中一个非常重要的概念,它是一个不断重复执行的过程,用于更新和渲染 3D 场景。在每次循环中,渲染循环会更新场景中的对象状态,如位置、旋转、缩放等,然后使用渲染器将更新后的场景渲染成 2D 图像显示在屏幕上。通过不断地重复这个过程,就可以实现动画效果。渲染循环的核心作用是确保场景能够实时更新,给用户带来流畅的视觉体验。如果没有渲染循环,场景将是静态的,不会有任何变化。只有通过不断地更新和渲染,才能让场景中的对象动起来,实现各种动画效果。

大模型大数据攻城狮的专栏 2722

Mysql从入门到入魔——8. 视图、存储过程、事务处理

Mysql从入门到入魔——8. 视图、存储过程、事务处理1.视图1.1 为什么使用视图1.2 创建视图1.3 用视图简化复杂的联结1.4 用视图过滤数据1.5 修改视图1.6 删除视图1.7 性能问题2.存储过程2.1 为什么使用存储过程2.2 创建存储过程2.3 存储过程体2.4 存储过程参数2.4.1 IN输入参数2.4.2 OUT输入参数2.4.3 INOUT输入输出参数2.5 删除存储过程3.管理事务处理3.1 事务处理3.2控制事务处理3.3 事务隔离级别3.3.1 脏读3.3.2 不可重复读3.

向日葵的专属太阳 3525

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SQL Server中视图,存储过程,注入

视图 视图的概念 是存储在服务器端的一个查询块,是一张虚拟表 表示一张表的部分数据或多张表的综合数据 其结构和数据是建立在对表的查询基础上 视图的使用,跟普通数据表的查询使用完全一样 视图的数据 数据存放在视图所引用的原始数据表中 表视图的多样性 一个或多个原始数据表,根据不同用户的不同需求,可以创建不同的视图 视图的用途 筛选表中的行 防止未经许可的用户访问敏感数据 降低数据库的复杂程度 ...

dust__的博客 4780

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

存储过程与视图的区别

1、范围不同: 存储过程:范围要广很多。存储过程和视图都是相当于执行一段已经编译好的sql脚本 而区别在与存储过程可以提供参数、输入参数 以及每次返回多个表数据 视图:一次只能返回一个二维表的数据 且不能接受 任何参数。 2、目的不同: 存储过程:往往涉及很多的数据处理,是一个复杂的过程,它相当于一个函数可以接受参数,主要用于处理数据; 视图:把现有数据以新的形式展现出来,最终目的是为了呈现数据。 3:总结: 视图就是张虚拟表,可以像对真实表一样对其进行操作,而存储过程是一组sql语句的批处理

ww981580010的博客 9834

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用SQL创建视图和存储过程

文章目录1.定义所有女生信息的视图“F_Student”(5分)2.通过视图“F_Student”查询小于18岁的女生人数。(5分)3.定义“计算机系”学生的视图”CS_Student”,并要求透过该视图进行的更新操作只涉及计算机系学生。(5分)4.通过视图CS_Student插入一条学生记录,数据自拟,插入的数据在Sdept是否有限制?(5分)6.建立选修了“数据库原理”这门课的学生信息视图“D...

令狐_JackieHao的博客 3348

SQL视图/存储过程/触发器

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如 插入,更新,删除,以使其符合视图的定义。MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。

weixin_45951205的博客 1444

SQL 如何创建存储过程、函数、视图

一般情况下是在一些逻辑比较复杂的情况下选择使用存储过程,因为如果不使用存储过程的话,那么我们在写代码的时候,可能因为一些需求没有理解到位或者要修改什么东西,那么一旦写的不是存储过程,修改起来是很麻烦的一件事,而使用存储过程就方便了,不需要进入代码里修改,只需要修改SQL即可,可以节省很大一部分麻烦。因为视图是一种虚拟的表,所以视图的用法就和普通的表一样,可以查询字段,where判断条件,与其他表关联等操作。1.EXEC Demo @Name='熊大',@Sex='',@Teacher=N''

weixin_73037857的博客 2136

MySQL学习笔记7——视图和存储过程

视图是一种虚拟表,我们可以把一段查询语句作为视图存储在数据库中,在需要的时候,可以把视图看做一个表, 对里面的数据进行查询。创建视图语法结构: 现在,假设我们要查询一下商品的每日销售明细,这就要从销售流水表(demo.mytrans) 和商品信息表(demo.goodmaster)中获取到销售数据和对应的商品信息数据:销售流水表(mytrans): 商品信息表(goodmaster): 在不使用视图的情况下,我们可以通过对销售流水表和商品信息表进行关联查询,得到每天商品销售统计的结果,包括销售日期、商品

qq_44778824的博客 1659

SQL视图、存储过程、触发器

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名”使用就可以。其作用域为当前连接。#赋值SELECT 字段名 INTO @var_name FROM 表名,#使用。

海盗船长y的博客 2300

SQL进阶之旅 Day 7:视图与存储过程入门

今天我们学习了SQL中两个重要对象——视图和存储过程。通过理论讲解、代码示例和性能测试,我们掌握了它们的基本用法、适用场景以及最佳实践。如何创建和使用视图来简化复杂查询如何编写高效的存储过程封装业务逻辑视图与存储过程的执行原理及其性能特点在MySQL与PostgreSQL中的差异及适配策略实际案例中如何利用这些技术提升系统性能明天我们将进入【进阶阶段】的第一天,主题是窗口函数实用技巧(ROW_NUMBER、RANK、聚合分析),敬请期待!

在未来等你的专栏 1398

sql server 存储过程和视图的区别

视图 要把视图看做是一张表,包含了一张表的部分数据或者多个表的综合数据,视图的使用和普通表一样; 视图建立并存储在服务器,有效减少网络数据流量,提高安全性; 视图中不存放数据,数据依然存放在视图引用的原始数据表中; 可以根据需求来提前创建不同的视图。 企业管理器创建视图: T-SQL创建视图: USE DBName go IF EXISTS(SELECT * FROM...

weixin_30312557的博客 1000

SQL学习笔记 | 12 视图和存储过程(很实用)

SQL学习笔记 |12 视图和存储过程(很实用)一、视图VIEW1、概念2、用法(1)创建视图(2)删除视图3、优点二、存储过程PROCEDURE1、用法2、实现(1)、Navicat实现(2)、MySQL实现3、优点 一、视图VIEW 1、概念 视图是一面镜像。源数据发生改变,镜像也发生改变。 2、用法 (1)创建视图 目标二维表是一个SELECT语句。很多DBMS中,ORDER BY不能用...

weixin_44878159的博客 623

为计算机系创建视图,使用SQL创建视图和存储过程

@[toc]1.定义所有女生信息的视图“F_Student”(5分)CREATE VIEW F_StudentASSELECT *FROM StudentWHERE Sex='女'2.通过视图“F_Student”查询小于18岁的女生人数。(5分)SELECT COUNT(*)FROM F_StudentWHERE Sage<183.定义“计算机系”学生的视图”CS_Student”,并...

weixin_39945810的博客 3296

Sql Server 查看所有存储过程或视图的位置及内容

前一段时间,老大给了个需求,就是对部分表进行了分库,所以,原库里面的存储过程、视图和函数里的表名等信息也要跟着更新,刚开始尝试手动检查了几个存储过程,可发现存储过程太多,检查起来效率很低,还容易出错,况且还有视图和函数,所以就想到了  Sql Server 内置的目录视图,找了一下,果然找到了解决办法:   use ReportServer$SQLSERVER sele...

weixin_34032779的博客 2814
上一篇: SQL学习笔记5 组合查询 插入/更新/删除数据 创建和操纵表
下一篇: SQL学习笔记7 游标 约束 索引 触发器
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值