1.内连接查询
查询信息的来源如果来自多张表,则必须对这些表进行连接查询。连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接。
1.1 内连接查询概要
内连接是应用程序中非常常见的连接操作,它一般都是默认的连接类型。内连接基于连接谓词,它将两张表的列组合在一起,产生新的结果表。内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分为三种:交叉连接,相等连接和自然连接。
内连接语法如下:
SELECT fieldlist FROM table1 【INNER】JOIN table2 ON table1.columnl=table2.columnl【where condition】
!注意:
连接依据的列可能包括null值,null值不与任何值匹配(甚至和它本身)
例题如下
查询每件商品的商品名和分类名
结果如图:
代码如下:
SELECT GoodsName 商品,TypeName 分类 FROM goods JOIN type ON goods.TypeID=type.TypeID
分析:
将goods表与type表相连接并且运用内循环来查询 从goods表中提取goodname表示商品信息 找出共有的typeID项。
2.多表连接查询
2.1 多表连接查询方法
如果查询的信息来源多张表,则可以通过两两相连的方法建立多表查询。以下为三张表连接查询的语法。
语法如下:
SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.column2_1 JOIN table3 ON table2.column2_2=table3.column3 【where condition】
说明:
(1)table2与table1和table3两两相连。
(2)三表以上连接查询的方法与三表连接查询的方法一样,均是通过两两相连的方式实现。
例题如下:
查询每个订单是谁买的,什么时候买的,买了什么,买了多少个(花了多少钱)
结果示例
代码如下:
SELECT
NAME 客户,
OrdersDate 日期,
GoodsName 商品,
Quantity 数量,
SalePrice 金额
FROM
user JOIN orders ON user.UserID = orders.UserId
join ordersdetail on orders.OrdersID = ordersdetail.OrdersID
JOIN goods ON goods.GoodsID = ordersdetail.GoodsID
!注意:
在这题需要特别注意每个数据库之间的关系。
其他连接
1.交叉连接,又称“笛卡尔连接”或“叉乘”,它是所有类型的内连接的基础。
2.自然连接,是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段。
3.左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行,结果集中那些不符合连接条件的来源于右表的列值为null。
4.右外连接: 是左外连接的反响连接 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行,结果集中那些不符合连接条件的来源于左表的列值为null。
以上需要的数据库如下:
希望以上内容可以帮助到你,如果出现错误请自行理解