Mysql-外键与事务

99封情书 提交于 2020-02-01 04:26:27

1.外键

1.1 概念:

		a.什么是外键
			外键约束是指有关联的两个数据表之间的跨表条件约束。
		b.为什么使用外键 ?
			1.保证主表和从表数据的合理性。
			2.防止误删主表数据。
			3.限制不合理数据插入从表。

2.2 使用外键

	a.外键添加
		语法:
		alter table 从表 add [constraint 约束名字] foreign key (外键字段) references 主表(关联字段) [操作];
	b.外键删除
		语法:
		alter table 从表 drop foreign key 约束名字;
	c.外键高级
		语法:
				alter table 从表 add [constraint 约束名字] foreign key (外键字段) references 主表(关联字段) 
			[on delete {级别}]
			[on update {级别}]
		分为3个级别的操作:
			1.严格限制:restrict。严格限制不允许任何操作。默认就是严格限制。
			2.级联操作:cascade。主表(关联字段)更新或删除时,从表也跟着改变。
			3.置NULL:set null。主表(关联字段)更新或删除时,从表置NULL。
	d.外键注意事项
			1. 2个表的引擎必须是InnoDB。
			2. 2个表的关联字段数据类型必须一致。
			3. 创建外键的字段必须是索引类型,如果不是,系统会自动创建。
			4. 外键约束是可以增强数据完整性,但在做INSERT、UPDATE、DELETE时,数据库性能开销成倍增加。
			5. 外键约束适用于中小应用系统。
			6. 在大型应用系统中,一般不使用外键约束。而考虑其他方式来增强数据完整性。

2.事务

2.1 概念

	事务是一段连续的,不可分割sql语句;事务内的所有的sql语句,要不集体成功,要不集体失败。如果存在部分成功,但是另一部分失败,应该将成功对数据的影响去除(回滚)!
	事务的目的是保证 mysql数据库中的数据完整性:一个事务(一件事)内的所有的sql,都处理统一的状态(成功 or 失败)。如果其中部分失败,则回滚到 所有sql执行之前的状态!
	所以:事务是数据完整性(安全性)的一个保证技术!
	**使用事务技术的前提:数据表的引擎必须是 innodb 存储引擎!

2.2 使用事务

	a.开启事务 start transaction
		开启事务以后,所有执行的操作都是临时性的,只有提交事务以后才会永久性更新到数据库中。如果期间有错误,还可以回撤所有的操作,称为事务回滚。
	b.提交事务 commit
		如果操作全部执行成功:意味着,事务内所有的任务都正确完成!该操作成功。应该将事务中所处理的数据,持久化(同步)到真实的表中!就可以使用提交事务命令:
		语法: commit 
	c.事务回滚 rollback
		如果事务中的SQL语句出现了错误的操作,应该将其它已经成功的语句产生的影响撤销,回到事务开始前的状态!使用语句: rollback 即可完成!
		语法: rollback

2.3 事务的特点,ACID

	事务的四个特性:原子性,一致性,隔离性,持久性!
1)原子性(Atomicity)
	事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
2)一致性(Consistency)
	事务前后数据的完整性必须保持一致。
3)隔离性(Isolation)
	多个用户并发访问数据库时,一个用户的事务不能被其它用户的事物所干扰,多个并发事务之间的数据要相互隔离。
4)持久性(Durability)
	一个事务一旦被提交,它对数据库中的数据改变就是永久性的。

3.实体间关系

实体与实体之间的对应关系,称之为实体间关系。
	a.一对一
		一对一的实体关系往往通过相同的主键来实现。
	b.一对多
		一对多关系一般通过在多的一端添加一个字段保存少的一端的主键来解决。
	c.多对多
		多对多关系一般通过创建中间表来实现。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!