网上书店网站开发代码,手机模板网站模板下载网站有哪些,四川网站开发公司,网站服务器错误怎么办前言#xff1a;总是忘记表连接的区别#xff0c;在面试的时候也容易被问到#xff0c;因此就好记性不如烂笔头吧
集合运算
有并集、交集、差集 联合查询*#xff08;针对行合并的#xff09;* union为关键字#xff0c;就是将两个select的结果求并集#xff08;此时重…前言总是忘记表连接的区别在面试的时候也容易被问到因此就好记性不如烂笔头吧
集合运算
有并集、交集、差集 联合查询*针对行合并的* union为关键字就是将两个select的结果求并集此时重复的只出现一次要是想把重复的也都展示出来 应该用 union all ps以上这些是用行进行计算的而下面的内连接和外连接是用列进行计算的
内连接
只会现实关键字所在的共有的行各自的独特的行没有 假如实现a表和b表通过关键字sid来链接起来 a中sid是1~5b中sid是2-8那么结果中sid只有2-5.
select * from a #展示的是a表中的全部
inner join b
on a.sidb.sid;
###如果结果只展示a中的sid、sex、name列一定要使用“表名点列名”格式
###如果加上别名用as同时还使用where函数则为
select a.sid,a.sex,a.name from a as staff
inner join b as market
on a.sidb.sid
where b.age20;由于内连接会忽略一些结果但是实际中可能想展示a中的所有sid或者b中的所有sid则需要其他连接方式如左外连接or右外连接
外连接
1.左外连接
结果以左表a中为准sid就是1-5啦可能1中有些内容是空白因为b中没有sid1的内容
select * from a
left outer join b
on a.sidb.sid;2.右外连接
结果以左表b中为准sid就是2-8啦可能5-8中有些内容是空白因为a中没有sid6到8的内容
select * from a
right outer join b
on a.sidb.sid;3.完全连接
就是左连接union有链接把a和b中全部的展示有点像就并集
select * from a
right outer join b
on a.sidb.sid;
union
select * from a
left outer join b
on a.sidb.sid;笛卡尔积
也称交叉连接有点像排列组合的感觉 像a中有1-3b中有ijk 则结果就是1i、1j、1k、2i、2j、2k、3i以此类推
1.笛卡尔积连接
select 列名
from a,b;
或者是
select 列名
from a cross join b;2.自连接
就是自己连接自己但是的区分用as来重命名
select 列名
from a as a1,a as a2;一个例子自连接实现排序
select a.name,a.age,count(*) as 排名
from a as a1,a as a2
where a1.agea2.age
group by a1.sid
order by 排名;