MySql教程

mySQL 连接查询

本文主要是介绍mySQL 连接查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

连接查询分为内连接和外连接
内连接分三种:交叉连接,相等连接和自然连接
内连接语法:SELECT<字段名列表|*> FROM<表1> JOIN<表2>ON<关联条件表达式1>[WHERE<条件表达式2>];

内连接案例:
使用内连接获取公交二公司的线路信息和车辆信息
SQL语句如下:
select *from line join vehicle on line.linelD=v ehicle.linelD where company='公交二公司;

自然连接:
自然连接(Natural Join)是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉,结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。(部分数据库不支持自然连接,如SQLServer等。)自然连接的语法如下:
语法:SELECT fieldlist FROM table1 NATURA L JOIN table2【where condition】;

示例:使用自然连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,司机信息中只需包含姓名和身份证。

SQL语句如下:select  v. *, name, licenseNo from vehicle v natural join driver d where model like  '% DD%';

多表连接查询
多表连接查询方法:如果查询的信息来源于多张表,则可通过两两相连的方式建立多表连接查词。以下为三表连接查询的语法:
语法:SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.column2_1JOIN table3 on table2.coumn2_2=table3.coumn3 【where condition】;

简单多表连接查询
如果在FROM子句中,直接列出所有要连接的表,然后在WHERE子句中指定连接条件,此为简单多表查询,它与内连接功能相同。
使用三表连接查询语法格式如下:
语法:SELECT fieldlist FROM table1,table2,table3 where tablel.column1=table2.column2_1and table2.column2_2=table3.column3【and 其他条件】;


外连接查询
概念:在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表或右表或左右表中所有的数据记录。外连接的语法如下:
语法:SELECT 字段名称FROM 表名1 LEFT|RI GHT|FULL [OUTER] JOIN 表名2 ON 表名1.字段名1=表名2.字段名2

左外连接
左外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为nuli。
示例:使用左外连接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单ID和下单时间。

SQL语句如下:
select cName姓名,ordersID订单ID,ordersDate 下单日期from customer c left join orders o on c.customerlD=o.customerlD;

右外连接
右外连接是左外连接的反向连接。右外连接的结果集包括右表的所有记录和左表中满足连接条件的记录,结果集中那些不符合连接条件的来源于左表的列值为null。
示例:使用右外连接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单ID和下单时间。
实现思路:(1)由于需要获取所有客户的基本信息,如果采用右连接加以实现,必须从左至右依次连接客户表和订单表,此时客户表将作为右表,SQL语句如下:
select cName姓名,ordersID订单ID,ordersDate 下单日期from customer c right join order s o on c.customerlD=o.customerlD;

 

这篇关于mySQL 连接查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!