news 2026/4/16 10:53:23

MySQL 查询数据_笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 查询数据_笔记
SELECT —— 查询数据
  • 语法
    -- mysql数据库中查询数据通用的SELECT语法 SELECT column1,column2,.... FORM table_name [WHERE condition] [ORDER BY column_name[ASC|DESC]] [LIMT number] -- column1,column2,...是想要选择的列的名称,如果使用*表示选择所有列。 -- table_name 是要从中查询数据的名称 -- WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行 -- ORDER BY column_name[ASC|DESC]是一个可选的子句,用于指定结果集的排序顺序,默认升序(ASC) -- LIMIT number 是一个可选的子句,用于限制返回的行数
  • WHWRE 子句

    从MySQL表中使用SELECT语句来读取数据,如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句中。WHERE子句用于在MySQL中过滤查询结果,只返回满足特定条件的行。

    • 语法

      -- SQL SELECT 语句使用WHERE子句从数据表中读取数据的通用语法 SELECT column1,column2,... FORM table_name WHERE condition;
      • 更多说明

        1. 查询语句中可以使用一个或者多个表,表之间使用逗号,分割,并使用WHERE语句来设定查询条件。
        2. 可以在WHERE子句中指定任何条件
        3. 可以使用AND或者OR指定一个或多个条件
        4. WHERE子句也可以运用于SQL的DELETE或者UPDATE命令
        5. WHERE子句类似于程序语言中的if条件,根据MySQL表中的字段值来读取指定的数据
      • 简单实例

        -- 1.等于条件 SELECT * FROM users WHERE username = 'test'; -- 2.不等于条件 SELECT * FROM users WHERE username != 'runoob'; -- 3.大于条件 SELECT * FROM products WHERE price > 50.00; -- 4.小于条件 SELECT * FROM orders WHERE order_date <'2023-01-01'; -- 5.大于等于条件 SELECT * FROM employees WHERE salary >= 50000; -- 6.小于等于条件 SELECT * FROM students WHERE age <= 21; -- 7.组合条件(AND,OR) *** SELECT * FROM products WHERE category='Electronics' AND price >100.00; -- 8.模糊匹配条件(LIKE) *** SELECT * FROM customers WHERE frist_name LIKE 'J%'; -- 9.IN 条件 SELECT * FROM countries WHERE country_code IN('US','CA','MX'); -- 10.NOT 条件 SELECT * FROM products WHERE NOT category = 'Colthing';

      – 11.BETWEEN条件 ***
      SELECT * FROM orders WHERE order_date BETWEEN ‘2023-01-01’ AND ‘2023-12-31’;
      – 12.IS NULL 条件
      SELECT * FROM customers WHERE email IS NOT NULL;

  • LIKE 子句

    LIKE 子句中使用百分号 % 字符来表示任意字符,类似于UNIX或正则表达式中的星号*。

    如果没有使用百分号%,LIKE子句与等号 = 的效果是一样的。

    • 语法

      -- SQL SELECT 语句使用LIKE子句数据表中读取数据的通用语法。

    SELECT column1,column2,…
    FROM table_name WHERE column_name LIKE pattern;

    – column_name 是你要应用LIKE 子句的列的名称
    – pattern 是用于匹配的模式,可以包含通配符。

    - **更多说明** 1.你可以在WHERE子句中指定任何条件 2.你可以在WHERE子句中使用LIKE子句 3.你可以使用LIKE子句代替等号= 4.LIKE通常与%一同使用,类似于一个元字符的搜索 5.你可以使用AND或者OR指定一个或多个条件 6.你可以在DELETE或UPDATE命令中WHERE....LIKE子句来指定条件 - **实例** ```mysql -- 1.百分号通配符 % -> %通配符表示零个或多个字符,例如,'a%'匹配以字母'a'开头的任何字符串。 SELECT * FROM customers WHERE last_name LIKE 'S%'; -- 2.下划线通配符 _ -> _通配符表示一个字符。例如,'_r%'匹配第二个字符为'r'的任何字符串。 SELECT * FROM products WHERE product_name LIKE '_a%'; -- 3.组合使用 % 和_; -> 例如,'aaron','apol' SELECT * FROM users WHERE username LIKE 'a%o_'; -- 4.不区分大小写的匹配 SELECT * FROM employees WHERE last_name LIKE 'smi%'COLLATE utf8mb4_general_ci; ```
  • UNION 操作符

    UNION 操作符用于连接两个以上的SELECT语句的结果组合到一个结果集合,并去除重复的行

    UNION 操作符必须由两个或多个SELECT语句组成,每个SELECT语句的列数和对应位置的数据类型必须相同。

    • 语法

      -- UNION 操作符语法格式

    SELECT column1,column2,… FROM table1 WHERE condition1 UNION SELECT column1,column2,… FROM table2 WHERE condition2 [ORDER BY column1,column2,…];

  • ORDER BY(排序)语句

    ORDER BY(排序)语句可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。

    • 语法

      以下是SELECT语句使用ORDER BY子句将查询数据排序后再返回数据

      SELECT column1,column2,... FROM table_name ORDER BY column1[ASC|DESC],column2[ASC|DESC],...; -- ORDER BY column1[ASC|DESC],column2[ASC|DESC],... 是用于指定排序顺序的子句。ASC表示升序(默认),DESC表示降序。
    • 更多说明

      1. 可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
      2. 可以设定多个字段来排序
      3. 可以使用ASC或DESC关键字来设置查询结果是按升序或降序排序。默认情况下,它是按升序排序。
      4. 你可以添加WHERE…LIKE子句来设置条件。
    • 实例

      1. 单列排序

        SELECT * FROM products ORDER BY product_name ASC -- 选择产品表 products 中的所有产品,并按产品名称升序 ASC 排序。
      2. 多列排序

        SELECT * FROM employess ORDER BY department_id ASC,hire_data DESC; -- 选择员工表 employees 中的所有员工,并先按部门 ID 升序 ASC 排序,然后在相同部门中按雇佣日期降序 DESC 排序。
      3. 使用数字表示列的位置

        SELECT first_name,last_name,salary FROM employess ORDER BY 3 DESC,1 ASC -- 选择员工表 employees 中的名字和工资列,并按第三列(salary)降序 DESC 排序,然后按第一列(first_name)升序 ASC 排序。
      4. 使用表达式排序

        SELECT product_name,price * discount_rate AS discounted_price FROM products ORDER BY discounted_price DESC; -- 选择产品表 products 中的产品名称和根据折扣率计算的折扣后价格,并按折扣后价格降序 DESC 排序。
  • GROUP BY 语句

    GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用COUNT,SUM,AVG等函数。

    GROUP BY语句是SQL查询中用于汇总和分析数据的重要工具,尤其在处理大量数据时,它能够提供有用的汇总信息。

    • 语法

      SELECT column1,aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1; -- column1 指定分组的列 -- aggregate_function(column2) 对分组后的每个组执行的聚合函数。 -- table_name 要查询的表名 -- condition 可选,用于筛选结果的条件
    • 实例

      -- 假设有一个名为 orders 的表,包含以下列:order_id、customer_id、order_date 和 order_amount。按照 customer_id 进行分组,并计算每个客户的订单总金额。 SELECT customer_id ,SUM(order_amount) AS total_amount FROM orders GROUP BY customer_id;
  • MySQL 连接的使用

    使用MySQL 的JOIN在两个或多个表中查询数据

    JOIN按照功能大致分为如下三类:

    • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录

      -- INNER JOIN 返回两个表中满足连接条件的匹配行 SELECT column1,column2,...FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; -- table1.column_name = table2.column_name 是连接条件,指定了两个表中用于匹配的列。
    • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

      -- LEFT JOIN 返回左表的所有行,并包括右表中匹配的行,如果右表中没有匹配的行,将返回 NULL 值 SELECT column1,column2,... FROM table1 LEFT JOIN table2 ON table1.column_name = table2.coumn_name;
    • RIGHT JOIN(右连接):与LEFT JOIN相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

      -- RIGHT JOIN 返回右表的所有行,并包括左表中匹配的行,如果左表中没有匹配的行,将返回 NULL 值 SELECT column1,column2,... FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 23:30:18

