1. 主键
主键不能重复,是唯一索引的一种,且必须定义为"PRIMARY KEY",一个表中只能有一个主键
示例:建表时------ PRIMARY KEY (`id`)
更新主键------ ALTER table "表名" ADD PRIMARY KEY('....')
2. 外键
定义:如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫做父实体(父表)。
负责指向的实体,称之为实体(从表),也叫做子实体(子表)
作用:用于约束处于关系内的实体,增加子表记录时,是否有与之对应的父表记录,如果主表没有相关的记录,从表不能记录。只有先插入主表记录才能插入从表记录。
3. mysql 连接(left join,right join, inner join, full join)
A | B
- -
1 3
2 4
3 5
4 6
Inner join
select * from a INNER JOIN b on a.a = b.b;
select a.*,b.* from a,b where a.a = b.b;
a | b
-- + --
3 | 3
4 | 4
其实就是显示两个表的交集
Left join
select * from a LEFT JOIN b on a.a = b.b;
a | b
-- + --
1 | null
2 | null
3 | 3
4 | 4
Right join
select * from a RIGHT JOIN b on a.a = b.b
a | b
-- + --
3 | 3
4 | 4
null | 5
null | 6
Full join
select * from a FULL JOIN b on a.a = b.b;
a | b
--- + ---
1 | null
2 | null
3 | 3
4 | 4
null | 5
null | 6
mysql 并不直接支持full join,但是可以用以下方式实现:
select * from a left join b on a.a = b.b UNION select * from a right join b on a.a = b.b;
a | b
-- + --
3 | 3
4 | 4
1 | null
2 | null
null | 5
null | 6
4. 事务
** 在mysql 中只用使用了Innodb 数据库引擎的数据库或表才支持事务;
** 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行
一般来说,事务必须满足4个条件(ACID) : Atomicity(原子性),Consistency(稳定性),Isolation(隔离性),Durability(可靠性)
1. 事务的原子性: 一组事务,要么成功,要么失败,回滚。
2. 稳定性:有非法数据(外键约束之类),事务撤回;
3. 隔离性:事务的独立运行,一个事务处理后的结果,影响的其他事务,那么其他事务会撤回。事务的%100隔离,需要牺牲速度;
4. 可靠性:软硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改,可靠性和高速度不可兼得。
5. 索引
mysql 索引的建立对于mysql的高效运行很重要的,索引可以大大提高mysql的检索速度。