mysql数据连接查询_MySQL数据的连接查询

57ae73794de0a66b498bf4d240a8a45d.png

连接查询

连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等。

通过连接运算符可以实现多个表查询。

首先我们需要创建2张表:

MySQL

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

createtablet_shop(

orderidint(10),

supplieridint(10),

itemnamevarchar(20),

priceint(10),

totalint(10),

primary key(orderid)

);

insertintot_shopvalues(1,1000,"apple",2,10);

insertintot_shopvalues(2,1000,"orange",4,20);

insertintot_shopvalues(3,1001,"lemon",10,2);

insertintot_shopvalues(4,1001,"apple",2,10);

insertintot_shopvalues(5,1001,"orange",3,20);

insertintot_shopvalues(6,1002,"lemon",9,10);

insertintot_shopvalues(8,1001,"orange",5,5);

createtablet_shopac(

orderidint(10),

accountingvarchar(20),

timedate,

primary key(orderid)

);

insertintot_shopacvalues(1,"xiaoming",'20170701');

insertintot_shopacvalues(2,"xiaohua",'20170702');

insertintot_shopacvalues(3,"xiaohua",'20170703');

insertintot_shopacvalues(4,"xiaoming",'20170704');

insertintot_shopacvalues(5,"xiaohua",'20170705');

insertintot_shopacvalues(6,"xiaoming",'20170706');

insertintot_shopacvalues(9,"xiaohua",'20170707');

内连接查询

内连接使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新数据

首先我们使用正常方法查询2个表想他能够orderid的数据:

MySQL

1

2

3

4

5

selectt_shop.orderid,supplierid,price*totalastotalMoney,accounting,time

fromt_shop,t_shopac

wheret_shop.orderid=t_shopac.orderid;

使用inner join语法进行内连接查询:

MySQL

1

2

3

selectt_shop.orderid,supplierid,price*totalastotalMoney,accounting,time

fromt_shopinner joint_shopac

ont_shop.orderid=t_shopac.orderid;

外连接查询

外连接查询将查询多个表中相关联的行,内连接时,返回查询结果集合中的仅是符合

查询条件和连接条件的行。但有时候需要包含没有关联的行中数据,即返回查询结果集合

中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接)、右表(右外连

接或右连接)或两个连接表(全外连接)中的所有数据行。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

MySQL

1

2

3

4

5

selectt_shop.orderid,supplierid,price*totalastotalMoney,accounting,time

fromt_shopleft joint_shopac

ont_shop.orderid=t_shopac.orderid;

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

MySQL

1

2

3

4

5

selectt_shopac.orderid,supplierid,price*totalastotalMoney,accounting,time

fromt_shopright joint_shopac

ont_shop.orderid=t_shopac.orderid;

可以通过结果自行比对发现:

使用了 left join,该语句会读取左边的数据表 t_shop 的所有选取的字段数据,即便在右侧表 t_shopac中 没有对应的 orderid 字段值。

使用了 right join,该语句会读取右边的数据表 t_shopac 的所有选取的字段数据,即便在左侧表 t_shop 中没有对应的 orderid 字段值。

复合条件连接查询,只查询财务是xiaoming的:

MySQL

1

2

select*fromt_shopinner joint_shopac

ont_shop.orderid=t_shopac.orderidandt_shopac.accounting="xiaoming";

连接查询排序,只查询xiaoming并按日期降序排列:

MySQL

1

2

3

select*fromt_shopinner joint_shopac

ont_shop.orderid=t_shopac.orderidandt_shopac.accounting="xiaoming"

order byt_shopac.timedesc;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值