MySQL必知必会 学习笔记 第十四章 使用子查询

2023-11-01

MySQL 4.1引入了子查询。

任何SQL语句都是查询,但此术语一般指SELECT语句。

有两张表,一张是语言表,一张是电影表:
在这里插入图片描述
选出语言是英语的电影:

SELECT title
FROM film
WHERE language_id IN (SELECT language_id
                      FROM language
                      WHERE name = 'English');

能嵌套的子查询没有数量限制,但由于性能限制,不能嵌套太多子查询。

上例中的IN也可换成等于号。

子查询并不总是这种类型的数据检索的最有效的方法。

子查询的运行总是从内到外。

子查询也可作为计算字段,下例计算出每种语言的电影数:

SELECT language_id,
       name,
       (SELECT COUNT(*)
        FROM film
        WHERE film.language_id = language.language_id) AS num
FROM language;

运行它:
在这里插入图片描述
上例显示film表中仅有英文电影。上例中的子查询被执行了六次,因为有六种语言。

如果上例的子查询中不使用完全限定的表名:
在这里插入图片描述
此时MySQL假定是对film表中language_id的自身比较,子查询总是返回全部值。

在调试嵌套的子查询SQL语句时,可先运行子查询,看是否符合预期,符合后再拼接子查询,便于调试。

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

