外键
概念: 外键约束指两个表之间的跨表的条件约束
要求:
1. 表引擎必须为 innodb
2. 分为主表(parent table)和从表(child table), 从表引用主表数据;
3. 要求主表和从表关联字段的数据类型严格一致.(大小,类型是否有无符号 都要一致)
外键约束作用:
主要是保证主表和从表数据的完整性:
1. 从表的关联字段不能随意添加数据,必须以主表为准
2. 主表的关联字段不能随意修改和删除(从表如果使用就不能随意动)
外键使用的语法:
1. 添加外键
alter table 从表名 add [constraint `约束名`] foreign key (从表关联字段)
references 主表名(主表关联字段) [高级语法];
案例: 学生表中添加外键
alter table student add foreign key(class_id) references class(class_id);
事务
概念: 事务是指连续不可分割的多条sql语句,要么全部都执行成功,要么全部回滚到初始状态.
作用: 事务是保证数据完整性,一致性,安全性的重要技术.
事务操作 三步:
1. 开启事务: begin; start transaction;
2. 提交事务: commit;
3. 回滚事务: rollback;
例:八戒给貂蝉每日转200元
添加一个money字段: alter table student add money decimal(7,2) default 0 comment '零花钱';
八戒给貂蝉每日转200元:
# 开启事务
start transaction;
# 八戒钱少200
update student set money=money-200 where name="猪八戒";
# 貂蝉钱多200
update student set money=money+200 where name="貂蝉";
# 提交
commit;
# 开启事务
start transaction;
# 八戒钱少200
update student set money=money-200 where name="猪八戒";
# 貂蝉钱多200
update student set money=money+200 where name="貂蝉";
# 回滚
rollback;
事务的特点,ACID
事务的四个特性:原子性,一致性,隔离性,持久性!
1)原子性(Atomicity)
事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
2)一致性(Consistency)
事务前后数据的完整性必须保持一致。
3)隔离性(Isolation)
多个用户并发访问数据库时,一个用户的事务不能被其它用户的事物所干扰,多个并发事务之间的数据要相互隔离。
4)持久性(Durability)
一个事务一旦被提交,它对数据库中的数据改变就是永久性的。
实体间关系
三种关系:
一对一:
使用相同的主键即作为各自主键也作用关联字段
一对多:
在多的一方的表中设计一个字段保存一的一方的主键id.
多对多:
新建一张中间关系表,保存两个表的主键id