表连接通过表之间关联的列,将多个表之间的行组合起来。
innerjoin:内连接返回两张表中匹配的记录,该操作将第一张表的每一行与第二张表的每一行进行比较,查找满足连接的所有行。
orders订单表
customers客户信息表
查询所有客户的订单信息(不会显示没有订单的客户信息)
selecto.orderid,c.name,o.orderamountfromordersoinnerjoincustomerscono.customerid=c.customerid;
leftouterjoin:左连接返回左边表的全部记录和右边表中匹配的记录,如果没有匹配返回null值
查询所有的订单信息
selecto.orderid,c.name,o.orderamountfromordersoleftjoincustomerscono.customerid=c.customer
rightouterjoin:右连接返回右边表的全部记录和左边表中的匹配的记录,如果不匹配返回null值
查询所有客户订单信息(客户没有订单,返回null)
selecto.orderid,c.name,o.orderamountfromordersorightjoincustomerscono.customerid=c.custom
fullouterjoin:全连接返回左表或右表的所有匹配记录,如果不匹配返回null值
selecto.orderid,c.name,o.orderamountfromordersofullouterjoincustomerscono.customerid=c.customer
selfjoin:与自身表进行连接,在表内进行比较操作时比较常用
employees表中查询每个员工领导名字SELECTa.NameASEmployee,b.NameASManagerFROMEMPLOYEESa,EMPLOYEESbWHEREa.ManagerID=b.EmployeeID;
crossjoin:笛卡尔集,将第一张表的每一行与第二个表的每一行合并,不需要任何连接条件,谨慎使用,非常消耗资源。
SELECTa.NameASEmployee,b.NameASManagerFROMEMPLOYEESa,EMPLOYEESb;