多表查询方法(重点)
a c
id 姓名 s_id 成绩
查找张三的成绩
1、多表的条件:必须要关联的表中有相同的字段
2、有哪些方法可以把表和表进行关联:内链接 左右链接 基本链接 union链接
基本链接:
select * from aa,cc where id=s_sid;报错就用下面的 三表就加and s_id=c_id;
select * from aa,cc where aa.id=cc.s_sid;
查询出来的结果只会显示两个表中有的值,
两两为真为真
一真一假,一假一真,两两为假为假;
左连接方法:左表的表为主表,右表为子表
left join 表明 on
select * aa left join cc on id=s_id;
aa是主表 cc是子表 aselect * from aa,cc where id=s_id;a表中有:2个字段 cc中只有1
如果主表的值是大于子表的值,子表缺失的值自动补齐null
如果主表的值是小于子表的值,只取和主表相同的值其他不显示
右连接方法;right join 表名 on 右边的表为主表 左表为子表 与左表相反
内链接: 和基本链接一模一样
inner join 表名 on
union链接:表和表连起来形成一列 同时显示
select * from aa union select * from cc;
临时表;
select * from aa,cc where id=s_id;
select * from (select * from aa,cc where id=s_id)a;取别名为a
select * from (select * from aa,cc where id=s_id)a where a.name='zhangsan';
嵌套:
select * from aa where name='zhangsan';张三的所有信息
select id from aa where name='zhangsan';
select * from cc;
select * from cc where s_id in(select id from aa where name='zhangsan');
select score from cc where s_id in(select id from aa where name='zhangsan');
|