MySql - 基础学习 - 联表查询

一.联表查询

复制代码
-- 联表查询
/*
思路
1.需求分析,分析查询的字段来自于那张表(连接查询)
2.确定使用那种查询方式
3.确定交叉点(两张表中什么数据是相同的)
4.判断条件`student`
*/
-- inner join
SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
INNER JOIN grade AS g
ON s.id=g.`gradeid`
--  right join
SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
RIGHT JOIN grade AS g
ON s.id=g.`gradeid`
-- left join
SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
LEFT JOIN grade AS g
ON s.id=g.`gradeid`
复制代码
操作 描述
inner  join 如果表两个都有,就返回
left  join 会从左边中返回值,即使右表中没有匹配的值
right  join 会从右边中返回值,即使左表中没有匹配的值

join(连接的表)  on(判断条件)   连接查询

where                                                等值查询

on和where可以联用

一般join  后面直接跟着on

SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
LEFT JOIN grade AS g
ON s.id=g.`gradeid`
WHERE gradename IS NULL

三表查询

SELECT s.`id`,st.`name`,`gradename`,st.`sex`
FROM student AS s
LEFT JOIN grade AS g
ON s.id = g.gradeid
RIGHT JOIN stdent1 AS st
ON s.id=st.id

不管是几表查询,都要记住我们的思路,要查询n张表中,我们要最先建立两张表联查,然后再增加,一步一步的慢慢增加查询

1.需求分析,分析查询的字段来自于那张表(连接查询)
2.确定使用那种查询方式
3.确定交叉点(两张表中什么数据是相同的)on
4.判断条件  where

二.自联接

自己和自己的表连接,核心:把一张表拆成两张表

 

父类

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

子类

pid(父id) categoryid categoryName
3 4 数据库
2 8 办公信息
3 6 web开发
5 7 美术设计

 

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

父类 子类
信息技术 办公信息
软件开发 数据库
软件开发 web开发
美术设计 ps技术
SELECT a.`categoryName` AS '父栏目',b.`categoryName` AS '子栏目'
FROM `category` AS a
INNER JOIN `category` AS b
ON a.`categoryid`=b.`pid`

结果如下:

自联接的操作实际上就是两张表都是自己,只不过,这两张表有一种特殊的关系,使得自己可以拆分成两个表

 

posted @   回忆也交给时间  阅读(126)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示