Mysql学习 Day5 表连接

联表查询

join 对比

在这里插入图片描述

-- ================ 联表查询 join ==========================
--查询参加了考试的同学(学号,姓名,科目编号,分数)
/*
SELECT * FROM student;
SELECT * FROM result;
1.分析查询的字段来自哪张表
2.确定使用哪种联接查询
确定交叉点(两个表中哪个数据是相同的)
*/

-- join(连接的表) on(判断条件) 联接查询
-- where 等值查询

SELECT s.StudentNo,StudentName,SubjectNo,StudentResult
FROM student AS s
INNER JOIN result AS r
WHERE s.StudentNo = r.StudentNo

-- ====== right join ====
SELECT s.StudentNo,StudentName,SubjectNo,StudentResult
FROM student s
RIGHT JOIN result r
ON s.StudentNo = r.StudentNo


-- ====== left join ====
SELECT s.StudentNo,StudentName,SubjectNo,StudentResult
FROM student s
LEFT JOIN result r
ON s.StudentNo = r.StudentNo
操作描述
inner join如果表中至少有一个匹配,则返回结果
left join即使右表中没有匹配,也会从左表中返回值
right join即使左表中没有匹配,也会从右表中返回值

联表思路:
要查询哪些数据 select …
从哪几个表中查 from 表 join 连接表 on 交叉条件

自连接

== 自己的表和自己的表连接,核心:一张表拆为两张一样的表 ==
父类

categoryidcategoryName
2信息技术
3软件开发
5美术设计

子类

pidcategoryidcategoryName
34数据库
28办公信息
36web开发
57ps技术

操作:查询父类对应的子类关系

父类子类
信息技术办公信息
软件开发数据库
软件开发web开发
美术设计ps技术
-- 查询父子信息:把一张表拆成两张表
SELECT a.`categoryName` AS '父栏目',b.`categoryName` AS '子栏目'
FROM `category` AS a,`category` AS b
WHERE a.`categoryid` = b.`categoryid`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值