mysql事务1

##mysql数据库事务###

1. 主键 超键 候选键 外键

 

主 键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

 

超 键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

 

候选键:是最小超键,即没有冗余元素的超键。

 

外 键:在一个表中存在的另一个表的主键称此表的外键。

 

2.数据库事务的四个特性及含义

 

数据库事务transanction正确执行的四个基本要素。

ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。

原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。

持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

 

 

视图的作用,视图可以更改么?

1.视图的创建

第一类:create view v as select * from table;

 

第二类、基于不同数据库

这种情况只比上面的sql语句多一个数据库的名字,如下:

create view 数据库1.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);

create view 数据库2.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);

 

如果执行第一个sql将在数据库1下建立视图,反之亦然;

 

视图的作用?

视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by 则对视图再次order by将被覆盖。

 

视图可以更改么?

对于某些视图比如未使用联结子查询分组聚集函数Distinct 、Union等,是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新

 

4、drop,delete与truncate的区别

一、不同点

1.truncate table 和 delete只删除记录不删除表的结构,drop语句将删除表的结构依赖的约束(constrain),触发器(trigger),索引(index);drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态

2.truncate之后的自增字段从头开始计数了,而delete的仍保留原来的最在数值。

 

二、总结:

1.在速度上,一般来说,drop> truncate > delete

2.在使用drop和truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。

3.如果想删除部分数据用delete,注意带上where子句,回滚段要足够大;

如果想删除表,当然用drop;

如果想保留表而将所有数据删除,如果和事务无关,用truncate即可;

如果和事务有关,或者想触发trigger,还是用delete

如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

 

5.索引的工作原理及其种类

 

数据库索引,是数据库管理系统中一个排序的数据结构,协助快速查询、更新数据库表中数据索引的实现通常使用B树及其变种B+树

 

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。上面都在说使用索引的好处,但过多的使用索引将会造成滥用。

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

ALTER table tableName ADD INDEX indexName(columnName)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值