MySQL多表查询

多表连接查询:
以一个共同的字段,求两张表当中符合条件的并集。 通过共同字段把这两张表连接起来。
常用的连接:
内连接:根据表中的共同字段进行匹配
外连接:左外连接、右外链接。
内连接
内连接:根据表中的共同字段进行匹配,将两个表中符合条件的记录进行拼接。
语法:
select 字段 from 表1 inner join 表2 on 表1.字段=表2.字段

例1:查询每个学生的学号、姓名以及各科成绩
stu_info表的表结构
在这里插入图片描述

stu_chj表的表结构
在这里插入图片描述

创建stu_info和stu_chj表
mysql> create table stu_info(xh int primary key,xm varchar(30) not null,sex enum(‘M’,‘W’)) engine=innodb default charset=utf8;
mysql> create table stu_chj(xh int,yw float(5,2),shx float(5,2));
向stu_info和stu_chj表插入测试的数据
mysql> insert into stu_info values(1,‘lisi’,‘M’),(2,‘lier’,‘W’),(3,‘zhs’,‘M’),(4,‘liming’,‘W’);
mysql> insert into stu_chj values(1,99,77),(2,89,78),(3,100,67);
用内连接查询实现查询每个学生的学号、姓名以及各科成绩
mysql> select stu_info.xh,xm,yw,shx from stu_info inner join stu_chj on stu_info.xh=stu_chj.xh;
说明:stu_info.xh,因为xh字段在两个表中都存在,所以需要声明该字段来自哪个表。
为了方便引用表名,可以给表起个别名
mysql> select i.xh,i.xm,c.yw,c.shx from stu_info i inner join stu_chj c on i.xh=c.xh;
说明:其中i.xh中的i是stu_info表的别名,需要在from后面定义
例2:把书的名字,价格和所属类型显示出来
mysql> select a.bname,a.price,b.btypename from books a inner join category b on a.btypeid=b.btypeid;
其中a.bname字段中的a是books表的别名,需要在后面定义,别名可以随意书写,b.btypename字段前的b是category表定义的别名。
在这里插入图片描述

实际使用中inner可省略掉,使用where子句代替。
mysql> select a.bname,a.price,b.btypename from books a, category b where a.btypeid=b.btypeid;
在这里插入图片描述

外连接 (分为左外连接;右外连接)
左连接:
select 字段 from a表 left join b表 on 连接条件
a表是主表,指定的字段内容都显示。
b表从表,没有的内容显示null
mysql> select a.bname,a.price,b.btypename from books a left join category b on a.btypeid=b.btypeid;
在这里插入图片描述

右连接:
select 字段 from a表 right join b表 on 连接条件
a表是从表,
b表主表,都显示。
mysql> select a.bname,b.* from books a right join category b on a.btypeid=b.btypeid;
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值