MySQL 学习笔记3 -- 常用查询方式

0.本篇博客核心内容

提供了几种常用的SQL查询模板: 单表, 多表, 自连接

1. 普通条件查询

假设我们有一张商品表

SELECT *                                  # 你想查找商品表的什么字段? * 代表所有字段
FROM goods                                # 你想查找哪一张表的数据? 这里是商品表             
WHERE type = 'iPhone 11' AND price < 6000 # 你想筛选出什么数据用什么筛选条件 ?

2. 子查询

利用内层查询返回的结果进行二次查询就叫子查询

SELECT name , price          #查找价格的大于平均值的商品
FROM goods
WHERE price > (
	SELECT AVG( price )
	FROM goods
)

3. 内连接查询

内连接图示
假设我们有商品表 ( goods ) 和商品类型表 ( type )

SELECT *
FROM goods gs INNER JOIN type tp ON gs.type_id = tp.id
WHERE gs.enable = 1

含义: 查找商品详情( 基础详情 + 类型详情 )
INNER JOIN 连接两张表; ON表示连接条件; WHERE 代表筛选条件, 筛选上架的商品

4. 外连接查询

4.1 左外连接查询

左外连接

SELECT *
FROM goods gs LEFT OUTER JOIN type tp ON gs.type_id = tp.id

查找所有与左表连接条件的数据, 找不到连接条件则为右表数据为 null

4.2 右外连接查询

右外连接与左外连接相反

SELECT *
FROM goods gs RIGHT OUTER JOIN type tp ON gs.type_id = tp.id

查找所有与右表连接条件的数据, 找不到连接条件则为左表数据为 null

5. 自身连接查询

假设有一个菜单表

CREATE TABLE `menu` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`type` CHAR(50) NOT NULL COLLATE 'utf8_general_ci',
	`parent_id` INT(11) NOT NULL DEFAULT '0' COMMENT '父节点id,0表示顶层菜单',
	PRIMARY KEY (`id`) USING BTREE
)
COMMENT='商品菜单表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

在这里插入图片描述
ps: 0 代表没有父级元素;

SELECT f.id, f.type, s.id AS child_id, s.type AS child_type
FROM menu f LEFT OUTER JOIN menu s
ON f.id = s.parent_id

将同一张表看成两张表进行左外连接, 就是自身连接查询
自身连接查询

题外话: 听说这样的表能够设计一个无限级菜单, 但是我现在还不会, 学会了再补充上去吧.
2020年7月20日21:17:44 – 广州黄埔

以上就是我学习SQL语言提取出来的几种常用查询案例代码, 希望能够熟练掌握SQL 语言吧, 因为即使是在JPA , MyBatis等ROM框架大行其道的时代,原汁原味的SQL在复杂的多表关联需求下依然有着大用处

如果有小伙伴看到这里, 我想分析一个理念,共同勉励.


少既是多, 慢既是块, 理解的多了记忆的就少了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值