mysql

MySQL索引以及事务

一.索引
  1. 索引介绍

    ​ 索引用于快速找出在某个列中有一特定值的行。

    ​ 不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。

    ​ 索引也不易过多,索引越多写入,修改的速度越慢。因为,写入修改数据时,也要修改索引

    ​ MySQL中,所有数据类型的列都可以被索引,常用的存储引擎InnoDB和MyISAM能支持每个表创建16个索引。

二.索引分类

查看索引

基本语法:
	show index from tablename;
示例:
	show index from user\G;
示例说明:
	查看user表的索引结构
mysql> show index from user\G;  # 查看索引
*************************** 1. row ***************************
        Table: user
   Non_unique: 0
     Key_name: PRIMARY      # 主键约束  主键索引
 Seq_in_index: 1
  Column_name: id           # 使用主键约束的字段
    Collation: A
  Cardinality: 94891
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
*************************** 2. row ***************************
        Table: user
   Non_unique: 0
     Key_name: name1
 Seq_in_index: 1
  Column_name: name1      #使用约束的字段
    Collation: A
  Cardinality: 90334
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
2 rows in set (0.51 sec)


  1. 普通索引

    最基本的索引,没有任何限制

基本语法:
	alter table 表 add index(字段)
示例:
	alter table money add index(username);
示例说明:
	为money表的username字段增加索引
  1. 唯一索引

    某一行启用了唯一索引则不准许这一列的行数据中有重复的值。针对这一列的每一行数据都要求是唯一的 unique

    基本语法:
    	alter table 表 add unique(字段)
    示例:
    	alter table money add unique(email);
    示例说明:
    	为money表的email字段增加唯一索引
    
  2. 主键索引

    ​ 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引,常用于用户ID。类似于书中的页码 primary key.

基本语法:
	alter table 表 add primary key(字段)
示例:
	alter table money add primary key(id);
示例说明:
	为money表的id字段增加主键索引
  1. 删除索引

    基本语法:
    	ALTER TABLE table_name DROP INDEX index_name
    示例:
    	alter table money drop index age;
    示例说明:
    	为money表删除age索引
    
三. 事务

​ 我们每执行一条SQL语句,每执行一组SQL语句,我们都可以称为事务.

事务可以看作是一个“容器”,将多条语句,放入该容器,最后,只要一个命令行,来决定其中的所有语句是否“执行” .

1.事务四大特征

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

一般来说,事务是必须满足4个条件(ACID):
原子性(Atomicity) 事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行
一致性(Consistency)事务应确保数据库的状态从一个一致状态转变为另一个一致状态
隔离性(Isolation)多个事务并发执行时,一个事务的执行不应影响其他事务的执行
持久性(Durability)已被提交的事务对数据库的修改应该永久保存在数据库中

  1. 事务模式

    在mysql中默认一条sql语句一个事务
    因此,如果需要开启事务模式的话
    使用 start transaction或者begin开头,开启事务模式
    使用 commit 语句执行后,才能真正生效
    使用 rollback 语句进行回滚

    start transaction ;
    insert into student(name,age,stuid) values('lili','18',1001)
    # 执行提交就存入进数据库
    commit
    # 不需要插入就执行rollback 撤回
    rollback
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值