mysql内连接

多表连接

多表连接的基础,要连接的表必须具有相同意义的字段(有关系的表);
多表连接什么时候用:顾名思义,肯定是所查询的问题的涉及到不止一个表;

在这里插入图片描述

一、内连接初识(内连接两张表)

内连接:
(1)等值连接(实用性强)
(2)不等值连接

内连接语法结构:

select 查询字段 from表1[inner] join 表2 on表1.关系字段=表2.关系字段;(等值连接)

(1)内连接特点:满足连接条件的才会出现在结果里面;
(2)内连接是左右拼接表;

注:连接条件中如果使用‘=’,则叫做等值连接

例1:内连接a表和b表,查询所有字段;
内连接特点:符合条件的记录才会出现在查询结果中;(内连接相当于左右拼接表)union(上下拼接表)

例2:student表和sc表内连接(等值连接),查询所有(sno,sname,sdept,cno,degree)字段
注意点:
(1)内连接的表必须是要有关系的表(即具有相同意义字段的表)
(2)当查询的字段同时出现在连接的表当中,必须明确说明是那个表里的字段,不然会出现错误;

其中内连接可以写成上面的形式:
连接条件写在from子句中:

select 查询字段 from 表1[inner]  join 表2  on  表1.关系字段=表2.关系字段;

也可以写成如下的形式,连接条件写在where子句中

select 查询字段 from 表1,表2  where  表1.关系字段=表2.关系字段;

二、内连接多张表

例3:将student表和sc表以及course表内连接,查询所有字段;

select * from student a,sc b,course c where a.sno=b.sno and b.cno=c.cno;

例4:将student表和sc表以及course表内连接,查询sno,sname,sdept,cno,cname字段;

select a.sno,sname,sdept,b.cno,cname from 
student a,sc b,course c 
where a.sno=b.sno and b.cno=c.cno;

(给每个表进行一次命名,便于选择)

From A [inner] join B on A.sno=B.sno[inner] join C on B.cno=C.cno
以此类推到多张表………

三、为表起别名

Select字段名 from表名[as] 别名;

修改上面的例题
1、将student表和sc表以及course表内连接,查询sno,sname,sdept,cno,cname字段;(给表起别名)
2、内连接teaching,teacher,sc,student表查询所有字段;

与题型有关表的标签如下:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

student(学号、姓名、性别、课程、系别、课程号等)
teacher(工号、姓名、性别、系别等)
teaching(课程号 工号)
course(课程号 课程名字)
sc(学号、课程号、成绩)

题型综合

1、内连接course表和sc表,查询所有字段;(等值连接)

select * from course a,sc b where a.cno=b.cno;

2、内连接course和sc表,查询cno,cname,sno,degree字段;

select cno,cname,sno,degree from course a,sc b where a.cno=b.cno;

3、内连接teacher,teaching,sc查询tno,tname,cno,sno字段;

select tno,tname,cno,sno from teacher a,teaching b,sc c 
where a.tno=b.tno and b.cno=c.cno;

4、内连接teaching,teacher,sc,student表查询tno,tname,cno,sno,sname,sdept字段

select tno,tname,cno,sno,sname,sdept from teaching a,teacher b,sc c,student d 
where a.tno=b.tno and a.cno=c.cno and c.sno=d.sno;

5、内连接teaching,teacher,sc,student,course表,查询sname,sno,cno,cname,

select sname,sno,cno,cname from teaching a,teacher b,sc c,student d,course e 
where a.tno=b.tno and a.cno=c.cno and c.sno=d.sno and c.cno=e.cno;

思考题:
(1)查询电子工程系选修课程学生的学号,名字,选修的课程以及对应的成绩;
(2)输出已经选修课程的女生的学号、姓名、课程号、成绩;

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侬本多情。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值