关于MySQL连接查询

嗨!朋友,很高兴为您提供相关的知识内容。我希望我这些知识能够帮助到您解决问题或困难。

首先,我觉得有必要为您解释一下什么是查询:在日常生活和工作中,我们经常需要根据条件搜索数据,并对数据进行简单汇总。例如,我们去买火车票,售票员在售票平台上输入到达站名和出发日期,就可显示出余有的全部车次信息;另外,我们在淘宝、京东等平台选购商品时,为直接方便我们查找所需要的商品,通常会在搜索栏输入查询关键字,进行快速查询,从而购买自己喜爱的商品。这些都是数据查询的典型应用。

其次,连接查询又是什么呢?连接查询顾名思义就是把我们想要查询的内容连接到一起更有利于查找。连接查询是关系数据库中最主要的查询,主要包括内连接外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,然后通过连接进行查询。

话不多说,进入正题!!!

连接查询分为四个板块

1.内连接查询

2.外连接查询

3.多表连接查询

4.连接查询综合应用

内连接查询

内连接是一种最常用的连接类型。内连接查询实际上是一种任意条件的查询。使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录,也就是在内连接查询中,只有满足条件的元组才能出现在结果关系中。

内连接查询的语法如下:

SELECT fieldlist FROM table1[INNER] JOIN table2 ON table1.column1=table2.column2[where condition]

例如我们要将这两站表合为一张如下图并达到下图所述要求:

则使用上述语法:

SELECT GoodsName 商品,TypeName 分类 FROM goods JOIN type ON goods.TypeID=type.TypeID

注意:

(1)fieldlist:代表要查询的字段,即table1表和table2表中的字段列。如果fieldlist 取两张表所有列,则可用"*"代替,此时会出现连接依据列重复,即table1表的column1与table2表的column2为重复列。

(2)table1[INNER] JOIN table2:将table1表与table2表进行内连接,INNER可省略。

(3)table1.coulmn1=table2.coulmn2 连接条件,其中coulmn1和coulmn2为table1和table2表的关联列。如上述两表都有TypeID列,将该列进行两表相对应合成一张表。如goods表里TypeID为11的列与type表里TypeID为11相对应即生成以下图

自然连接:

自然连接是一种特殊的连接,要求相连接的两张表的连接依据必须是相同的字段(字段名相同,属性也要相同)两张相比较在结果会把重复的列去掉。

语法:

SELECT fieldlist FROM table1 NATURAL JOIN table2[where condition]

多表连接查询:

如果查询的信息来源于两张表,则可通过两两相连的方式建立多表连接查询。以下为三表连接查询的语法:

SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.columnl2_1 JOIN table3 on table2.column2_2=table3.column3[where condition]

说明:(1)table2与table1和table3 两两相连。

二、左连接查询 left join
关键字:left join on / left outer join on

SELECT  * FROM a_table a left join b_table b ON a.a_id = b.b_id;

说明: left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值