day12-mysql 事务与索引
一、事务
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 事务与索引相关推荐
- MySQL事务和索引
MySQL事务和索引 事务 事务特性 隔离级别 隔离级别的底层实现 锁 表级锁 行级锁 + 索引 存储引擎 InnoDB和MyISAM的区别 如何选择 大表优化 事务 事务特性 ACID:原子性.一致 ...
- MySQL事务与索引
MySQL事务与索引 一.事务 1.事务简介 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行, ...
- mysql 2006测试_狂神说MySQL06:事务和索引
狂神说MySQL系列连载课程,通俗易懂,基于MySQL5.7.19版本,欢迎各位狂粉转发关注学习.禁止随意转载,转载记住贴出B站视频链接及公众号链接! 上课视频同步文档 事务和索引 事务 什么是事务 ...
- MySQL数据库:索引+事务+JDBC
一.索引 1.1 何为索引 在数据库中数量及其庞大的时候,怎么快速找到目标呢?此时就会用到索引.一本书想快速找到自己想找的知识点,首先就会先去看目录,而索引就是相当于书的目录,方便查询. 1.2 索引 ...
- mysql索引和事务_MySQL事务和索引
课程描述: 先修条件 所有对数据库感兴趣的人群,建议先学习或掌握以下技能: MySQL数据库操作 课程 技能描述 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACI ...
- MySQL:指定索引+事务+存储引擎的配置 开发必备 天呐!为什么会有索引这种东西
来来来,我告诉你为什么要有索引 索引的概念 索引的作用 索引的分类 普通索引创建的三种方式与删除 创建唯一索引与创建的三种方式 主键索引与创建的两种方式 组合索引 全文索引 创建索引的原则依据 事务的 ...
- MySQL数据库的索引、事务和存储引擎
目录 一.索引 1.1 索引的概念 1.2 索引的作用 1.3 创建索引的原则 1.4 索引的分类 1.5 索引的创建 1.5.1 普通索引 1.5.2 唯一索引 1.5.3 主键索引 1.5.4 组 ...
- mysql 表 视图 索引吗_Mysql多表查询, 视图,事务,索引,函数,go连接数据库
1.1 今日目标 理解多表查询 理解子查询 能够创建视图 能够删除视图 能够查看创建视图的SQL语句 能够理解事务的作用 能够操作事务 理解索引的作用 能够创建索引 能够删除索引 知道常用的函数 了解 ...
- MySQL数据库(四):多表查询、视图、事务、索引、函数、Go连接MySQL
MySQL数据库:视图.事务.索引.函数.Go连接MySQL 1.1 目录 文章目录 1.1 目录 1.2 多表查询分类 1.2.1 内连接[inner join] 1.2.2 左外连接[left j ...
- MySQL之事务 索引 锁_MySql 知识点之事务、索引、锁原理与用法解析
本文实例讲述了MySql 知识点之事务.索引.锁原理与用法.分享给大家供大家参考,具体如下: 事务 事务概念 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎执行一组操作语句, ...
最新文章
- 如何查看指定端口.(win)
- mysql主从脚本_shell脚本部署mysql主从
- TomcatNginx源码笔记分析
- Consider defining a bean of type ‘java.lang.String‘ in your configuration
- 训练日志 2019.3.7
- 基于JAVA+SpringMVC+MYSQL的简单企业人事管理系统
- CGAL中Polyhedron_3中与半边结构有关的具体使用
- Ubuntu MPEG-4 AAC 与 H.264 解码器安装
- 初学Java,搭建Java环境以及创建Java程序
- python数据拟合之scipy.optimize.curve_fit
- Zemax中控制曲率半径
- 开工干活累了,晚上不得找个陪玩打打游戏?我教你们用python找个人美声甜的
- 断点回归matlab,【独家发布】使用地理边界进行断点回归设计
- 新媒体运营怎么推广?
- 记一次vue踩坑 this.$router.back()在ios失效,试了各种返回,最后发现是因为url传参的原因,去掉参数就可以了。。
- (十六)记录 -- 1. 数据记录的概念
- TailWind 使用指南
- 计算机专业中经典书籍(程序猿和大学生必读)
- 二阶龙格库塔公式推导_二阶龙格—库塔公式.PPT
- 储能辅助电力系统调峰的容量需求优化配置matlab/cplex