关于join操作

1、join连接

join对比

操作符名称介绍
[inner] join只有两个表相匹配的行才会出现在结果集中
left join即使右表中没有匹配,左表始终返回所有的行信息
right join即使左表中没有匹配,左表始终返回所有的行信息

代码测试

2、建表

CREATE TABLE  student(
	sno INT AUTO_INCREMENT COMMENT '学号',
	sname VARCHAR(10) COMMENT '姓名',
	sage INT COMMENT '年龄',
	PRIMARY KEY(`sno`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

CREATE TABLE result(
	sno INT COMMENT '学号',
	subno INT COMMENT '科目编号',
	subname VARCHAR(20) COMMENT '科目名称'
)ENGINE=INNODB DEFAULT CHARSET=utf8

ALTER TABLE result ADD grade INT


INSERT INTO result VALUES(1,1,'数学',90),(1,2,'化学',99),(1,3,'物理',98)
UPDATE result SET subno=3 WHERE subname='物理'
INSERT INTO result VALUES(2,1,'数学',90),(2,4,'政治',99)
INSERT INTO result VALUES(3,1,'数学',90),(3,4,'政治',87),(3,2,'化学',89)

ALTER TABLE result DROP subname


CREATE TABLE kemu(
	subno INT,
	subname VARCHAR(20) COMMENT '科目名称',
	subteacher VARCHAR(20) COMMENT '科目老师'
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO kemu VALUES(1,'数学','李老师'),(2,'化学','尧老师'),(3,'物理','吴老师'),(4,'政治','夕老师')

2.1、测试

– 测试[inner] join连接情况

SELECT * 
FROM result re
INNER JOIN student  s
ON re.`sno` = s.`sno`

在这里插入图片描述

– 测试left join连接情况

SELECT * 
FROM result re
LEFT JOIN student  s
ON re.`sno` = s.`sno`

在这里插入图片描述

– 测试rightjoin连接情况

SELECT * 
FROM result re
RIGHT JOIN student  s
ON re.`sno` = s.`sno`

在这里插入图片描述

– 查询学号、学生名字、学科编号、学科成绩

SELECT s.sno,s.sname,re.subno,re.grade
FROM student s
JOIN result re
ON s.sno=re.sno

在这里插入图片描述

– 查询学号、学生名字、学科编号、学科成绩、学科名称

SELECT s.sno,s.sname,re.subno,re.grade,k.subname
FROM student s
JOIN result re
ON s.sno=re.sno
JOIN kemu k
ON re.subno=k.subno

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值