MySql JOIN

news/2024/10/6 1:45:44

MySql JOIN

背景

最近在做一些项目时需要对数据库进行简单的 select ,由于之前一直在做 HTML + JS + CSS 所有对数据库不是很了解,现在从 0 开始学习,每天学习一点,做个理解总结。有理解偏差欢迎留言指正。

简介

JOIN 用于根据两个或多个表之间关系,查询数据

  • inner join 内连接
  • left join 左连接
  • right join 右连接

准备两张表 customers、 orders 内容如下:

  • 表 customers

Alternative Text

  • 表:orders

Alternative Text

inner join 内连接

  • 查询两个表中,满足条件的记录
  • 查询条件是两个表的公共部分

语法

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
  • column_name(s) 表示需要查询的字段
  • table1 表示第一个表
  • table2 表示第二个表
  • ON table1.column_name=table2.column_name 表示两个表的连接条件

示例

select * from customers
inner join 
orders
on orders.city = customers.city;
  • 查询 customers 表和 orders 表中 city 相同的记录

  • 结果:

Alternative Text

left join 左连接

  • 查询以左表为主按照条件查询连接两张或多张表

语法

select * from 
table1
left join
table2 
on table1.column_name=table2.culumn_name
  • 查询所有 table1 表中数据 按照 table1.column_name=table2.culumn_name 条件连接,table2 表中缺失数据 null 补全

  • 表:customers orders

示例

select * from 
customers
left join orders
on customers.city = orders.city;
  • 结果

Alternative Text

right join 有关联

  • 输出右表所有值,左表输出两个表值相同项,缺失数据补null

语法

select * from 
table1
right join
table2
on table1.column_name = table1.column_name

示例

select * from 
customers
right join
orders o
on customers.city = orders.city
  • 查询 table2 表中所有数据 按照 table1.column_name=table2.culumn_name 条件连接,table1 表中缺失数据 null 补全
  • 结果

Alternative Text

多连接查询

select * from customers
left join orders o on customers.city = o.city
right join suppliers s on customers.city != s.city
where o.city = '深圳';
  • 结果

Alternative Text

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/43110.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

presto 查询调度流程 (Coordinator Scheduler)

based on tag: 0.287 presto的 scheduler 是 SqlQueryScheduler 这个类控制的, 这个class主要是负责调度物理执行计划。调度具体的每个SqlStageExecution. 这个Stage可以当成Fragment的一个概念他会先把所有的stage创建一个schedule计划。一共有两种schedule计划,一个是all-at…

MyBatisX插件逆向工程和SQL生成使用

1.MyBatisX插件逆向工程将表映射成实体类 在IDEA中装好MyBatisX插件并连接数据库后,对咬映射成实体类的表点击鼠标右键,如下图所示:之后会弹出如下界面:然后根据如图信息进行配置,点击next。如果使用的是MyBatis-Plus3直接按照下图选项即可:至此结束逆向工程将表映射成实…

RSA算法中,为什么需要的是两个素数?

RSA算法是一种广泛使用的非对称加密技术,基于大数分解的困难性。本文将探讨为什么RSA算法需要两个素数,并以通俗易懂的例子解释其原理,同时提供专业分析和必要的数学背景。PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态…

2024-06-11 微信小程序上传代码提示超过xx兆?==》npm run build

平常上传小程序都是直接点上传,这个会直接把dev的包给上传,自然会比较大,可以通过命令npm run build来压缩包,从而减少包的体积 然后用微信开发者工具新建一个项目,选中build包,点击上传即可

Gitee仓库+宝塔WebHook实现线上与仓库代码同步更新

本文由 ChatMoney团队出品进行以下操作时,请确保已经在gitee添加了SSH公钥(Gitee个人设置->SSH公钥)宝塔上安装WebHook​编辑​找到WebHook,点击设置,点击添加,名称自行根据项目填写,脚本填写以下代码: #!/bin/bash echo "" # 输出当前时间 date --date=0…

数据可视化是如何在智慧展厅中发挥作用的?

数据可视化是如何在智慧展厅中发挥作用的?随着科技的进步,智慧展厅成为展示信息、互动体验和传递品牌价值的前沿平台。数据可视化作为智慧展厅的重要组成部分,通过将复杂的数据转化为直观的图形、图表和互动界面,极大地提升了展厅的展示效果和观众的参与感。首先,数据可视…

Vue 打包 Error: error:0308010C:digital envelope routines::unsupported

这个错误通常与Node.js的加密模块和OpenSSL版本有关 出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响. js/app.8d066b51.js from Terser Error: error:0308010C:digital envelope…

Java整合FreeMarker导出Pdf文件

引入依赖 <!--Freemarker wls--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.30</version></dependency><dependency><groupId>com.itextpdf.tool<…