联结之联结查询

为什么要使用联结?

分解数据为多个表能更有效地存储,更方便地处理,并且具有更大的可伸缩性。但这些好处是有代价的

如果数据存储在多个表中,怎样用单条 SELECT 语句检索出数据? 答案是使用联结。简单地说,联结是一种机制,用来在一条 SELECT语句中关联表,因此称之为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。

连接查询 当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回

mysql支持三种类型的连接查询,分别为:

内连接

内连接查询:查询的结果为两个表匹配到的数据

1

外连接

右连接查询:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充

2

左连接查询:查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充

3

语法

select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.列

例1:使用内连接查询班级表与学生表

select * from students inner join classes on students.cls_id = classes.id;

例2:使用左连接查询班级表与学生表 此处使用了as为表起别名,目的是编写简单

select * from students as s left join classes as c on s.cls_id = c.id;

例3:使用右连接查询班级表与学生表

select * from students as s right join classes as c on s.cls_id = c.id;

例4:查询学生姓名及班级名称

select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id;

例5:查询性别为男的学生姓名及班级名称

select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id where s.gender=1;

你可能感兴趣的:(联结之联结查询)