事务的ACID特性:
原子性(Atomicity) :要么执行要么不执行
一致性(Consistency):事务前后保持一致
隔离性(Isolation) :某个事务的操作对其他事务不可见的
持久性(Durability):当事务提交完成后,其影响应该保留下来,不能撤销
用法:
开启事务: start transaction;或者 begin;
保存原点:savepoint p1;
(读档: 时间点只能向前返回,不能向后)
rollback to p1; 回滚到p1位置
提交事务:commit;
提交/回滚:commit / rollback
回滚的限制:
- truncate清空的表rollback无法回滚
- 对于修改表结构的语句无法回滚
- 回滚不支持DDL语句,
DDL语句:数据库定义语言(部分DDL语句会造成隐式提交)
数据库的隔离级别:脏读,不可重复读,幻读
权限与安全:
访问: GRANT USER '访问的用户名'@'IP地址' IDENTIFIED BY '123'
GRANT SELECT ON *.* TO admin@localhost
关联查询、连接查询
连接类型:
外连接:
内连接:INNER JOIN(保存共同字段)
右连接:
左连接:
说明
全外连接:FULL JOIN(mysql不支持,可以用 )
笛卡尔积 :
将两(或多)个表的所有行进行组合,连接后的行数为两(或多)个表的乘积数.
(缺少关联条件 或 者关联条件不准确 时出现)
关联条件
连接的约束条件:where、on、using
where:适用于所有的关联查询
on:只能和join一起使用,只能写关联条件。可以在where中和其他条件一起写,但是分开可读性更好
using:只能和join一起使用。并且要求两个关联字段在关联表中的名称一致,而且只能表示关联字段值相等
SELECT 字段1,字段2 FROM 表1 INNER JOIN 表2 USING(eid);
内连接:
分类:显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行
# 隐身:
SELECT 字段名 from 表1,表2 where 条件
# 显式
SELECT [cols_list] from 表1 INNER JOIN 表2 ON [关联条件] where 条件
SELECT [cols_list] from 表1 CROSS JOIN 表2 ON [关联条件] where 条件
SELECT [cols_list] from 表1 JOIN 表2 ON [关联条件] where 条件
外连接:(左右,全外)
左外连接(LEFT OUTER JOIN)
返回左表中的所有行,如果左在右没有匹配到行,则结果在右表中返回空值
右外连接(RIGHT OUTER JOIN)
返回右表中的所有行,如果右在左没有匹配到行,则结果在左表中返回空值
union:将两个查询结果直接拼接成一个大结果(两边格式要相同-长度、字段)