表1: Person
表2: Address
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
FirstName, LastName, City, State
根据条件无论person是否有地址信息都要提供关于person的Firstname,Lastname,City以及State的信息,可以判断是将Person表与Address表进行连接,并且是左连接,每个person对应一个记录。
SELECT
FirstName,LastName,City,State
FROM
Person left join Address on Person.PersonId=Address.PersonId;
相关知识点复习:
1、多表连接基本格式:
连接两个数据表的用法:
FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort
语法格式可以概括为:
FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号
连接三个数据表的用法:
FROM (Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN
MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel
语法格式可以概括为:
FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号
2、连接的几种方式(以两个表连接为例)
2.1 内连接:两个表的交集,可以有效的去除笛卡尔集现象
join 或 inner join (也就是inner可以省略)
内连接查询分为两类:
(1)隐式内连接
select * from A,B where 条件;
select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;
(2)显示内连接
select * from A inner join B on 条件;
select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx;
2.2 外连接
(1)左连接:左边表加两表交集
left join 或 left outer join
select * from student left join score on student.Num=score.Stu_id;
(2)右连接:右边表加两表交集
right join 或 right outer join
select * from student right join score on student.Num=score.Stu_id;
(3)完全外连接 full join 或 full outer join
select * from student full join score on student.Num=score.Stu_id;
通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。
2.3 交叉连接:两个表的乘积(笛卡儿集),尽量不使用此语句,产生的结果过于繁琐.
select * from a,b
(相关知识点持续更新~)
题目来源:LeetCode
参考文献:
https://blog.csdn.net/qq_26593881/article/details/52104699