《SQL必知必会——第20、21、22课:管理事物处理、使用游标、高级sql特性》

本文主要是介绍《SQL必知必会——第20、21、22课:管理事物处理、使用游标、高级sql特性》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       第20课 管理事物处理

       使用事务处理,通过确保成批的sql操作要么完全执行,要么完全不执行,来维护数据库的完整性。假如像微博加关注这样的场景,a关注b, a增加一个关注者,b增加一个粉丝,这个过程至少需要执行两条sql语句,如果两条只有一条执行成功,显然产生了脏数据,要么a的数据不对、要么b的数据不对。要保证整个操作完整,就要用到事物,上面场景,如果某一条出错,使用事物处理的话,整个过程将会回退,也就是撤销这两条sql执行的过程。说白了这就是一个要么整体成功、要么整体失败的过程,不会出现部分成功、部分失败,像煮饭一样夹生的情况。那么哪些sql语句可以使用事物处理呢?主要是insert、update、delete操作,select查询操作没必要使用事物。当然,使用事物的前提是要管理一批sql操作,至少两条条起,一条sql不管是什么语句,都没必要使用事物,因为既然是单条语句,失败就是失败了,没什么可回退的。

       通过上面这些文字可以建立对事物的一个大概了解,实际工作中,大多不会直接操作数据库写事物,而是通过框架如Spring、利用java等面向对象语言来做事物处理,相关知识点一堆,什么事物特性、事物隔离、事物传播,又可以写一篇文章了,当初我看的时候也是云里雾里,其实总体上万变不离其宗,只要掌握了最基础的概念,应用上没那么难的。

       第21课 使用游标

       这一课感觉没啥写的,因为游标很少用到,貌似以前开发一个android小项目时,使用sqlite操作数据时用过游标,游标是遍历结果集用的。游标之所以用的少,主要是工作中不提倡sql语句包含业务逻辑,也就是业务相关的东西,最好上层逻辑处理,sql只负责增删改查就可以了,那么查询出来的结果集自然不会通过游标来处理,都是交给上层逻辑处理的,所以平时工作中游标也就没啥用武之地了,当然我本人用的不多,自然没啥心得。

       第22课 高级sql特性

       这一课涉及的高级特性主要有主键、外键、索引、触发器等。主键很好理解,每一张表都需要一个主键,好像一本书都需要页码一样,主键不能重复、不能修改和更新,大多数应用场景,都会设计成自增的长整型,当然也可以设计成字符串类型,只要满足主键的条件即可。对于外键和触发器,第17课创建和操纵表简单说过,不使用外键和触发器。之所以这样,一来使用外键会增加开发复杂度,二来最主要是基于性能的考虑,由于外键约束将导致性能降低。比如一个业务流水表,频繁插入数据,如果这个表有3个外键,那么每次插入一条数据,就必须对这3个外键对应的3个表做相应的查找判断有无对应数据,如果这3个表很大,那么这3个表的判断时间就会很长,虽然外键指向的关联表的字段肯定是索引,但是我觉得很多时候,这样的判断本来就在程序里控制好了,通过外键再判断一次,显然降低性能。那么不使用触发器是什么原因呢?主要是触发器增加程序的复杂度,有些业务逻辑在代码中处理,有些业务逻辑用触发器处理,会使后期维护变得困难。毕竟一个模块、一个功能实现,要考虑的远一点,不能只顾眼前运行正常就好,还要考虑后续维护和升级,至于触发器其他弊端,大家可自行查阅。

       下面还是讲讲索引吧。索引用来排序数据以加快搜索和排序操作的速度,也就是说通过建立索引,可以改善查询操作的性能,但数据插入、修改和删除的性能将会降低。总体上索引利大于弊,尤其是数据量很大,当经常以某种特定的顺序排序数据时,则可以使用该数据建立索引,以加快数据检索。至于索引的原理,可以理解为索引是树的结构。每个表都有一个主键,数据库会以主键值构造一棵树,叶子节点存放着该主键值对应的整行数据。一张表在数据结构上等价于一颗以主键排序好的树。其他自己建的索引叫辅助索引,辅助索引的树,叶子节点存放两样东西:索引值及对应的主键。一般是先查找辅助索引树,找到索引对应的主键,然后再到主键树中找到对应的整行数据。如果没有索引,那只能从主键树中,全表扫描所有叶子节点,找到符合条件的数据。不过也没必要所有的表都建索引,一般单表不超过一万条数据,可以不建索引,因为数据量少,索引的查询优势体现不出来,反而建了索引会占用存储空间。

       ok,《SQL必知必会》这本书就讲完了,每一课讲的都比较基础,看了这些只能保证自己会用,但能否用的好、用的精,还需要实战多积累,sql优化也是一门学问。总体上,技术需要认真学习,但也别把它想的太难。

这篇关于《SQL必知必会——第20、21、22课:管理事物处理、使用游标、高级sql特性》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114962

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(