MySQL的约束,索引和事务

目录

约束

约束分类

索引

索引的创建过程

复合索引

索引总结

事务

事务的ACD特性 

事务相关指令


约束

什么是约束:约束就是给表字段添加的限制条件。

主键约束:primary key。

约束分类

非空约束:字段的值不能为null。

格式:create table t1(id int,age int not null);

测试:insert into t1 values(1,20);//成功
     insert into t1 values(2,null);//失败

唯一约束: unique 字段的值不能重复。

格式: create table t2(id int,age int unique);

测试:insert into t3 (id) values(1); //触发默认值生效

默认约束:default 给字段设置默认值。

        格式:create table t3(id int,age int default 25);

测试:insert into t3 (id) values(1); //触发默认值生效

外键约束:用来建立关系的字段称为外键

        外键约束:保证数据的完整性,外键字段的值可以null,可以重复,但是不能是关系表中不存在的数据,被依赖的数据不能先删除,被依赖的表也不能被先删除。

索引

什么是索引

        索引是数据库中提高查询效率的技术,类似于字典的目录

为什么使用索引:

        如果不使用索引数据会零散的保存在每一个磁盘块中,要想找到数据需要挨个遍历每一个磁盘块,是用索引后,磁盘块会以树桩结构保存,查询数据时能够大大降低磁盘块的访问量从而提高查询效率。

有索引就一定好吗?

        不是,因为索引会占存储空间,如果数据量小的话添加索引反而会降低查询效率

索引的创建过程

创建索引

        格式: create index 索引名 on 表名(字段名(字符长度));

create index i_item_title on item2(title);

查看索引:

        show index from 表名;

 show index from item2;

删除索引 :

        格式:drop index 索引名 on 表名;

select * from item2 where title='100'; //耗时1.14

复合索引

        多个字段加索引,通过多个字段创建的索引称为复合索引

        格式:create index 索引名 on 表名(字段1,字段2);

create index i_item_title_price on item2(title,price);

索引总结

1.索引是数据库中用来提高查询效率的技术,类似于目录

2.因为索引会占用磁盘空间不是越多越好,只针对常用的查询字段创建索引

3.数据量小的表如果添加索引会降低查询效率,所以不是有索引就一定好

事务

     事务是数据库中执行同一业务多条sql语句的工作单元,可以保证全部执行成功或全部执行失败

    事务的ACD特性 

        是保证事务正确执行的四大基本要素 

                1.原子性:Atomicity,最小不可拆分,保证全部成功或全部失败

                2.一致性:Consistency,从一个一致状态到另一个一致状态

                3.隔离性:Isolation, 多个事务之间互不影响

                4.持久性:Durability,事务提交后数据保存到数据库文件中持久生效

事务相关指令

        开启事务 begin            回滚事务 rollback         提交事务 commit

        设置回滚点 savepoint xxx         回滚到某个回滚点 rollback to xxx;

        查看自动提交状态: show variables like '%autocommit%';

        开启事务的第二种方式: 关闭自动提交 改成手动提交 作用和begin类似set autocommit=0/1;

                0是开启事务 1是关闭事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值