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 left/right join dept d 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)︰事务是不可分割的最小操作单元,要么全部成功,要么全部失败。(通过undo log实现)
一致性(consistency)︰事务完成时,必须使所有的数据都保持一致状态。(通过原子性、隔离性、持久性保证)
隔离性(Isolation)︰数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。(通过MVCC多版本并发控制或锁机制保证)
持久性(Durability)︰事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。(通过redo log实现)
10.并发事务问题
(1)赃读:一个事务读到另外一个事务还没有提交的数据。
(2)不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同(另一个事物修改并提交了数据),称之为不可重复读。
(3)幻读:在一个事务内多次查询某个符合查询条件的记录数量,如果出现前后两次查询到的记录数量不一样的情况,就意味着发生了幻读现象。
11.事务隔离级别
(serializable串行化)
查询事务隔离级别:select @@transaction_isolation;
设置事务隔离级别:set session/global transaction isolation level 级别;
12.数值类型及其大小
tinyint 1 字节
smallint 2
mediumint 3
int 4
bigint 8
float 4
double 8
char 0-255
varchar 0-65535
13.对表的增删改操作
(1)增
insert into 表名 (字段名1,字段名2...) values (值1,值2...);
(2)删
delete from 表名 where 条件;
(3)改
update 表名 set 字段名1=值1, 字段名2=值2... where 条件;
参考B站课程:MySQL数据库入门到精通
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!