MySQL从入门到熟练查询

news/2025/10/10 9:20:57/文章来源:https://www.cnblogs.com/mygctong/p/19132363

MySQL 作为世界上最流行的开源关系型数据库,是我们每一位码农、数据分析师乃至产品经理都应掌握的核心工具。它以其高性能、高可靠性和易用性而闻名。掌握其基础知识,是通往后端开发、数据科学等领域的必经之路。

我将围绕以下几个核心要点,带你快速构建 MySQL 的知识体系。

一、 数据库与SQL:核心概念

  1. 数据库:一个存储和管理数据的仓库,可以看作一个电子化的文件柜。
  2. :数据库中实际存放数据的基本单位,由行和列组成。例如,一个 users 表用来存储所有用户信息。
  3. :表中的一个字段,定义了数据的类型和约束(如 id, name, email)。每一列都有特定的数据类型。
  4. :表中的一条记录(如一个用户的所有信息)。
  5. 主键:唯一标识表中每一行的一列或一组列(如 id)。主键的值必须唯一且不能为空。
  6. SQL:结构化查询语言,用于与数据库通信,进行数据定义、查询、操纵和控制。

二、 基础SQL语法:四大核心操作

SQL 语言主要分为四类,常被称为 CRUD

  • C - Create:使用 INSERT 语句向表中添加新记录。

    INSERT INTO users (name, email, age) VALUES ('张三', 'zhangsan@example.com', 25);
    
  • R - Read:使用 SELECT 语句从表中查询数据,这是最常用和最复杂的操作。

    -- 查询所有列
    SELECT * FROM users;-- 查询特定列
    SELECT name, email FROM users;-- 带条件的查询
    SELECT * FROM users WHERE age > 18;
    
  • U - Update:使用 UPDATE 语句修改表中已有的记录。

    UPDATE users SET age = 26 WHERE name = '张三';
    

    注意:务必使用 WHERE 子句,否则将更新表中所有行!

  • D - Delete:使用 DELETE 语句从表中删除记录。

    DELETE FROM users WHERE name = '李四';
    

    注意:务必使用 WHERE 子句,否则将清空整个表!

三、 关键查询技巧:让数据筛选更精准

  1. WHERE 子句:用于过滤记录,支持多种运算符。

    • 比较运算符:=, <>!=, >, <, >=, <=
    • 逻辑运算符:AND, OR, NOT
    • 范围匹配:BETWEEN ... AND ..., IN (...)
    • 模糊匹配:LIKE% 匹配多个字符,_ 匹配一个字符)
    SELECT * FROM users WHERE name LIKE '张%' AND age BETWEEN 20 AND 30;
    
  2. ORDER BY 子句:用于对结果集进行排序。

    • ASC:升序(默认)
    • DESC:降序
    SELECT * FROM users ORDER BY age DESC, id ASC; -- 先按年龄降序,再按id升序
    
  3. LIMIT 子句:限制返回的记录数量,常用于分页。

    SELECT * FROM users LIMIT 10; -- 返回前10条
    SELECT * FROM users LIMIT 5, 10; -- 从第6条开始(跳过5条),返回10条
    
  4. 聚合函数:对一组值执行计算并返回单个值。

    • COUNT():计数
    • SUM():求和
    • AVG():平均值
    • MAX() / MIN():最大/最小值
    SELECT COUNT(*) as total_users, AVG(age) as avg_age FROM users;
    
  5. GROUP BY 子句:将结果集按一列或多列分组,通常与聚合函数一起使用。

    -- 统计每个年龄段的用户数量
    SELECT age, COUNT(*) FROM users GROUP BY age;
    
  6. HAVING 子句:用于过滤分组后的结果集。WHERE 在分组前过滤行,而 HAVING 在分组后过滤组。

    -- 筛选出用户数量大于5的年龄段
    SELECT age, COUNT(*) as count FROM users GROUP BY age HAVING count > 5;
    

四、 表的设计与关系:数据类型与约束

  1. 常用数据类型

    • 整数INT, BIGINT, TINYINT
    • 小数DECIMAL(M, N)(精确小数),FLOAT, DOUBLE(近似小数)
    • 字符串VARCHAR(N)(可变长度),CHAR(N)(固定长度),TEXT(长文本)
    • 日期时间DATE, TIME, DATETIME, TIMESTAMP
  2. 重要约束

    • NOT NULL:确保列不能有 NULL 值。
    • UNIQUE:确保列中的所有值都不相同。
    • PRIMARY KEYNOT NULLUNIQUE 的结合。
    • FOREIGN KEY:保证一个表中的数据匹配另一个表中值的参照完整性。
    • DEFAULT:为列设置默认值。
    • AUTO_INCREMENT:自动为列生成唯一的、递增的数字(通常用于主键)。

五、 连接查询:多表关联的灵魂

当需要从多个表中获取关联数据时,就需要使用连接查询。

  • INNER JOIN:返回两个表中匹配的行。

    SELECT orders.order_id, users.name
    FROM orders
    INNER JOIN users ON orders.user_id = users.id;
    
  • LEFT JOIN:返回左表的所有行,以及右表中匹配的行。如果右表无匹配,则结果为 NULL。

    SELECT users.name, orders.order_id
    FROM users
    LEFT JOIN orders ON users.id = orders.user_id;
    
  • RIGHT JOIN:与 LEFT JOIN 相反,返回右表的所有行。

  • FULL OUTER JOIN:返回左右表中所有的行(MySQL 不直接支持,可用 UNION 模拟)。

总结

