代码以下:
SELECT FId FROM T_Customer WHERE FName='MIKE'
这个SQL语句返回2,也就是姓名为MIKE 的客户的FId值为2,如许就能够够到T_Order中检索FCustomerId即是2 的纪录:
代码以下:
SELECT FNumber,FPrice FROM T_Order WHERE FCustomerId=2
下面我们细致来看看表衔接。表衔接有多种差别的范例,有交织衔接(CROSS JOIN)、内衔接(INNER JOIN)、外衔接(OUTTER JOIN)。
(1)内衔接(INNER JOIN):内衔接组合两张表,而且只猎取满足两表衔接前提的数据。
代码以下:
SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge FROM T_Order o JOIN T_Customer c ON o.FCustomerId= c.FId
注:在大多数数据库系统中,INNER JOIN中的INNER是可选的,INNER JOIN 是默许的衔接体式格局。
在运用表衔接的时刻能够不局限于只衔接两张表,由于有许多情况下须要联络许多表。比方,T_Order表同时还须要衔接T_Customer和T_OrderType两张表才检索到所须要的信息,编写以下SQL语句即可:
代码以下:
SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge FROM T_Order o JOIN T_Customer c ON o.FCustomerId= c.FId INNER JOIN T_OrderType ON T_Order.FTypeId= T_OrderType.FId
(2)交织衔接(CROSS JOIN):交织衔接一切触及的表中的一切纪录都包含在效果集合。能够采纳两种体式格局来定义交织衔接,分别是隐式和显式的衔接。
下面看看隐式的例子:
代码以下:
SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice FROM T_Customer, T_Order
运用显式的衔接则须要运用CROSS JOIN,例子以下:
代码以下:
SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice FROM T_Customer CROSS JOIN T_Order
(3)外衔接(OUTTER JOIN):内部衔接只猎取满足衔接前提的数据,而关于外部衔接来讲,主如果处理如许的一种场景。满足前提的数据检索出来,这个没有疑问,外部衔接还会检索另一部份数据,那就是将不满足前提的数据以NULL来添补。先来看一下外衔接的分类:左外部衔接(LEFT OUTER JOIN)、右外部衔接(RIGHT OUTER JOIN)和全外部衔接(FULLOUTER JOIN)。
I、左外部衔接(LEFT OUTER JOIN):前头也说了,将不满足前提的数据以NULL来添补。那末详细是哪些须要以NULL来添补呢,关于左外衔接来讲的话,衔接前提当中,假如涌现满足前提的左表的数据在右表中没有响应婚配时,须要把响应的右表字段添补NULL值。也就是说左外部衔接的主体是左表,右表来合营。
代码以下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
注:假如运用左外部衔接的话,经由过程where语句能过滤个中不符合的数据
代码以下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId WHERE o.FPrice>=150
II、右外部衔接(RIGHT OUTER JOIN):右外部衔接与左外连部接相反,将会被添补NULL值的是左表的字段。也就是说右外部衔接的主体是右表,左表来合营。
代码以下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o RIGHT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
注:同左外衔接一样,能够运用where语句举行过滤
III、全外部衔接(FULLOUTER JOIN):全外部衔接是左外部衔接和右外部衔接的合集。也就是既包含左外部衔接的效果集,也包含右外部衔接的效果集。
代码以下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o FULL OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
其效果相当于:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId UNION SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o RIGHT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
=======================================================================================
多表查询的多种sql写法:(下面是从两个内外查询<也能够算作从三个内外查询>,显现表v_goods里的一切字段,显现admin2内外的name字段作为添加人,显现表admin2表的name字段作为操纵人) 多个表的查询都可根据下面三个例句举行编写sql
SELECT v.*,(SELECT a.name FROM admin2 a WHERE a.adminId=v.loadInId) AS aname,(SELECT a.name FROM admin2 a WHERE a.adminId=v.operatorId) AS uname FROM v_goods v where 1=1; SELECT v.*,a.name aname,b.name uname FROM v_goods v,admin2 a,admin2 b WHERE a.adminId=v.loadInId AND b.adminId=v.operatorId ; SELECT v.*,a.name aname,b.name uname FROM v_goods v LEFT JOIN admin2 a ON a.adminId=v.loadInId LEFT JOIN admin2 b ON b.adminId=v.operatorId ;
以上就是mysql多表衔接查询操纵实例的细致内容,更多请关注ki4网别的相干文章!