MySQL必知必会 学习笔记 第十四章 使用子查询 的相关文章

  • MYSQL必知必会:格式化导入导出数据集

    在mysql中 我们可以把查询到的结果集通过自定义的格式打印到指定文件内 指定文件不存在 如果指定文件存在 则失败 下面是表结构合表数据 1 格式化导出数据 把表order info的所有记录的所有字段导入到 d 1 sql 文件内 sel
  • MySQL必知必会 学习笔记 第三章 使用MySQL

    为连接到MySQL 需要 1 主机名 如连接到本地MySQL服务器 为localhost 2 端口 如使用默认的3306以外的端口 3 用户名 4 用户口令 连接到MySQL时 没有任何数据库打开供你使用 打开数据库 use databas
  • MySQL必知必会 学习笔记 第十九章 插入数据

    插入可用以下方式进行 1 插入完整行 2 插入行的一部分 3 插入多行 4 插入某些查询的结果 可针对每个表或每个用户 利用MySQL的安全机制禁止使用INSERT语句 插入语句没有输出 插入完整的行 INSERT INTO tableNa
  • MySQL必知必会——第十四章使用子查询

    使用子查询 本章介绍什么是子查询以及如何使用它们 子查询 SELECT语句是SQL的查询 目前我们用的所有SELECT语句都是从单个数据库表中检索数据的单条简单语句 查询 query 任何SQL语句都是查询 但此术语一般指SELECT语句
  • MySQL必知必会 学习笔记 第一章 了解SQL

    数据库是保存有组织的数据的容器 通常是一个或一组文件 数据库软件称为DBMS 数据库管理系统 数据库是被DBMS创建和操纵的容器 数据库究竟是文件或其他东西并不重要 因为你不会直接访问数据库 而是间接通过DBMS替你访问数据库 表是某种特定
  • MySQL必知必会 学习笔记 第二十七章 全球化和本地化

    不同的语言和字符集需要以不同的方式存储和检索 MySQL需要适应不同的字符集 以及排序和检索这些数据的方法 术语 1 字符集 字母和符号的集合 2 编码 某个字符集成员的内部表示 3 校对 规定字符如何比较 查看MySQL支持的字符集列表
  • MySQL必知必会 学习笔记 第十四章 使用子查询

    MySQL 4 1引入了子查询 任何SQL语句都是查询 但此术语一般指SELECT语句 有两张表 一张是语言表 一张是电影表 选出语言是英语的电影 SELECT title FROM film WHERE language id IN SE
  • MySQL必知必会——第十章创建计算字段

    创建计算字段 本章介绍什么是计算字段 如何创建计算字段以及怎样从应用程序中使用别名引用它们 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式 例如 想在一个字段中显示公司名和地址 但公司名和地址在不同的列中等等 我们需要直接从数
  • MySQL必知必会 学习笔记 第九章 用正则表达式进行搜索

    正则表达式是用来匹配文本的特殊的串 它用正则表达式语言来建立 MySQL支持的正则表达式仅为正则表达式的一个很小的子集 可通过WHERE子句使用正则表达式过滤SELECT检索出的数据 检索条件列包含字符100的所有行 SELECT colu
  • MySQL必知必会——第十六章创建高级联结

    创建高级联结 本章将讲解另外一些联结类型 包括它们的含义和使用方法 介绍如何对被联结的表使用表别名和聚集函数 使用表别名 第十章 MySQL必知必会 第十章创建计算字段 介绍了如何使用别名引用表列 mysql gt SELECT Conca
  • MySQL必知必会——第十七章组合查询

    组合查询 本章讲述如何利用UNION操作符将多条SELECT语句组合成一个结果集 组合查询 多数SQL查询都只包含从一个或多个表中返回数据的单条SELECT语句 MySQL也允许执行多个查询 并将结果作为单个查询结果返回 这些组合查询通常称
  • MySQL必知必会——第二十章更新和删除数据

    更新和删除数据 本章介绍如何利用UPDATE和DELETE语句进一步操纵表数据 更新数据 为了更新 修改 表中的数据 可以使用UPDATE语句 UPDATE的两种用法 更新表中特定行 更新表中所有行 不要省略WHERE子句 缺少WHERE子
  • MySQL必知必会 学习笔记 第二十八章 安全管理

    用户应该具有适当的访问权 既不能多也不能少 MySQL Administrator提供了图形界面 可用来管理用户和账号权限 MySQL创建一个名为root的用户账号 它对整个MySQL服务器有完全的控制 在日常工作中 决不能使用root 而
  • MySQL必知必会 学习笔记 第七章 数据过滤

    可用AND操作符给WHERE子句附加条件 SELECT columnName FROM tableName WHERE columnName1 1 AND columnName2 2 OR操作符指示MySQL匹配符合操作符任一端条件的行 S
  • MySQL必知必会——第六章过滤数据

    过滤数据 本章将讲授如何使用SELECT语句的WHERE子句指定搜索条件 使用WHERE子句 数据库一般包含大量的数据 很少需要检索表中所有的行 通常只会根据需求来提取部分表数据 只检索所需数据需要指定搜索条件 search criteri
  • MySQL必知必会 学习笔记 第二十三章 使用存储过程

    MySQL 5中增加了存储过程的支持 一个操作需要多条SQL语句才能完成时 可以创建存储过程 其中保存一条或多条SQL语句 使用存储过程的理由 1 通过把处理封装在容易使用的单元中 简化复杂的操作 2 所有人都使用同一存储过程代替某复杂操作
  • MySQL必知必会 学习笔记 第十八章 全文本搜索

    并非所有引擎都支持全文本搜索 MyISAM支持 更新 1 MySQL 5 6 以前的版本 只有 MyISAM 存储引擎支持全文索引 2 MySQL 5 6 及以后的版本 MyISAM 和 InnoDB 存储引擎均支持全文索引 3 只有字段的
  • MySQL必知必会 学习笔记 第二十二章 使用视图

    MySQL 5添加了对视图的支持 视图是虚拟的表 它包含的是一个查询的结果 它本身不含数据 只是用来查看存储在别处的数据的一种设施 视图返回的数据是从其他表中检索出来的 在添加或更改这些表中的数据时 视图将返回改变过的数据 视图的应用 1
  • MySQL必知必会——第四章检索数据

    检索数据 本章将介绍如何使用SELECT语句从表中检索一个或多个数据列 SELECT语句 SQL语句是由简单的英语单词关键字构成的 每个SQL语句都由一个或多个关键字构成 最常用的SQL语句就是SELECT语句 它的用途是从一个或多个表中检
  • MySQL必知必会 学习笔记 第二十五章 使用触发器

    触发器在MySQL 5中增加 触发器可以在MySQL响应DELETE INSERT UPDATE语句时自动执行一条SQL语句 MySQL 5中触发器名在每个表中唯一而不是在一个数据库中唯一 其他DBMS有的重名限制是数据库范围 以后MySQ

随机推荐