mysql复习第七天:连接查询2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lw305993897/article/details/101906316

1、sql语法

select 查询列表
from 表1 别名 [连接类型]
join 表2 别名
on 连接条件
[where 筛选条件] [group by 分组] [having 筛选条件] [order by 排序列表]

2、分类

内连接:inner
外连接:
左外:left [outer]
右外:right [outer]
全外:full [outer]
交叉连接:cross

2.1、内连接

from 表1 表别名 inner join 表2 表别名 on 连接条件

SELECT
  s.s_name,
  c.classname,
  s.s_id
FROM student s
  INNER JOIN class c
    ON s.class_id = c.classid
WHERE c.classname = 'A班'
ORDER BY s.s_id ASC;

在这里插入图片描述

2.2、外连接

主表有,从表没有,展示主表所有记录
如果从表中有和它匹配的,则显示匹配的值
如果从表没有和它匹配的值,则显示null
左外连接,left join 左边的是主表
右外连接,right join右边的是主表

2.2.1、左外连接

select 列名 from 表1 表别名 left join 表2 表别名 on 连接条件

SELECT c.classname,s.s_name FROM class c LEFT JOIN student s ON c.classid = s.class_id;

在这里插入图片描述

2.2.2、右外连接

select 列名 from 表1 表别名 right join 表2 表别名 on 连接条件

SELECT c.classname,s.s_name FROM student s RIGHT JOIN class c ON s.class_id = c.classid;

在这里插入图片描述

2.2.3、全外连接(mysql不支持)

select 列名 from 表1 表别名 full outer join 表2 表别名 on 连接条件

2.2.4、交叉连接(笛卡尔乘积)

SELECT 列名 from 表1 表别名 cross join 表2 表别名

SELECT s.s_name,c.classname FROM student s CROSS JOIN class c;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lw305993897/article/details/101906316
今日推荐