mysql牵引例子_MySQL学习06(事务和索引)

事务

概述

什么是事务

事务就是将一组SQL语句放在同一批次内去执行

如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行

MySQL事务处理只支持InnoDB和BDB数据表类型

事务的ACID原则

原子性(Atomic)

整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(ROLLBACK)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性(Consist)

一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。

隔离性(Isolated)

隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

持久性(Durable)

在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

事务实现

基本语法

-- 使用set语句来改变自动提交模式SET autocommit = 0;  /*关闭*/SET autocommit = 1;  /*开启*/-- 注意:-- 1.MySQL中默认是自动提交-- 2.使用事务时应先关闭自动提交-- 开始一个事务,标记事务的起始点START TRANSACTION -- 提交一个事务给数据库COMMIT-- 将事务回滚,数据回到本次事务的初始状态ROLLBACK-- 还原MySQL数据库的自动提交SET autocommit =1;-- 保存点SAVEPOINT 保存点名称 -- 设置一个事务保存点ROLLBACK TO SAVEPOINT 保存点名称 -- 回滚到保存点RELEASE SAVEPOINT 保存点名称 -- 删除保存点

793c2ea0b2817b6061dc72b0b15bf68c.png

索引

索引分类

索引的作用

提高查询速度

确保数据的唯一性

可以加速表和表之间的连接 , 实现表与表之间的参照完整性

使用分组和排序子句进行数据检索时 , 可以显著减少分组和排序的时间

全文检索字段进行搜索优化.

分类

主键索引 (Primary Key)

唯一索引 (Unique)

常规索引 (Index)

全文索引 (FullText)

主键索引

主键 : 某一个属性组能唯一标识一条记录

特点 :

最常见的索引类型

确保数据记录的唯一性

确定特定数据记录在数据库中的位置

唯一索引

作用 : 避免同一个表中某数据列中的值重复

与主键索引的区别

主键索引只能有一个

唯一索引可能有多个

CREATE TABLE `Grade`( `GradeID` INT(11) AUTO_INCREMENT PRIMARYKEY, `GradeName` VARCHAR(32) NOT NULL UNIQUE  -- 或 UNIQUE KEY `GradeID` (`GradeID`))

常规索引

作用 : 快速定位特定数据

注意 :

index 和 key 关键字都可以设置常规索引

应加在查询找条件的字段

不宜添加太多常规索引,影响数据的插入,删除和修改操作

CREATE TABLE `result`(  -- 省略一些代码 INDEX/KEY `ind` (`studentNo`,`subjectNo`) -- 创建表时添加)-- 创建后添加ALTER TABLE `result` ADD INDEX `ind`(`studentNo`,`subjectNo`);

全文索引

作用 : 快速定位特定数据

注意 :

只能用于MyISAM类型的数据表

只能用于CHAR , VARCHAR , TEXT数据列类型

适合大型数据集

-- 方法一:创建表时CREATE TABLE 表名 (    字段名1 数据类型 [完整性约束条件…],    字段名2 数据类型 [完整性约束条件…],    [UNIQUE | FULLTEXT | SPATIAL ]  INDEX | KEY    [索引名] (字段名[(长度)] [ASC |DESC]));

-- 方法二:CREATE在已存在的表上创建索引CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 ON 表名 (字段名[(长度)] [ASC |DESC]) ;

-- 方法三:ALTER TABLE在已存在的表上创建索引 ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 (字段名[(长度)] [ASC |DESC]) ;

删除索引:DROP INDEX 索引名 ON 表名字;

删除主键索引: ALTER TABLE 表名 DROP PRIMARY KEY;

显示索引信息: SHOW INDEX FROM student;

/*增加全文索引*/ALTER TABLE `school`.`student` ADD FULLTEXT INDEX `studentname` (`StudentName`);/*EXPLAIN : 分析SQL语句执行性能*/EXPLAIN SELECT * FROM student WHERE studentno='1000';/*使用全文索引*/-- 全文搜索通过 MATCH() 函数完成。-- 搜索字符串做为 against() 的参数被给定。搜索以忽略字母大小写的方式执行。对于表中的每个记录行,MATCH() 返回一个相关性值。即,在搜索字符串与记录行在 MATCH() 列表中指定的列的文本之间的相似性尺度。EXPLAIN SELECT *FROM student WHERE MATCH(studentname) AGAINST('love');

