MySql中的查询语法(三)--连接查询

2023-11-10

连接查询是一种类型的多表查询。连接查询对多个表进行JOIN运算,简单地说,就是先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上。

如何查询出每一和学生所在的班级名称?

就可以使用连接查询,例如,最常用的一种内连接——INNER JOIN来实现:

SELECT student.name,class.class_name from student INNER JOIN class on student.class_num = class.class_num;

注意INNER JOIN查询的写法是:

  1. 先确定主表,仍然使用FROM 的语法;
  2. 再确定需要连接的表,使用INNER JOIN 的语法;
  3. 然后确定连接条件,使用ON ,这里的条件是student.class_num = class.class_num,表示student表的class_num 列与class表的class_num列相同的行需要连接;
  4. 可选:加上WHERE子句、ORDER BY等子句。

使用别名不是必须的,但可以更好地简化查询语句。

除了内连接以外还有外连接,两者的区别如下

左连接

SELECT student.name,class.class_name from student LEFT JOIN class on student.class_num = class.class_num;

右连接

SELECT student.name,class.class_name from student RIGHT JOIN class on student.class_num = class.class_num;

 还存在第四种连接,不过应用场景较少。

全连接

SELECT student.name,class.class_name from student FULL JOIN class on student.class_num = class.class_num;

与外连接相同,一个表中需列出但另外一个表中没有关联记录的时候,即没有对应的就用null补充。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySql中的查询语法(三)--连接查询 的相关文章

  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 执行mvn sql:execute时出错

    我希望 Maven 执行该 sql 文件 它生成的数据库模式稍后将在我的程序中使用 但它不起作用 可能是由 DELIMITER 引起的 当我执行 mvn sql execute 时 它会打印出 ERROR Failed to execute
  • Gmail 搜索怎么这么快?

    搜索这么多字符的最有效方法是什么 你怎么认为 假设网站是用 PHP 和 MySQL 构建的 我应该学习什么才能尽可能有效地构建它 有什么我应该学习的算法吗 文本索引算法 https stackoverflow com questions 4
  • 使用包含 [模板]、[编码]、[所有者] 的批处理文件和 .sql 文件创建 Postgres 数据库

    我想使用批处理文件创建 Postgres 数据库 现在执行此操作的正常方法如下 C Program Files PostgreSQL 9 0 bin createdb exe U Myadmin MydatAbseName 上面的脚本使用默
  • 如何在 kubernetes 上使多个 pod 相互通信

    我是 Kubernetes 新手 我正在尝试通过 microk8s 将应用程序部署到 Kubernetes 该应用程序包含Python Flask后端 Angular前端 Redis和MySQL数据库 我将映像部署在多个 Pod 中 状态显
  • Laravel - 重复键批量插入更新大数据集

    我有大约 80k 条记录 每天需要多次运行插入 更新脚本 INSERT INTO my rankings id rank VALUES 1 100 2 99 3 102 80000 3 ON DUPLICATE KEY UPDATE ran
  • 如何更改mysql.sock?

    我已经通过二进制安装安装了mysql并按照以下步骤操作http dev mysql com doc refman 5 0 en binary installation html http dev mysql com doc refman 5
  • 更改列名称 Rails

    我有这张表 class CreateShoes lt ActiveRecord Migration def change create table shoes do t t string name t boolean leather t i
  • 当有“拥有”时,为什么你有“哪里”[重复]

    这个问题在这里已经有答案了 我知道这个问题已经被讨论了很多 但我的研究都无法让我相信 where and havingMySQL 中的 子句 据我了解 我们可以使用 where 子句实现所有可以完成的操作having 例如 select f
  • 当我在 MySQL 中使用 UUID 作为主键时,会如何影响性能

    我想知道当我在 MySQL 中使用 UUID 作为主键时 会对服务器的性能产生怎样或多大的影响 我想你正在使用InnoDB 无论如何你应该 因此 请阅读 高性能 MySQL 2ed 第 117 页中的以下章节 一般来说 从性能的角度来看 U
  • Mac 上的 Emacs 和 MySQL

    我尝试使用 sql mysql 模式 但 emacs 无法找到文件 目录 mysql 但是 我可以从终端访问它 如何将 emacs 中的 mysql 指向 usr local mysql bin mysql setq sql mysql p
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • 对不同的数据库和表进行一次性查询

    我有一个 Rails 应用程序 侧面有一个 WordPress 博客 完全单独位于 blog 客户想要 Rails 应用程序主页上的最新博客文章 因此我需要对 word press 数据库进行一次性 mysql 查询 我将如何在 Rails
  • MySQL 查询按父级排序然后子级排序

    我的数据库中有一个页面表 每个页面可以有一个父页面 如下所示 id parent id title 1 0 Home 2 0 Sitemap 3 0 Products 4 3 Product 1 5 3 Product 2 6 4 Prod
  • 使用 unnest() 返回行?

    我尝试在完成后返回一组行UPDATE 像这样的东西 UPDATE Notis new noti SET notis noti record type FROM SELECT FROM Notis WHERE user id 2 FOR UP
  • MySQL - 使用可变路径加载数据文件

    我在设置用于将数据放入表中的变量路径时遇到问题 这就是我构建路径的方式 SET path1 CONCAT C Projekte Metrics DXL CSV EXPORT DATA YEAR NOW MONTH NOW DAY NOW B
  • 将 python 列表存储到数据库的最佳方法?

    将 python 数字列表 例如 4 7 10 39 91 存储到数据库的最佳方法是什么 我使用 Pyramid 框架和 SQLAlchemy 与数据库进行通信 Thanks 您可以使用json http docs python org l
  • WooCommerce 中的分页

    我使用这个短代码在页面上显示产品的类别 但是当我们使用它时 它不会显示分页 因为我们的类别中有很多产品 我们使用以下代码 product category category snowpeak per page 12 columns 4 or
  • MySQL JDBC 连接上的故障转移?

    我正在尝试确定如何使用 MySQL JDBC 驱动程序实现高可用性解决方案 似乎有一个我可以设置的故障转移属性 但我想知道当使用 MySQL 和 JDBC 实现简单的故障转移机制时 人们倾向于使用什么 我们计划将 2 个前端 Tomcat
  • BIT(1) 的存储大小是多少?

    我一直认为a的存储大小BIT 1 列为 1 位 But http dev mysql com doc refman 5 6 en storage requirements html http dev mysql com doc refman

