目录
参考表:(注意 class表中和上次比atom6的名字改为了atom7 方便理解)
学员信息表:person | ||
id | name | age |
1 | atom | 19 |
2 | atom2 | 19 |
3 | atom3 | 21 |
4 | atom4 | 21 |
5 | atom5 | 25 |
6 | atom6 | 25 |
班级列表:class | ||
id | name | class |
1 | atom | class1 |
2 | atom2 | class1 |
3 | atom3 | class2 |
4 | atom4 | class2 |
5 | atom5 | class3 |
6 | atom7 | class4 |
1、多表等值查询
如果我们想查出person表和class表都存在的学员的姓名和年龄,应该怎么查?
这时候就可以用到多表联结了,这时候只需要知道两个表中相同的字段做下关联就可以了
SELECT person.name,person.age,class.class from person,class where person.name = class.name
从人员表和班级表中搜索出两个表都有的信息,因为atom6只在成绩表中出现了,并没有出现在人员表中(可以理解成class表中的atom6是临时进来的,还没有在person表中加入信息)
2、内联结 A表 INNER JOIN B 表 on 条件
还是上面的问题
如果我们想查出person表和class表都存在的学员的姓名和年龄,应该怎么查?
同样可以使用内联结的办法去写出
SELECT person.name,person.age,class.class from person INNER JOIN class on person.name = class.name
这个和上面1 得到的结果是完全相同的,只不过内联结的过滤是on 而等值联结的过滤语句是where
内联结的用法:内联结主要是需要查找两张表同时存在的数据。
那如果我们想以班级表为主要数据,查出和人员表相结合的数据应该怎么办,这时候就需要用的外联结了,外联结下次会总结下