连接查询
在讲连接查询前我们先给students表中的学生分下班。
新加一个class_id字段,保存班级id,之前已经有一个class表已经保存了班级信息了。
students表添加class_id字段
alter table students add class_id int default null;
id小于15分到1班,大于等于分到2班
update students set class_id = 1 where id < 15;
update students set class_id = 2 where id >=15;
mysql中有三种连接查询方式
内连接查询:查询的结果为两个表匹配到的数据,两个表都能匹配上的数据将返回给结果集
select * from 表1 inner join 表2 on 表1.列=表2.列;
使用内连接查询学生表和班级表
在连接查询的时候需要多次用到表名,如果表名过长可以使用as给表取别名。
右连接查询:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充
select * from 表1 right join 表2 on 表1.列=表2.列;
使右连接查询学生表和班级表
左连接查询:查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充
select * from 表1 left join 表2 on 表1.列=表2.列;
案例:
查询学生姓名以及对应班级名称
select s.name,c.name from students as s inner join class as c on s.class_id=c.id;
students和class表中都有name字段,在显示结果集的时候需要指定表。
查询python1班所有学生的个人信息和班级信息
select * from students as s inner join class as c on s.class_id=c.id where class_id=1;