测试使用数据库表结构与内容如下:
用户表:
权限表:
1.连接查询sql_99相关语法介绍
连接查询sql_99语法介绍:
1.连接查询基本语法:
select 查询列表
from 表1 别名 [连接类型]
join 表2 别名
on 连接条件
[where 筛选条件]
[group by 分组]
[having 筛选条件]
[order by 排序列表]
2.分类
内连接[*]:关键字:inner
外连接:
左外连接[*]:left [outer]
右外连接[*]:right [outer]
全外连接:full [outer]
交叉连接:cross
2.详细内容介绍
(1).内连接
内连接相关知识介绍:
1.语法:
select 查询列表 from 表1 别名
inner join 表2 别名
on 连接条件;
2.分类
等值
不等值
测试1:等值连接
如:查询用户所对应角色
如:查询用户名中含有特殊字符'云'的用户所对应的的角色(添加筛选条件)
如:查询用户数大于3的角色(分组 + 筛选)
测试2:非等值连接
如:查询用户名称长度大于5的用户所对应的的角色
(2).自连接
如:查询每一个用户自己所对应的角色以及特定权限1,权限2 ,权限3是否可以使用。
(3).外连接
外连接基本使用
1.使用的场景:用于查询一个表中有相关的记录,而另一个表中没有与之对应记录的情况。
2.特点:
(1).外连接的查询结果为主表中的所有记录。
如果从表中有和它匹配的,则显示匹配的值
如果从表中没有和它匹配的,则显示null
也就是说外连接的查询结果为:
内连接查询结果 + 主表中有而从表中没有的记录。
(2).左外连接,left join 左边的表视为主表。
.右外连接,right join 右边的表视为主表。
(3).左外和右外交换俩个表的顺序,可以实现相同的效果。
测试1:基本的外连接(左外)
如:查询用户角色,不在角色表中有对应记录的用户名
①:查询所有用户对应的角色名称
②:添加限制条件,角色表中没有对应角色的用户名称记录
测试2:右外连接测试
如:查询用户角色,不在角色表中有对应记录的用户名
①:查询所有用户对应的角色名称
②:添加限制条件,角色表中没有对应角色的用户名称记录
测试3:换主表测试
如:查询角色,以及角色所对应的用户的名称以及相关信息
(4).全外连接
全外连接
全外连接的查询结果是:
全外连接结果 = 内连接的结果 + 表1中有但是表2中没有的 + 表2中有但是表1中没有的。
测试:查询用户表和角色表的全外连接
(5).交叉连接(实际就是笛卡尔连接)
如:查询用户表和角色表的交叉连接