当前位置: 首页 > news >正文

MySQL学习笔记15

1、内连接查询(重点):

基本语法:

select 数据表1.字段列表,数据表2.字段列表 from 数据表1 inner join 数据表2 on 连接条件;

案例:获取产品表中每个产品的分类信息:

mysql> select * from tb_goods inner join tb_category;
+----+-------------+---------+------+----+--------------+------+
| id | title       | price   | cid  | id | name         | pid  |
+----+-------------+---------+------+----+--------------+------+
|  1 | IPhone 11   | 5699.00 |    1 |  1 | 手机         |    0 |
|  1 | IPhone 11   | 5699.00 |    1 |  2 | 电脑         |    0 |
|  1 | IPhone 11   | 5699.00 |    1 |  3 | 游戏手机     |    1 |
|  2 | MI 10       | 4699.00 |    1 |  1 | 手机         |    0 |
|  2 | MI 10       | 4699.00 |    1 |  2 | 电脑         |    0 |
|  2 | MI 10       | 4699.00 |    1 |  3 | 游戏手机     |    1 |
|  3 | ThinkPad X1 | 9999.00 |    2 |  1 | 手机         |    0 |
|  3 | ThinkPad X1 | 9999.00 |    2 |  2 | 电脑         |    0 |
|  3 | ThinkPad X1 | 9999.00 |    2 |  3 | 游戏手机     |    1 |
|  4 | Nike air    |  999.00 |   10 |  1 | 手机         |    0 |
|  4 | Nike air    |  999.00 |   10 |  2 | 电脑         |    0 |
|  4 | Nike air    |  999.00 |   10 |  3 | 游戏手机     |    1 |
+----+-------------+---------+------+----+--------------+------+
12 rows in set (0.00 sec)mysql> select * from tb_goods inner join tb_category on tb_goods.cid = tb_category.id;
+----+-------------+---------+------+----+--------+------+
| id | title       | price   | cid  | id | name   | pid  |
+----+-------------+---------+------+----+--------+------+
|  1 | IPhone 11   | 5699.00 |    1 |  1 | 手机   |    0 |
|  2 | MI 10       | 4699.00 |    1 |  1 | 手机   |    0 |
|  3 | ThinkPad X1 | 9999.00 |    2 |  2 | 电脑   |    0 |
+----+-------------+---------+------+----+--------+------+
3 rows in set (0.00 sec)

然后,我们只要部分字段,那我们就要进行具体指定:

mysql> select tb_goods.*,tb_category.name from tb_goods inner join tb_category on tb_goods.cid = tb_cat
egory.id;
+----+-------------+---------+------+--------+
| id | title       | price   | cid  | name   |
+----+-------------+---------+------+--------+
|  1 | IPhone 11   | 5699.00 |    1 | 手机   |
|  2 | MI 10       | 4699.00 |    1 | 手机   |
|  3 | ThinkPad X1 | 9999.00 |    2 | 电脑   |
+----+-------------+---------+------+--------+
3 rows in set (0.00 sec)

产品表中的所有的字段和产品目录中的name字段。

内连接查询:把两个表甚至多个表进行连接,然后拿表1中的每一条记录与表2中的每一条记录进行匹配,如果有与之对应的结果,则显示。反之,则忽略这条记录。

2、外连接查询(重点):

内连接查询要求,表1和表2中的每一条记录都必须一一对应,如果无法匹配,则这条记录会被忽略掉,那如果我需要保留表1中的所有记录或者表2中的所有记录,怎么办?

答:使用外连接查询。

基本语法:

左外连接查询;把左表中的每一条数据都保留,右表匹配到结果就显示,匹配不到就NULL

select 数据表1.字段列表,数据表2.字段列表 from 数据表1 left join 数据表2 on 连接条件;

右外连接查询:把右表中的每一条数据都保留,左表匹配到结果就显示,匹配不到就NULL

select 数据表1.字段列表,数据表2.字段列表 from 数据表1 right join 数据表2 on 连接条件;

案例:获取产品表中的每个产品的分类信息,(无论匹配到与否)

mysql> select tb_goods.*,tb_category.name from tb_goods left join tb_category on tb_goods.cid = tb_category.id;
+----+-------------+---------+------+--------+
| id | title       | price   | cid  | name   |
+----+-------------+---------+------+--------+
|  1 | IPhone 11   | 5699.00 |    1 | 手机   |
|  2 | MI 10       | 4699.00 |    1 | 手机   |
|  3 | ThinkPad X1 | 9999.00 |    2 | 电脑   |
|  4 | Nike air    |  999.00 |   10 | NULL   |
+----+-------------+---------+------+--------+
4 rows in set (0.00 sec)

别名机制,简化内外连接

原始语句:

mysql> select tb_goods.*,tb_category.name from tb_goods left join tb_category on tb_goods.cid=tb_category.id;

给数据表起个简单的名字,如tb_category叫c,tb_goods叫g

① mysql> select * from tb_goods left join tb_category;
起别名
② mysql> select * from tb_goods g left join tb_category c;
写on条件
③ mysql> select * from tb_goods g left join tb_category c on g.cid=c.id;
筛选字段
④ mysql> select g.*,c.name from tb_goods g left join tb_category c on g.cid=c.id;

想成为高级的数据库管理员(DBA),数据库还是非常重要的。

作为运维人员,还是要做掌握一些知识。

http://www.lryc.cn/news/174817.html

相关文章:

  • 6、SpringBoot_项目的打包与运行
  • 图像语义分割概述
  • ViT细节与代码解读
  • Linux中软链接与硬链接的作用、区别、创建、删除
  • 第一章:最新版零基础学习 PYTHON 教程(第十四节 - Python 条件和循环语句–Python 中的 with 语句)
  • 安科瑞AMC16-DETT铁塔jizhan直流电能计量模块,直流计量用
  • WebGL笔记:WebGL中JS与GLSL ES 语言通信,着色器间的数据传输示例:js控制绘制点位
  • 一文读懂 Redis 缓存系统
  • 初识Java 10-1 集合
  • Linux- pipe()系统调用
  • 数据库常用指令
  • [Studio]Manifest merger failed with multiple errors, see logs 解决方法
  • 【数据结构与算法】不就是数据结构
  • 封装一个高级查询组件
  • 代码随想录第七章 栈与队列
  • SQL Server对象类型(5)——4.5. 同义词(Synonym)
  • IP风险查询:抵御DDoS攻击和CC攻击的关键一步
  • Tune-A-Video论文阅读
  • Dataset和DataLoader用法
  • 【跟小嘉学习区块链】二、Hyperledger Fabric 架构详解
  • springboot下spring方式实现Websocket并设置session时间
  • LeetCode算法二叉树—相同的树
  • 搭建Flink集群、集群HA高可用以及配置历史服务器
  • vscode终端中打不开conda虚拟包管理
  • 【音视频】MP4封装格式
  • 环境-使用vagrant快速创建linux虚拟机
  • 10.1网站编写(Tomcat和servlet基础)
  • 10CQRS
  • DAZ To UMA⭐一.DAZ简单使用教程
  • 面试题 —— Java集合篇(23题)