sql 多表查询中用到的连接查询使用较多的是left join,连接的表查询到的数据为空时,主表显示null值,不会影响整个查询结果
具体用法
1.创建表单 教师表和学院表
create table if not EXISTS teacher
(
id int(11) auto_increment PRIMARY KEY,
name VARCHAR(20),
age int(11),
academy int(11)
)
create table if not EXISTS academy
(
id int(11) auto_increment PRIMARY KEY,
name VARCHAR(20)
)
2.插入数据
insert into academy(name) VALUES("计算机");
insert into academy(name) VALUES("机电");
insert into academy(name) VALUES("土木");
insert into teacher(name,age,academy) VALUES("张三",25,1);
insert into teacher(name,age,academy) VALUES("李四",20,2);
insert into teacher(name,age,academy) VALUES("王五",21,3);
insert into teacher(name,age,academy) VALUES("赵六",24,1);
结果:教师表: 学院表
3.开始查询,查询结果要求,查询到教师的所有信息,包括学院的名称
注意点:必须给表起一个别名,否则汇报属性ambiguously冲突,分不清是哪个表的属性值
查询语句
select t.id,t.name,t.age,a.name as academy
from teacher t
LEFT JOIN academy a on t.academy=a.id
order by id asc
查询结果
注意
a.name as academy
这句话将查询到的学院名作为一个学院列的值
连接同一个表有多个条件时可以写两条连接这张表的语句,用别名区分开,应该有其他办法,但我暂时还没找到