表关系
一对一,实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一(unique)
一对多,多的加外键,关联一的主键
多对多,实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
多表查询:
笛卡尔积:取A,B集合所有组合情况
多表查询:从多张表查询数据
①连接查询
内连接:相当于查询A,B交集数据
外连接:①左外连接:相当于查询A表所有数据和交集部分数据
②右外连接:相当于查询B表所有数据和交集部分数据
②子查询
内连接查询语法
①隐式内连接
select 字段列表 from 表1,表2... where 条件;
②显示内连接
select 字段列表 from 表1 [inner] join 表2 on 条件
例:select * from emp inner join dept on emp.dep_id = dept.did;
1.左外连接:相当于查询A所有数据+交集部分
select 字段列表 from 表1 left [outer] join 表2 on 条件;
例:select * from emp left join dept on emp.dep_id = dept.did;
2.右外连接:相当于查询B所有数据+交集部分
select 字段列表 from 表1 right [outer] join 表2 on 条件;
子查询(嵌套查询)
1.子查询概念:查询中嵌套查询,称嵌套查询为子查询
2.子查询根据查询结果不同,作用不同,分为:
①单行单列:作为条件值,使用=,!=,>,<等进行条件判断
select 字段列表 from 表 where 字段名=(子查询)
②多行单列:作为条件值,使用in等关键字进行条件判断
select 字段列表 from 表 where 字段名 in (子查询)
③多行多列:作为虚拟表
select 字段列表 from (子查询) where 条件
事务简介:
①数据库的事务(transaction)是一种机制,一个操作序列,包含了一组数据库操作命令
②事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。
③事务是一个不可分割的工作逻辑单元
---开启事务
begin或start transaction;
---提交事务(数据是暂时的,提交了就是永久的,在外面能访问到)
commit;
---回滚事务(回滚到开启事务前)
rollback;
面试问:
事务四大特征(ACID)
①原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
②一致性(consistency):事务完成时,必须使所有的数据都保持一致状态
③隔离性(isolation):多个事务之间,操作的可见性
④持久性(durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
MySQL事务是默认自动提交(oracal要手动提交)
---查看事务的默认提交方式
select @@autocommit;
结果是1 自动提交 0 手动提交
---修改事务提交方式
set @@autocommit = 0;