一、事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

  • 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务
  • 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行
  • 事务用来管理insert,update,delete语句

一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

  • 1、事务的原子性:一组事务,要么成功;要么撤回。
  • 2、稳定性 : 有非法数据(外键约束之类),事务撤回。
  • 3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
  • 4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。

在Mysql控制台使用事务来操作

mysql> begin; #开始一个事务mysql> insert into a (a) values(555);mysql>rollback; 回滚 , 这样数据是不会写入的

当然如果上面的数据没问题,就输入commit提交命令就行;

二、索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。

普通索引

创建索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

CREATE INDEX indexName ON mytable(username(length));

如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

 修改表结构

ALTER mytable ADD INDEX [indexName] ON (username(length))

创建表的时候直接指定

CREATE TABLE mytable( ID INT NOT NULL,  username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );

删除索引的语法

DROP INDEX [indexName] ON mytable;

唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

创建索引

创建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))修改表结构
ALTER mytable ADD UNIQUE [indexName] ON (username(length))创建表的时候直接指定
CREATE TABLE mytable( ID INT NOT NULL,  username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );

使用ALTER 命令添加和删除索引

有四种方式来添加数据表的索引:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。以下实例为在表中添加索引。
mysql> ALTER TABLE testalter_tbl ADD INDEX (c);
你还可以在 ALTER 命令中使用 DROP 子句来删除索引。尝试以下实例删除索引:
mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

显示索引信息:

mysql> SHOW INDEX FROM table_name\G

mysql的练习题:猛击这里

更多mysql的知识:猛击这里

转载于:https://www.cnblogs.com/zhangqigao/articles/7682882.html

day12-mysql 事务与索引相关推荐

  1. MySQL事务和索引

    MySQL事务和索引 事务 事务特性 隔离级别 隔离级别的底层实现 锁 表级锁 行级锁 + 索引 存储引擎 InnoDB和MyISAM的区别 如何选择 大表优化 事务 事务特性 ACID:原子性.一致 ...

  2. MySQL事务与索引

    MySQL事务与索引 一.事务 1.事务简介 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行, ...

  3. mysql 2006测试_狂神说MySQL06:事务和索引

    狂神说MySQL系列连载课程,通俗易懂,基于MySQL5.7.19版本,欢迎各位狂粉转发关注学习.禁止随意转载,转载记住贴出B站视频链接及公众号链接! 上课视频同步文档 事务和索引 事务 什么是事务 ...

  4. MySQL数据库:索引+事务+JDBC

    一.索引 1.1 何为索引 在数据库中数量及其庞大的时候,怎么快速找到目标呢?此时就会用到索引.一本书想快速找到自己想找的知识点,首先就会先去看目录,而索引就是相当于书的目录,方便查询. 1.2 索引 ...

  5. mysql索引和事务_MySQL事务和索引

    课程描述: 先修条件 所有对数据库感兴趣的人群,建议先学习或掌握以下技能: MySQL数据库操作  课程 技能描述 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACI ...

  6. MySQL:指定索引+事务+存储引擎的配置 开发必备 天呐!为什么会有索引这种东西

    来来来,我告诉你为什么要有索引 索引的概念 索引的作用 索引的分类 普通索引创建的三种方式与删除 创建唯一索引与创建的三种方式 主键索引与创建的两种方式 组合索引 全文索引 创建索引的原则依据 事务的 ...

  7. MySQL数据库的索引、事务和存储引擎

    目录 一.索引 1.1 索引的概念 1.2 索引的作用 1.3 创建索引的原则 1.4 索引的分类 1.5 索引的创建 1.5.1 普通索引 1.5.2 唯一索引 1.5.3 主键索引 1.5.4 组 ...

  8. mysql 表 视图 索引吗_Mysql多表查询, 视图,事务,索引,函数,go连接数据库

    1.1 今日目标 理解多表查询 理解子查询 能够创建视图 能够删除视图 能够查看创建视图的SQL语句 能够理解事务的作用 能够操作事务 理解索引的作用 能够创建索引 能够删除索引 知道常用的函数 了解 ...

  9. MySQL数据库(四):多表查询、视图、事务、索引、函数、Go连接MySQL

    MySQL数据库:视图.事务.索引.函数.Go连接MySQL 1.1 目录 文章目录 1.1 目录 1.2 多表查询分类 1.2.1 内连接[inner join] 1.2.2 左外连接[left j ...

  10. MySQL之事务 索引 锁_MySql 知识点之事务、索引、锁原理与用法解析

    本文实例讲述了MySql 知识点之事务.索引.锁原理与用法.分享给大家供大家参考,具体如下: 事务 事务概念 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎执行一组操作语句, ...

最新文章

  1. 如何查看指定端口.(win)
  2. mysql主从脚本_shell脚本部署mysql主从
  3. TomcatNginx源码笔记分析
  4. Consider defining a bean of type ‘java.lang.String‘ in your configuration
  5. 训练日志 2019.3.7
  6. 基于JAVA+SpringMVC+MYSQL的简单企业人事管理系统
  7. CGAL中Polyhedron_3中与半边结构有关的具体使用
  8. Ubuntu MPEG-4 AAC 与 H.264 解码器安装
  9. 初学Java,搭建Java环境以及创建Java程序
  10. python数据拟合之scipy.optimize.curve_fit
  11. Zemax中控制曲率半径
  12. 开工干活累了,晚上不得找个陪玩打打游戏?我教你们用python找个人美声甜的
  13. 断点回归matlab,【独家发布】使用地理边界进行断点回归设计
  14. 新媒体运营怎么推广?
  15. 记一次vue踩坑 this.$router.back()在ios失效,试了各种返回,最后发现是因为url传参的原因,去掉参数就可以了。。
  16. (十六)记录 -- 1. 数据记录的概念
  17. TailWind 使用指南
  18. 计算机专业中经典书籍(程序猿和大学生必读)
  19. 二阶龙格库塔公式推导_二阶龙格—库塔公式.PPT
  20. 储能辅助电力系统调峰的容量需求优化配置matlab/cplex

热门文章

  1. 数据结构-直接寻址表
  2. linux下源码安装git
  3. [转]“Ceph浅析”系列之(二)—Ceph的设计思想
  4. flex datagrid 导出csv
  5. CNN-1: LeNet-5 卷积神经网络模型
  6. 浅谈基于Linux的Redis环境搭建
  7. jmeter5.0汉化
  8. BZOJ[1009] [HNOI2008]GT考试
  9. linux zeromq
  10. 观后感,读了几篇博文