掌握以上 MySQL 基础知识要点,就能够完成日常工作中 80% 的数据库操作。从基本的 CRUD 到复杂的多表连接查询,这些是构建任何数据驱动应用的基石。

下一步建议

  • 索引:学习如何创建索引以优化查询速度。
  • 事务:了解 BEGIN, COMMIT, ROLLBACK,确保数据的一致性。
  • 视图:将复杂的查询保存为虚拟表,简化操作。
  • 存储过程和函数:在数据库服务器端执行复杂的逻辑。

实践是学习 MySQL 的最佳途径。尝试在自己的项目中创建表、插入数据并执行各种查询,你会迅速巩固这些知识,并发现其强大之处。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL笔记8 - 指南

MySQL笔记8 - 指南2025-10-10 09:12 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

Elasticsearch 备份:方案篇

在 Elasticsearch 集群的日常运维中,制定完善的数据备份与恢复策略是保障业务连续性和数据安全的基石。在本文中,我们将探讨 ES 各类备份方案的实现逻辑,对比各自方案的优劣势,归纳它们适合的场景1. 为什么要备份 …

Atcoder Beginner Contest 422

ABC422A 按照题意输出即可。 /*********************************************************************程序名:作者: xAlec日期: 2025-10-01 15:45说明: sakana ~ *************************************************…

【Android】解决安卓在隐藏强大的系统栏后usb鼠标被隐藏的疑问

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

centos安装libgdiplus-6.1

centos安装libgdiplus-6.1参考:https://chat.deepseek.com/share/fhak78p0eprkm8reeh 源码:# 从Mono官方下载完整源码包 wget https://download.mono-project.com/sources/libgdiplus/libgdiplus-6.1.tar.gz tar -xz…

RapidJSON 自定义内存分配器详解与实战 - 详解

RapidJSON 自定义内存分配器详解与实战 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

完整教程:考研408计算机网络第47题(2024年)

完整教程:考研408计算机网络第47题(2024年)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

进步与现代化

线性方程组 线性无关、系数矩阵行列式、解的情况 简化行阶梯型矩阵:主元全 \(1\),所在行左侧全 \(0\),所在列剩余全 \(0\) 生成子空间:\(\langle A\rangle\),线性表出の所有向量 \(A\) 线性无关 \(\Longleftright…

2025 最新推荐!溴化锂回收公司精选榜单:含制冷机 / 溶液 / 机组回收服务商权威测评及选择指南

随着工业与商业领域溴化锂制冷设备迭代加速,老旧设备处置需求激增,但市场仍存在服务标准混乱、环保措施缺失、技术能力参差不齐等痛点。部分机构拆解流程不规范,既造成铜、铝等资源浪费,又易因溴化锂溶液泄漏引发污…

使用OpenCvSharp , Emgu.CV 手搓 视觉识别算法 以及 成果展示

举个🌰 一个培养皿里有若干条鱼苗,需要将它全部区分识别出来, 像如下图所示的小蝌蚪就是(培养皿里三个黑点是热带鱼苗,做实验用的,一毫米长) 用的是海康威视的黑白工业相机拍摄。 先讲讲思路,图片是一组庞大的…

PKC7300高频电流探头在新能源汽车车载充电机稳态电流测试中的应用方案

一、应用背景 新能源汽车车载充电机(OBC)是将外部电网电能转换为车载动力电池电能的关键部件。在工作过程中,它需要处理0-300A的电流,而其内部的高频开关电路容易产生干扰信号。因此,对电流测量的量程、高频信号捕…

质量检验知识专题讲座之六:抽样检验步骤

抽样检验步骤抽样检验是从一批产品中随机抽取部分样本进行检验,再根据样本结果判断整批产品是否合格的过程,主要步骤如下: 1)、确定抽样检验的对象和目的 明确需要检验的产品批次、检验的质量特性(如尺寸、性能、…

羡慕线段树

顺颂 YFST 板子 & 使用例 题。首先树剖,然后变成在 \(\text{dfn}\) 区间上插一个关于 \(\text{dis}\) 的一次函数。这个很神奇,一般的李超树是,在 \(x\) 轴区间上插入关于 \(x\) 的一次函数。然而这里,\(\text…

质量检验知识专题讲座之七:来料检验

来料检验(IQC)1、来料检验的定义: 来料检验是指对采购进来的原材料、部件或产品做品质确认和查核,即在供应商送原材料或部件时通过抽样的方式对品质进行检验,并最后做出判断该批产品是允收还是拒收。 来料检验是企业…

windows 10分区教程,win10自带分区教程

win10怎么分区?win10自带磁盘分区,有几个人会?win10磁盘分区 不需要任何软件,win10系统本身就有这个功能,下面开始操作 第一步 按快捷键【wins+X】的组合键,在弹出的选项中选择【磁盘管理】选项;如下图: ​​ …

巴斯勒相机:30 年工艺沉淀,重新定义机器视觉效率​

巴斯勒相机:30 年工艺沉淀,重新定义机器视觉效率​2025-10-10 08:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

决斗(模拟赛题目T3)分析

感觉很典,所以就记下来了。我们考虑一个非常重要的事实: - 田忌赛马对于每一个 $a_i$ 找的是第一个比他大的 $b_i$。 - 而字典序最大又需要前面的尽可能大。这似乎产生了矛盾,让这道题目看起来有点难。我们考虑不用…

Guidde:AI驱动的视频文档创建工具 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

大学C语言课摸鱼记

2025.10.10 终于开启了大学的第一节C语言课。不得不说,C语言课当早八是真抽象。 什么叫C语言理论课不在机房???什么叫开学第十周才上机学习??? C语言教材第三章才教 scanf 和 printf ,😓 太抽象了。