Navicat
时间
- create_time 创建时间
- update_time 更新时间
默认值
logic_delete 逻辑删除
- 1(true)逻辑删除
- 0(false)未删除
MySQL
having
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
where 和having之后都是筛选条件,但是有区别的:
1.where在group by前, having在group by 之后
2.聚合函数(avg、sum、max、min、count),不能作为条件放在where之后,但可以放在having之后
三表联查
user
role
user_role 两张表之间的连接表
查出用户为学生的所有信息
技巧:from处写两张表之间的连接表,便于与两表操作
SELECT u.*
FROM user_role ur
LEFT JOIN role r ON r.id = ur.role_id
LEFT JOIN user u ON u.id = ur.user_id
WHERE ur.role_id = 4
拆分
- 1.先连接 role 和 user_role
SELECT *
FROM user_role ur
LEFT JOIN role r ON r.id = ur.role_id
下表数据全部存入 user_role(可以把它看作为中间表)
- 2.再连接 user_role 和 user
SELECT *
FROM user_role ur
LEFT JOIN role r ON r.id = ur.role_id
LEFT JOIN user u ON u.id = ur.user_id
下表数据全部存入 user_role(可以把它看作为中间表)
- 3.最后加上where条件
SELECT *
FROM user_role ur
LEFT JOIN role r ON r.id = ur.role_id
LEFT JOIN user u ON u.id = ur.user_id
WHERE ur.role_id = 4
下表数据全部存入 user_role(可以把它看作为中间表)
- 4.取出user表字段 SELECT u*