事务 视图 索引 看这里

 

一、事务

特性:

原子性(Atomicity);事务是一个完整的操作,事务的各步操作时不可分的(原子的),要么都执行、要么都不执行。

一致性(Consistency):当事务完成时,数据必须处于一致状态

隔离性(Isolation):并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其它事务

持久性(Durability):事务完成后,它对数据库的修改被永久保持

概念:

事务(transaction)是作为单个逻辑工作单位执行的一系列操作,多个操作作为一个整体向系统提交,要么都执行、要么都不执行

创建语句:

开始事务:begin  或  start transaction

提交事务:commit

回滚(撤销)事务:rollback

语句:
begin;
update 表名 set 字段=修改内容 where name=‘表中对应字段内容’;
commit;

begin;
update 表名 set 字段=修改内容 where name=‘表中对应字段内容’;
rollback;


set autocommit=0;
update 表名 set 字段=修改内容 where name=‘表中对应字段内容’;
commit;
update 表名 set 字段=修改内容 where name=‘表中对应字段内容’;
rollback;
set autocommit=1;

二、视图

概念:

1、视图是一张虚拟表
表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上
2、视图中不存放数据
数据存放在视图所引用的原始表中
3、视图的用途
!筛选表中的行
!防止未经许可的用户访问敏感数据
!降低数据库的复杂程度
!将多个物理数据库抽象为一个逻辑数据库

创建视图:

create view 视图名 as  {select 查询语句}

删除视图:

drop view if exists 视图名

查看视图:

select * from 视图名

注意事项:

1、视图中可以使用多个表
2、一个视图可以嵌套另一个视图
3、对视图数据进行添加、更新和删除操作直接影响所引用表中的数据
4、当视图数据来自多个表时,不允许添加和删除数据。

三、索引

概念:

索引是一种有效的组合数据的方式,为快速查找到指定记录,对复杂的查询语句进行优化,加速查询

类型:

普通索引:
MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

唯一索引:

索引列中的值必须是唯一的,但是允许为空值。

主键做引:
是一种特殊的唯一索引,不允许有空值(主键约束,就是一个主键索引)

组合索引:
在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。例如,这里由id、name和age3个字段构成的索引,索引行中就按id/name/age的顺序存放,索引可以索引下面字段组合(id,name,age)、(id,name)或者(id)。如果要查询的字段不构成索引最左面的前缀,那么就不会是用索引,比如,age或者(name,age)组合就不会使用索引查询。

文本索引:
只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,介绍了要求,说说什么是全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如有"你是个大学生,程序员 ..." 通过大学生,可能就可以找到该条记录。

创建索引:

create index 索引名 on 表名(对应字段)

以下条件可以建立索引:

!频繁搜索的列

!经常用作查询选择的列

!经常排序、分组的列

!经常用作连接的列(主键/外键)

以下条件不建立索引:

!仅包含几个不同值得列

!表中仅包含几行

!定义为 text 和 image 和 bit 数据类型的列不应该增加索引

!当表的修改(update、insert、delete)操作远远大于检索(select)操作时不应该创建索引,这两个操作时互斥的关系

查看索引:

show index from 表名;

删除索引:

drop index 索引名 from 表名;

注意事项:

1、在经常需要搜索的列上,可以加快索引的速度

2、主键列上可以确保列的唯一性

3、在表与表的连接条件上加上索引,可以加快连接查询的速度

4、在经常需要排序(order by),分组(group by)和 distinct 列上加索引,可以加快排序查询的时间,(单独 order by 用不了索引,索引考虑加 where 或加 limit)

5、在一些 where 之后的 <<=>>= between in 以及某个情况下的like 建立字段的索引

6、like 语句的  如果你对 Nickname 字段建立了一个索引,当查询的时候语句是 nickname like '%abc%' 那么这个索引将不会起到任何作用,而 nickname like 'abc%' 那么将可以用到索引。

7、索引不会包含 null 列,如果列中包含 null 值都将不会被包含在索引中,复合索引中如果有一列含有 null 值,那么这个组合索引都将失效,一般需要给默认值 0 或者字符串

8、使用短索引,如果你的一个字段是 char(30)或者 int(30),在创建索引的时候指定前缀长度,比如前10个字符(前提是多数值是惟一的) 那么短索引可以提高查询速度,并且可以减少磁盘的空间,也可以减少操作

使用索引的优点:

1、可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性

2、建立索引可以大大提高检索的效率,以及减少表的检索行数

3、在表连接的连接条件中加入索引,可以加速表与表直接的相连

4、在分组和排序自居进行数据检索是加入索引,可以减少查询时间(数据库的记录会重新排序)

5、建立索引,在查询中使用索引,可以提高性能

使用索引的缺点:

1、创建索引和索引维护会耗费时间,并且会随着数据量的增加而增加

2、索引文件会占用物理空间,处理数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间

3、对表的数据进行  更新、删除、插入 的时候,索引也要动态的维护,这样就会降低数据的维护速度,(建立索引会占用磁盘空间的索引文件,一般情况下这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件会膨胀的很快)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值