MySQL如何连接查询?!

 

一、首先我们得先知道什么时候使用连接查询呢?

在我们所需要查询的数据不在同一张表格时,就需要我们使用到连接查询。

而连接查询就是将要查询的数据所在的表格连接成一张表格。

 

二、什么是内连接查询呢?

查询的信息来源于多张表格,就可以通过多表连接进行查询,一般适用于两张表格

1、内连接分3种:交叉连接,相等连接,自然连接

内连接的关键词:

CROSS  JOIN 或 JOIN,NATURAL  JOIN,ON则是连接表与表之间的条件

语法:SELECT  table(表名)/column(列名)/*   FROM  table1 JOIN  table2  ON  

table1.column1=table2.column2

等价于  

ELECT  table(表名)/column(列名)/*   FROM  table1,table2  where 

table1.column1=table2.column2

2、注意:column1,column2列名大多数时候基本相同,但也有不同,在不同时就要考虑是否符合逻辑

3、自然连接是一种比较特殊的连接,自然连接把两张表连接起来后会自动把重复的列删去,而普通的表不能

语法:SELECT   table(表名)/column(列名)/*   FROM   table1  NATURAL  JOIN  table2

 

三、什么是多表连接查询呢?

查询的信息来源于多张表格,就可以通过多表连接进行查询,一般适用于三张或三张以上的表格

1、多表连接的语法

SELECT   table(表名)/column(列名)/*   FROM   table1,table2,table3

   where  table1.column1=table2.column2  and  table2.column2=table3.column3

2、注意1:表与表两两连接之后是跟的and不是ON

注意2:column1,column2,column3列名大多数时候基本相同,但也有不同,在不同时就要考虑是否符合逻辑

注意3:写列名的时候要表名是在哪个表里,比如:table1.column1

 

四、那到底该如何使用呢?可以接着往下看

1、

goods表

type表

 

 那我们该如何把goods表和type表连接呈现出上面表所要的形式呢,首先我们可以分析是两张表连接,所以可以使用内连接方法,代入语法:

ELECT  table(表名)/column(列名)/*   FROM  table1,table2  where 

table1.column1=table2.column2

可得代码:

ELECT GoodsName 商品,TypeName 分类  FROM  goods,type  where

goods.TypeID=type.TypeID

2、

 

接下来让我们从第一题更深入一点,在第一题的基础是增加量了分类和统计数量,那么提到这两个我们可以想到,分类用group  by 子句,统计数量我们可以用count()函数,那么我们可以从第一题的代码进行修改,从而得出代码:

ELECT  ypeName 分类,count(TypeName)   数量  FROM  goods,type  where

goods.TypeID=type.TypeID group by  数量

3、user表

orders 表

 ordersdetail表

 goods表

 

 第三题就比较难了,要连接四张表合成类似于最后一张表,所以我们分析得知要使用多表连接语法,那接下来让我们看看该怎么做,代入语法:

SELECT   table(表名)/column(列名)/*   FROM   table1,table2,table3

   WHERE  table1.column1=table2.column2  and  table2.column2=table3.column3

可得:

SELECT   user.name,orders.OrderDate,goods.GoodsName,ordersdetail.Quantity   

FROM   user,orders,goods,ordersdetail   

 WHERE

user.UserID=orders.UserID  and  ordes.OrdersID=ordersdetail.OrdersID  and 

ordersdetail.GoodsID=goods.GoodsID

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值