-- 外连接:
不仅将两个表中满足条件的数据查询出来,也将不满足条件的数据查询出来
左外连接:不仅将两个表中满足条件的数据查询出来,也将不满足条件的左表中的数据查询出来
右外连接:不仅将两个表中满足条件的数据查询出来,也将不满足条件的右表中的数据查询出来
满外连接:(oracle中支持)
将左右表中不满足条件的数据同时查询吃来
-- 内连接
只是将满足条件的数据查询出来,称为内连接
oracle中支持满外连接:
将左右表中的数据同时查询出来
多表查询并不难,首先需要屡清楚表与表之间的结构关系
先说一下多表之间的关系:
开始提交查询代码:
具体代码:
-- 账户 - 账户角色 - 角色 - 角色权限 - 权限
实现:查询的内容
select SO.`OP_NAME`,SR.`ROLE_NAME`,SF.`FUNC_NAME`
from `sys_op` SO
实现:账户表与账户角色中间表 关联
LEFT JOIN `sys_op_role` SOR
ON SO.`OP_ID` = SOR.`OP_ID`
实现:账户角色中间表与角色表关联
LEFT JOIN `sys_role` SR
ON SOR.`ROLE_ID`=SR.`ROLE_ID`
实现:角色表与角色权限中间表的关联
LEFT JOIN `sys_role_func` SRF
ON SR.`ROLE_ID` = SRF.`ROLE_ID`
实现:角色权限中间表与权限表的关联
LEFT JOIN `sys_func` SF
ON SRF.`FUNC_ID` = SF.`FUNC_ID`
查询的条件,可以多个条件限制,实现更加精确的查询
where SO.`OP_ID`=100
注意:SQL语句的加载顺序,才能更好的查询自己想要的内容
结果:注意内容重复,可以实现添加相关的语句,实现过滤
去重代码:DISTINCT
SELECT DISTINCT SO.`OP_NAME`,SR.`ROLE_NAME`,SF.`FUNC_NAME`
后面相同
结果:
最近比较忙,谢谢各位的关注,后续会提供更多的资料与学习方法供大家参考学习。
见谅,晚安