连接查询

在讲连接查询前我们先给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;
数据库基础 all right reserved,powered by Gitbook文件修订时间: 2018-04-18 09:59:53