MySQL_MySQL连接查询(sql_99)

测试使用数据库表结构与内容如下:

用户表:

权限表:

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).交叉连接(实际就是笛卡尔连接)

如:查询用户表和角色表的交叉连接

发布了51 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u013185175/article/details/101685473