版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
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;