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

mac2022-06-30  17

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;

最新回复(0)