表连接分为内连接和外连接,而这篇文章主要讲解内连接,好了不多讲直接上正文

(连接谓词也就是所谓的内连接的关键词,至于关键词是啥不知道,没关系下面会讲)它将两张表(现在我们假设有两张表,如A表和B表,这样方便理解)的列组合在一起,产生新的结果表。则具体过程是将A表的每一行和B表抵挡每一行进行比较,并找出满足连接谓词的组合,当连接谓词被满足,A和B中匹配的行会按列组合(并排组合)成结果集中的一行 

      2.内连接分为三种,分别是交叉连接,相等连接和自然连接,当然这些你们知道就行,没什么要多讲的

[INNER] JOIN ON(中括号的那个可写可不写)在 MySQL FROM 子句中使用关键字 INNER JOIN 连接两张表,并使用 ON

 内连接的语句格式如下:

SELECT <列名1,列命2,....> FROM <表名1> 【INNER】JOIN <表名2> 
ON table1.colunm1 = table2.column2 
当然你也可以不用这么写(语句如下)
SELECT <列名1,列名2 …> FROM <表名1,表名2,...> 
WHERE table1.colunm1 = table2.column2 
(tabled等于表名,column等于列命)

table1和table2那么是不是可以继续接下去,比如加上table3和table4,当然可以了,我们只需要在table2后面加上JOIN table3 ON 就可以了当然table4也是如此,至于ON字句怎么写,你可以找它们之中是否有一样的列命,至于我为什么这么说其实column1其实与column2是一样的列命,当然where条件语句也差不多

where语句和ON语句还是不一样的,ON语句后面要接条件,每一个ON语句后面都要接一个条件,而where不一样,至于为什么不一样,我还是直接上案例比较好,毕竟实操总比理论要容易理解一些,也让人印象深刻些

 

案列:

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_mysql

我们可以看出这里有五张表,这些表就是我们接下来作业所需要的素材

作业1:

1、查询每件商品的商品名和分类名

结果示例:

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_mysql 内连接查询结果是有顺序的吗_02

goods表里和type表里面就有我们所需要的(此图只截取了一部分)

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_内连接_03

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_表名_04

goods表和type表里面都有TypeID,而且TypeID中数字一样的type表的TypeName正好是goods表的GoodsName(GoodsName就是商品名)所需的分类,因此我们可以用内连接的语句进行查询

代码如下: 

SELECT GoodsName 商品名,TypeName 分类 FROM goods g JOIN type t ON g.TypeID = t.TypeID
另一种写法则是
SELECT GoodsName 商品名,TypeName 分类 FROM goods g,type t WHERE g.TypeID = t.TypeID

goods后面为什么要接一个g这么做当然是为了后面的ON语句可以更方便,剩下更多时间,也起到了简化字段列表的显示

     还有上面的语句中的逗号是英文的,请不要搞错了

(还有代码是不可以复制的,请手打代码,这样更有利于学习和加深印象)

作业2:

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_表名_05

COUNT了,还有分组查询中的GROUP BY了,你们是不是一瞬间茅塞顿开,思路清晰,哈哈哈,好吧我也不卖关子了

代码如下:

SELECT TypeName 分类,COUNT(*) FROM goods g JOIN type t ON g.TypeID = t.TypeID 
GROUP BY TypeName
另一种写的则是
SELECT TypeName 分类,COUNT(*) FROM goods g,type t WHERE g.TypeID = t.TypeID
GROUP BY TypeName

接下来就是三题中最难的了,请看往下看

作业3:

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_表名_06

goods表,user表,orders表和ordersdetail表

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_mysql 内连接查询结果是有顺序的吗_07

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_内连接_08

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_mysql_09

ordersdteail表和goods表还有orders表有相同的列命,而user表没有与ordersdetail表有相同的列命,这时候你发现只有orders表有user表相同的列命,而你可以通过这些环环相扣,将这些表连接在一起(goods表在上面)

代码如下:

SELECT Name 客户,OrdersDate 日期,GoodsName 商品,Quantity 数量,PurchasePrice 金额 
FROM user u JOIN orders o ON u.UserID=orders.userId 
JOIN ordersdetail od ON o.OrdersID=od.OrdersID 
JOIN goods g ON od.GoodsID=g.goodsID
另一种写法则是
SELECT Name 客户,OrdersDate 日期,GoodsName 商品,Quantity 数量,PurchasePrice 金额
FROM user u,orders o,ordersdetail od,goods g
WHERE u.UserID=orders.userId AND o.OrdersID=od.OrdersID AND od.GoodsID=g.goodsID

好了看完如上代码是不是把我上面的坑给填了,因此是多张表查询的话,可以参照如上这个代码进行理解和实操(讲这么多也不如大家找题多练练,因此大家多去实操实操,才能学的更好)

本次讲解到这里就结束了,大家是不是收获颇多,如果还有什么不太懂的,请去多去网站上看看,可能别人的比我讲的更到位,更全面

因此本文章到这里结束了

mysql 内连接查询结果是有顺序的吗 mysql内连接的关键字_mysql 内连接查询结果是有顺序的吗_10