个人手机网站,wordpress 修改程序文件,舆情公司,设计怎么学SQL三种连接#xff1a;内连接、外连接、交叉连接一、交叉连接#xff08;CROSS JOIN#xff09;二、内连接#xff08;INNER JOIN#xff09;三、外连接#xff08;LEFT JOIN、RIGHT JOIN、FULL JOIN#xff09;1.左外连接2.右外连接3.完整外连接准备两张表并以PersonI…
SQL三种连接内连接、外连接、交叉连接一、交叉连接CROSS JOIN二、内连接INNER JOIN三、外连接LEFT JOIN、RIGHT JOIN、FULL JOIN1.左外连接2.右外连接3.完整外连接准备两张表并以PersonId相关联。一、交叉连接CROSS JOIN
交叉连接返回被连接的两个表所有数据行的笛卡尔积。
// 这两句sql完全等价
select * from person CROSS JOIN address
select * from person, address查询结果
二、内连接INNER JOIN
内连接可以获取两表的公共部分的记录即利用条件表达式来消除交叉连接的某些数据行。
// 这两句sql完全等价
select * from person INNER JOIN address ON person.PersonId address.PersonId
select * from person, address WHERE person.PersonId address.PersonId 查询结果注意此处PersonId 4的小孙并未输出 所以内连接只查询两表中都包合的数据
三、外连接LEFT JOIN、RIGHT JOIN、FULL JOIN
注意外连接时应注意where与on的区别
on条件是在生成临时表时使用的条件它不管on中的条件是否为真都会返回左边表中的记录。where条件是在临时表生成好后再对临时表进行过滤的条件。这时已经没有left join的含义必须返回左边表的记录了条件不为真的就全部过滤掉
1.左外连接
左向外联接的结果集包括指定的左表的所有行而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行则在相关联的结果集行中右表的所有选择列表列均为空值null
select * from person LEFT JOIN address ON person.PersonId address.PersonId 查询结果注意此处PersonId 4的‘小孙’也输出并且由于‘小孙’不存在对应的address所以address的数据置为null
2.右外连接
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行则将为左表返回空值null
select * from person RIGHT JOIN address ON person.PersonId address.PersonId 查询结果注意此处AddressId 6的‘广东’也输出并且由于‘广东’不存在对应的person所以preson的数据置为null
3.完整外连接
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时则另一个表的选择列表列包含空值null Mysql中不支持FULL JOIN所以这里用UNION联合查询代替
select * from person LEFT JOIN address ON person.PersonId address.PersonId
UNION
select * from person RIGHT JOIN address ON person.PersonId address.PersonId 查询结果同时输出了小孙以及广东