SQL语句多表连接查询语法
Posted 王醒燕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句多表连接查询语法相关的知识,希望对你有一定的参考价值。
一、外连接
1.左连接 left join 或 left outer join
SQL语句:select * from student left join score on student.Num=score.Stu_id;
2.右连接 right join 或 right outer join
SQL语句:select * from student right join score on student.Num=score.Stu_id;
3.完全外连接 full join 或 full outer join
SQL语句:select * from student full join score on student.Num=score.Stu_id;
通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。
而对于select * from student,score;则尽量不使用此语句,产生的结果过于繁琐。
二、内连接
join 或 inner join
SQL语句:select * from student inner join score on student.Num=score.Stu_id;
此时的语句就相当于:select * from student,score where student.ID=course.ID;
三、交叉连接
cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。
SQL语句:select * from student cross join score;
四、结构不同的表连接
当两表为多对多关系的时候,我们需要建立一个中间表student_score,中间表至少要有两表的主键。
SQL语句:select s.Name,C.Cname from student_score as sc left join student as s on s.Sno=sc.Sno left join score as c on c.Cno=sc.Cno
select C_name,grade from student left join score on student.Num=score.Stu_id where name=‘李五一‘;
红色部分即中间表,是集合两表所有内容的一张总表。
五、UNION操作符用于合并两个或多个select语句的结果集。
UNION内部的SELECT语句必须拥有相同数量的列,每个列也必须拥有相似的数据类型,每条SELECT语句中的列的顺序必须相同。
select Num from student union select Stu_id from score;
union操作符是默认查重的,如果允许重复的值,就可以使用union all 。对于两张结构相同的表,union也可以把他们合并成一张表:
select * from student1 union select *from student2;
暂时学了这么多内容,以后有更好的方式再来补充。
以上是关于SQL语句多表连接查询语法的主要内容,如果未能解决你的问题,请参考以下文章