1.DQL语句完整语法和执行顺序
select ... from ... where ... group by ... having ... order by ... limit ...
顺序:5123467
2.添加外键
alter table emp add constraint f_key foreign key (dept_id) references dept(id) on update cascade on delete cascade;
dept为父表,id为主键字段;emp为子表,dept_id为外键字段;f_key为外键名称;cascade是一种同步跟新的级联行为
删除外键:alter table emp drop foreign key f_key;
3.多表查询
(1)一对多
案例:部门与员工的关系
关系:一个部门对应多个员工,一个员工对应一个部门。实现:在多的一方建立外键,指向一的一方的主键
(2)多对多
案例:学生与课程的关系
关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
(3)一对一
案例:用户与用户详情的关系
关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率
实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)
4.内连接
隐式:select * from emp, dept where emp.dept_id=dept.id;
显式:select * from emp inner join dept on emp.dept_id=dept.id;
5.左/右外连接
select * from emp e, dept d left/right join on e.dept_id=d.id;
6.自连接(必须取表的别名)
案例:查询员工及其所属领导的名字
select a.name, b.name from emp a, emp b where a.id=b.managerid;
a查领导名字,b查员工名字
7.联合查询
案例:将薪资低于5000的员工,和年龄大于50 岁的员工全部查询出来
select * from emp where salary<5000
union all
select * from emp where age>50;
8.子查询(嵌套查询)
SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );
9.事务 :
(1)概念
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
就比如:张三给李四转账10oo块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。
(2)事务操作
查看事务:select @@autocommit;
关闭事务自动提交:set @@autocommnit=0;
开启事务:start transaction/begin;
提交事务:commit;
回滚事务:rollback;
(3)事务四大特性(ACID)
原子性(Atomicity)︰事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
一致性(consistency)︰事务完成时,必须使所有的数据都保持一致状态。
隔离性(Isolation)︰数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
持久性(Durability)︰事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
10.并发事务问题
(1)赃读:一个事务读到另外一个事务还没有提交的数据。
(2)不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
(3)幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 "幻影"。
11.事务隔离级别
查询事务隔离级别:select @@transaction_isolation;
设置事务隔离级别:set session/global transaction isolation level 级别;
参考B站课程:MySQL数据库入门到精通
标签:事务,基础,外键,dept,emp,MySQL,id,select From: https://www.cnblogs.com/fly-smart/p/17995118