SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)

FULL OUTER JOIN

除了前面讲到的 INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接),还有另外一种关联方式,即 FULL OUTER JOIN(全外连接)
FULL OUTER JOIN :左表(table1)和右表(table2)匹配不上的数据行全部都会返回结果。
FULL OUTER JOIN 结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)_第1张图片
语法:

SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

columns:要显示的列名。
table1:左表的名称。
table2:右表的名称。
column_name:表中用于连接的列名。
table1.column_name:表示table1表的column_name字段。

MySQL中不支持 FULL OUTER JOIN,实际应用时也基本用不到,这里也就不多做赘述了。

三表关联

之前我们一直都是两张表进行关联,那么如何进行三张表的关联呢?
那就关联两次就好了,语法:

SELECT columns
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name 
INNER JOIN table3 
ON table1.column_name=table3.column_name;

columns:要显示的列名。
table1:左表的名称。
table2:右表的名称。
column_name:表中用于连接的列名。
table1.column_name:表示table1表的column_name字段。
例如:
将学生数据表,学生成绩表,课程数据表关联,查询每个学生的学生id,学生姓名,课程id,课程名,成绩,班级:

SELECT students.id,name,score.subject_id,subject_name,score,clazz
FROM score 
INNER JOIN subject 
ON score.subject_id = subject.subject_id 
INNER JOIN students 
ON students.id = score.id;

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)_第2张图片

SQL别名

在使用SQL时,有时为了便于理解,提升可读性,可以为表名称或列名称指定别名。比如在结果中将列名显示为中文。

语法:

SELECT column_name AS alias_name
FROM table_name AS alias_name;

column_name:表中的实际列名;
table_name:表的实际表名;
alias_name:自己给表或者列取的别名;

示例:
查询subject表全列,结果以中文列名显示:

SELECT subject_id AS '课程id', subject_name AS '课程名'
FROM subject;

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)_第3张图片

对上面三表关联的SQL语句进行优化,对表名设置别名:

SELECT c.id AS 学生id,
			 c.name AS 学生,
			 a.subject_id AS 课程id,
			 b.subject_name AS 课程名,
		 	 a.score AS 分数,
			 c.clazz AS 班级
FROM score AS a
INNER JOIN subject AS b
ON a.subject_id = b.subject_id 
INNER JOIN students AS c
ON c.id = a.id;

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)_第4张图片
另外,AS可以省略

本专栏将持续更新,对数据库SQL感兴趣的同学可以关注一下,谢谢!

你可能感兴趣的:(SQL速通学习笔记,数据库,sql,学习,笔记,经验分享)