城通网盘直链提取:如何用免费工具突破下载速度限制

ctfileGet作为一款专注于城通网盘直链提取的免费工具&#xff0c;通过智能解析技术让文件下载变得简单高效。无论你是普通用户还是开发者&#xff0c;这款开源工具都能为你带来全新的下载加速体验&#xff0c;彻底告别繁琐的等待和广告干扰。 【免费下载链接】ctfileGet 获取城…

作者头像 李华
网站建设 2026/4/15 2:10:02

终极离线思维导图:DesktopNaotu桌面版脑图完整使用指南

终极离线思维导图&#xff1a;DesktopNaotu桌面版脑图完整使用指南 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版&#xff0c;思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址: https://gitcode.com/gh_mi…

作者头像 李华
网站建设 2026/4/14 20:11:30

FLUX.1-dev + Three.js:打造3D可视化AI生成新体验

FLUX.1-dev Three.js&#xff1a;打造3D可视化AI生成新体验 在数字内容创作的前沿&#xff0c;我们正见证一场静默却深刻的变革——从“人工绘制”到“语言驱动”的视觉生产范式迁移。想象这样一个场景&#xff1a;设计师输入一句“极光下的机械森林&#xff0c;蒸汽朋克风格”…

作者头像 李华
网站建设 2026/4/8 20:44:30

Transformer模型详解进阶篇:Qwen-Image中的交叉注意力机制

Transformer模型进阶&#xff1a;Qwen-Image中的交叉注意力机制解析 在如今AIGC浪潮席卷内容创作领域的背景下&#xff0c;文生图&#xff08;Text-to-Image&#xff09;技术早已不再只是“输入一句话生成一张图”那么简单。用户期待的是更精准的语义理解、更细腻的空间控制&am…

作者头像 李华
网站建设 2026/4/16 10:14:22

Java五大阻塞队列:架构差异

深度剖析Java五大阻塞队列&#xff1a;架构差异与实战选型指南引言&#xff1a;并发编程中的队列革命在现代高并发系统中&#xff0c;线程间的数据传递和协调是核心挑战之一。传统的线程同步机制如synchronized和wait/notify虽然功能强大&#xff0c;但使用复杂且容易出错。Jav…

作者头像 李华