随机推荐

  • ubuntu升级python版本(3.5->3.6)

    安装aioredis时提示Python版本需 gt 3 5 3 所以进行升级 命令如下 获取最新的python3 6 将其添加至当前apt库中 并自动导入公钥 sudo add apt repository ppa jonathonf py
  • Tomcat日志文件过大导致系统故障处理办法

    1 远程登录系统 2 查看日志文件 catalina out 文件大小 root localhost cd usr local apache tomcat logs root localhost logs du h catalina out
  • 创建Javaweb、导入jar包、配置Tomcat

    一 第一大步 新建一个项目 文件 新建 项目 空项目 项目名称 可以随便起 与3要保持一致 一般情况3会在2后自动生成 点完成即可 第二大步 新建模块 文件 新建 模块 java模块 点击下一步即可 模块名称 起名字 完成 第三大步 让模块
  • mac pro 安装arduino ide 驱动

    mac pro 安装arduino ide 需要安装额外驱动去识别USB 直接安装下面文件即可解决
  • cas 5.2.0登陆界面添加验证码和校验功能

    本文分为4个部分 1 登录界面添加验证码 2 自定义登录对象 增加一个验证码字段 3 自定义cas的登录流程 完成自定义校验 4 返回自定错误信息 1 配置验证码 生成验证码 使用google的kaptcha 需引入jar的包如下
  • 凡科建站上传html,如何将自己设计的网页上传到网站上?如何把自己制作的网页上网?自己在本地建的网站,别人怎么访问?...

    如何将自己设计的网页上传到网站上 如何把自己制作的网页上网 自己在本地建的网站 别人怎么访问 下面就来一起看看吧 如何将自己设计的网页上传到网站上 首先租用空间保管网页和程序文件 租用域名 申请通过 关于免费建站 然后将空间IP地址分析到域
  • 区块链节点和区块区别_区块链的节点是什么?

    区块链节点 通常指的是区块链网络中的计算机 也就是说任何连接到区块链网络的计算机 包括手机 矿机等 都称为节点 比如说比特币网络是一个公有链 用户在自己的联网电脑上运行比特币程序时 这个电脑就成为比特币区块链网络中的一个节点 操作一个节点可
  • 容器类对象:枚举 NSEnumerator、字典

    一 枚举 NSEnumerator 依附于集合类 NSArray NSSet NSDictionary 没有用来创建实例的接口 NSEnumerator的nextObject方法可以遍历每个集合元素 结束返回nil 通过与while结合使用
  • Upload-labs文件上传漏洞(大小写绕过)——Pass05

    0 00 题目描述 真好把上一题的 htaccess文件也给黑名单限制了 与Pass04做个比较 0 01 源码分析 is upload false msg null if isset POST submit if file exists
  • Linux——多线程以及多线程并发访问同一块内存的问题

    前言 为什么需要多线程 并行实体共享同一个地址空间和所有可用数据 的这种能力是多进程锁无法表达的 因为多进程具有不同的地址空间 线程比进程更加轻量级 更加快速 需要大量IO处理和计算时 拥有多线程 能够很明显地提升性能 在多CPU系统中 多
  • 多个项目引用,如何打包项目成为war,jar包

    原文链接 多个项目引用 如何打包项目成为war jar包 推荐导入项目 IDEA如何导入多个maven项目在pox引入自建包 那么我们导入了多个项目的依赖关系后 随之而来产生多个项目 那我们打包的时候 应该如何将其建在一个war或war包
  • SATA电源线和数据线接口定义

    SATA电源线和数据线接口定义 SATA是Serial ATA的缩写 即串行ATA 2001年 由Intel APT Dell IBM 希捷 迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA 1 0规范 2002
  • 计算1---100不能被5整除的数,并每五个为一行输出

    思路 1 先输出1 100的数 2 输出不能被5整除的数 i 5 0 3 每五个一行 使用int count统计输出的个数 然后判断 条件满足输出一个换行j即可 int count 0 统计输出的个数 for int i 1 i lt 10
  • 【SpinalHDL】java.io.IOException: Cannot run program “sh.exe“问题解决

    1 问题 Runtime SpinalHDL v1 6 0 git head 73c8d8e2b86b45646e9d0b2e729291f2b65e6be3 Exception in thread main java io IOExcep
  • python selenium span_如何使用selenium从span获取文本

    此链接摘录 正如WebDriver规范中定义的 Selenium WebDriver只与可见元素交互 因此不可见元素的文本将始终作为空字符串返回 在 但是 在某些情况下 可能会发现获取隐藏文本很有用 可以通过调用元素 属性 attribut
  • VSCode如何部署C语言环境

    文章目录 前提 1 安装 MinGW w64 2 配置 MinGW w64 环境变量 3 安装插件 4 新建 vscode文件夹 配置工作目录的环境 5 在c test 文件夹 创建HelloWord c文件 6 先 Terminal gt
  • java jdbc连接多个数据库

    第一次接触jdbc连接多个数据库 jdbc连接多个数据库 记录最近项目中用到了mysql数据库 并且连接多个库 网上查阅资料发现大部分让改造方法 于是我用了最笨的办法定义变量 并且在查询的时候代入变量 一 建立jdbc连接 public c
  • 备忘录之页面弹框在子窗口中传递参数或改变参数到父窗口

    1 首先要想能有弹框操作 本人用了windowUtil js如下插件 2 选择一个方法弹出窗口 function ShowOrgSelect id var url szy wsm jsp doJump2 jsp id id 要弹出的窗口页面
  • Android 关于prebuilt编译学习笔记

    一 问题背景 在进行Android源码编译的时候 执行make命令 有些prebuilt方式集成的so库总是无法自动编译出来 需要手动执行mmm命令才行 所以研究一下问题在哪 prebuilt方式把无源码的so apk或者可执行文件直接编译
  • MySql中的查询语法(三)--连接查询

    连接查询是一种类型的多表查询 连接查询对多个表进行JOIN运算 简单地说 就是先确定一个主表作为结果集 然后 把其他表的行有选择性地 连接 在主表结果集上 如何查询出每一和学生所在的班级名称 就可以使用连接查询 例如 最常用的一种内连接 I