注意:MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引;MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引;只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。测试或使用全文索引时,要先看一下自己的 MySQL 版本、存储引擎和数据类型是否支持全文索引。

索引准则

索引不是越多越好

不要对经常变动的数据加索引

小数据量的表建议不要加索引

索引一般应加在查找条件的字段

索引的数据结构

hash类型的索引:查询单条快,范围查询慢

btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它)

不同的存储引擎支持的索引类型也不一样

InnoDB支持事务,支持行级别锁定,支持 B-tree、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android操作系统 真的吗_旋挖机培训学校真的能学会吗,旋挖钻机到底有哪些操作系统...

旋挖机培训学校真的能学会吗添加微:yywyyc 旋挖钻机到底有哪些操作系统【前言】很多使用旋挖钻机或者想要了解旋挖钻机的工程公司可能不是特别了解旋挖钻机本身的系统以及部件,本篇文章针对旋挖钻机的操作系统来给大家介绍一下,让大家了…

WebAPI 2参数绑定方法

简单类型参数 Example 1: Sending a simple parameter in the Url [RoutePrefix("api/values")] public class ValuesController : ApiController {// http://localhost:49407/api/values/example1?id2[Route("example1")][HttpGet]public string Get(int…

推荐几个自己经常去的一些博客和网站

唐巧的技术博客objc中国Ray WenderlichCocoaDocs.orgNSHipsterLukes HomepageCocoabit | 做自己喜欢的事情转载于:https://www.cnblogs.com/faceup/p/10423259.html

创建hugo博客_Hugo + Firebase:如何在几分钟内免费创建自己的静态网站

创建hugo博客by Aravind Putrevu通过Aravind Putrevu Hugo Firebase:如何在几分钟内免费创建自己的静态网站 (Hugo Firebase: How to create your own static website for free in minutes) Ever thought of having your own website for putting up your projec…

探测与响应是各企业机构在2017年的首要安全事务

作者系:Gartner首席研究分析师 Sid Deshpande &Gartner研究总监 Lawrence Pingree 2017年,各个企业正在改变其安全支出战略,从仅注重防御转而更加关心探测和响应程度。2017年的全球信息安全支出预计将达到900亿美元,相较2016年…

java怎么引入html文件路径_如何在public_html中读取文件但在域外?使用相对路径...

我正在尝试从我的(附加组件)域目录之外的目录中读取文件 . 这是我的目录结构:public_html /domain /file_read.phpfile_write.phpsensitive /file.dat虽然我能够使用“../sensitive/file.dat”写入敏感,但我无法使用相同的方法进行读取 . 有什么想法吗&a…

JS基本概念(3)

【5】操作符 (1)一元操作符:只能操作一个值的操作符 递增、递减操作符a --a 前置    a a-- 后置(这四个操作符对任何值都适用,不能转换成数字的转换为NaN) 一元加、一元减操作符&#xff0…

csv文件怎么转成excel_Java读写excel,excel转成json写入磁盘文件

pom读写excel主要的dependency<dependency> <groupId>org.apache.poigroupId> <artifactId>poiartifactId> <version>3.16version> dependency> <dependency> <groupId>org.apache.poigroupId> …

如何用Ant Design Pro框架做项目省力

1、熟悉React所有语法&#xff0c;以及redux、redux-saga、dva、一类的库的能力 2、灵活运用该框架提供的基础UI组件&#xff0c;想方设法利用现有的UI组件进行组合&#xff0c;尽可能减少工作量 转载于:https://www.cnblogs.com/ww01/p/10430553.html

通过在Chipotle用餐了解模板方法设计模式

by Sihui Huang黄思慧 通过在Chipotle用餐了解模板方法设计模式 (Understanding the Template Method design pattern by eating at Chipotle) Object-Oriented Design Patterns in Life— gain an intuitive understanding of OO design patterns by linking them with real-…

Coriant助力Aureon部署100Gbps光纤网络

根据相关消息显示&#xff0c;光传输设备厂商Coriant日前表示已经向网络传输和业务通信服务供应商Aureon Technology提供了7100纳米分组光传输平台&#xff0c;帮助其进行100Gbps光纤网络的拓展。 该服务供应商&#xff08;Aureon&#xff09;将利用该分组光传输系统&#xff0…

python class tynu()_Visual Studio Express | Teraz Visual Studio Community

Program Visual Studio 2019 jest teraz dostępnyDostosowany instalatorTwrz aplikacje w technologiach WPF, WinForms, platformy uniwersalną systemu Windows, Win32, Android, iOS i innych — wszystko to za pomocą jednego środowiska IDE zapewniającego wszyst…

css样式中如何设置中文字体?

代码如下: .selector{font-family: SimHei,"微软雅黑",sans-serif;} 注意&#xff1a;加上中文名“微软雅黑”是为了兼容opera浏览器&#xff0c;中文字体名必须加上引号&#xff08;单引号双引号都可以&#xff09;。 MicrosoftJhengHei为微软正黑体&#xff0c;STH…

前端做CRM管理系统是做什么_代办行业的CRM客户关系管理系统应该是什么样子的?...

随着互联网的深耕细化&#xff0c;很多企业也在不断优化自己的办公方式&#xff0c;以优化企业的办公流程&#xff0c;提高企业的办事效率。因此实现办公自动化&#xff0c;或者说实现数字化办公就需要逐渐提上日程。今天给大家讲讲可以帮助代办行业实现办公自动化的产品&#…

(译) JSON-RPC 2.0 规范(中文版)

http://wiki.geekdream.com/Specification/json-rpc_2.0.html 起源时间: 2010-03-26(基于2009-05-24版本) 更新: 2013-01-04 作者: JSON-RPC工作组< json-rpcgooglegroups.com > 原文链接: http://www.jsonrpc.org/specification翻译: leozvc < xxfs91gmail.com >…

ios pusher使用_如何使用JavaScript和Pusher实时更新用户状态

ios pusher使用by Rahat Khanna通过拉哈特汉娜 如何使用JavaScript和Pusher实时更新用户状态 (How to update a User’s Status in realtime using JavaScript and Pusher) “Hey, what’s up?” is not a phrase we need to ask someone these days. These days knowing wha…

python + pyqt5 UI和信号槽分离方法

初级菜鸟&#xff0c;知识点记录。 每次重新生成UI.py文件的时候&#xff0c;里面的按钮方法都会被清除&#xff0c;想一个方法可以把按钮响应方法放到外面&#xff0c;利于维护。 新建一个按钮文件并继承UI代码&#xff0c;把信号槽及按钮响应方法写在按钮文件里面&#xff0c…

学习之路~sqh

推荐博客 Edison Chou&#xff1b;Vamei&#xff1b;算法∙面试专题 - 简书&#xff1b;xingoo - 博客园&#xff1b;设计模式 极速理解设计模式系列【目录索引】- Caleung&#xff1b;Net设计模式 - 灵动生活&#xff1b;宅男程序员给老婆的计算机课程系列&#xff1b;C设计模…

python format函数保留两位小数_python format函数

在Python 3.0中&#xff0c;%操作符通过一个更强的格式化方法format()进行了增强。对str.format()的支持已经被反向移植到了Python 2.6在2.6中&#xff0c;8-bit字符串和Unicode字符串都有一个format()方法&#xff0c;这个方法会把字符串当作一个模版&#xff0c;通过传入的参…

蓝牙 sig base uuid_蓝牙模块采用陶瓷天线和PCB天线的区别

一、陶瓷天线陶瓷天线是一种适合于蓝牙设备使用的小型化天线,又分为块状陶瓷天线和多层陶瓷天线。陶瓷天线占用空间很小、性能比较好&#xff1b; 带宽窄&#xff0c;比较难做到多频段&#xff1b;有效提高主板的整合度&#xff0c;并可降低天线对ID的限制&#xff1b;需要在主…