当前位置: 首页 > news >正文

从查询到操作:MySQL实战训练进阶指南(141-160题精讲)

1. 图书借阅管理系统实战场景搭建

在开始讲解具体的SQL查询之前,我们先来搭建一个完整的图书借阅管理系统数据库场景。这个系统包含三个核心表:图书表、读者表和借阅表。图书表存储图书的基本信息,读者表记录读者资料,借阅表则管理借还书记录。

图书表的结构设计如下:

CREATE TABLE 图书 ( 条形码 VARCHAR(20) PRIMARY KEY, 书名 VARCHAR(100) NOT NULL, 作者 VARCHAR(50), 出版社 VARCHAR(50), 出版日期 DATE, 售价 DECIMAL(10,2) );

读者表的结构包含读者账号、姓名等关键信息:

CREATE TABLE 读者 ( 账号 VARCHAR(10) PRIMARY KEY, 姓名 VARCHAR(20) NOT NULL, 性别 CHAR(1), 会员等级 VARCHAR(10), 联系电话 VARCHAR(15), 注册日期 DATE );

借阅表作为关联表,记录借阅行为:

CREATE TABLE 借阅 ( 借阅ID INT AUTO_INCREMENT PRIMARY KEY, 账号 VARCHAR(10), 条形码 VARCHAR(20), 借书日期 DATE, 还书日期 DATE, FOREIGN KEY (账号) REFERENCES 读者(账号), FOREIGN KEY (条形码) REFERENCES 图书(条形码) );

在实际项目中,这样的表结构设计能够满足基本的图书借阅管理需求。我建议在本地MySQL环境中先创建这些表,并插入一些测试数据,这样后续的查询练习才能有实际效果。

2. 基础查询操作精讲

2.1 简单条件查询

最简单的查询就是使用WHERE子句筛选特定条件的记录。比如查询售价在50到70元之间的图书:

SELECT * FROM 图书 WHERE 售价 BETWEEN 50 AND 70;

这个查询使用了BETWEEN运算符,它等同于:

SELECT * FROM 图书 WHERE 售价 >= 50 AND 售价 <= 70;

在实际项目中,我经常使用BETWEEN来查询日期范围或价格区间的数据,它比使用两个比较运算符更简洁明了。

2.2 模糊查询与正则表达式

当我们需要查询特定模式的字符串时,可以使用LIKE运算符或正则表达式。例如查询条形码以"TP3"开头的图书:

SELECT * FROM 图书 WHERE 条形码 REGEXP '^TP3';

这里使用了REGEXP运算符进行正则匹配,'^TP3'表示以TP3开头。相比LIKE 'TP3%'的写法,正则表达式功能更强大,但性能稍差。在数据量大的表中,我建议优先使用LIKE,除非需要复杂的模式匹配。

2.3 多条件组合查询

实际业务中经常需要组合多个条件进行查询。例如查询科学出版社出版且价格超过50元的图书:

SELECT 书名,作者,出版社,售价 FROM 图书 WHERE 售价 > 50 AND 出版社 = '科学出版社';

这里使用了AND逻辑运算符连接两个条件。当需要满足任一条件时,可以使用OR运算符:

SELECT * FROM 图书 WHERE 书名 = 'C语言程序设计' OR 书名 = 'VB程序设计';

在编写复杂查询时,我习惯用括号明确优先级,避免逻辑混淆。例如:

SELECT * FROM 图书 WHERE (出版社 = '科学出版社' OR 出版社 = '人民邮电出版社') AND 售价 > 50;

3. 高级查询技巧实战

3.1 排序与分页

查询结果的排序在实际应用中非常重要。例如按条形码升序排列图书:

SELECT 条形码,书名 FROM 图书 ORDER BY 条形码;

对于大数据量的表,我通常会加上分页限制:

SELECT 条形码,书名 FROM 图书 ORDER BY 条形码 LIMIT 20 OFFSET 0;

多列排序也很常见,比如先按出版社升序,再按出版日期降序:

SELECT 条形码,书名,出版社,出版日期 FROM 图书 ORDER BY 出版社, 出版日期 DESC;

3.2 聚合函数与分组统计

统计功能是数据库查询的核心能力之一。例如统计各出版社的图书数量:

SELECT 出版社, COUNT(*) AS 图书数目 FROM 图书 GROUP BY 出版社 ORDER BY 图书数目 DESC;

这里使用了COUNT聚合函数和GROUP BY分组子句。其他常用聚合函数还包括:

SELECT MAX(售价) AS 最高售价, MIN(售价) AS 最低售价, AVG(售价) AS 平均售价 FROM 图书;

在实际项目中,我经常使用HAVING子句对分组结果进行筛选:

SELECT 出版社, COUNT(*) AS 图书数目 FROM 图书 GROUP BY 出版社 HAVING COUNT(*) > 5 ORDER BY 图书数目 DESC;

3.3 去重与日期函数

查询不重复的出版社列表:

SELECT DISTINCT 出版社 FROM 图书;

日期函数在查询中也很实用,例如查询2018年出版的图书数量:

SELECT COUNT(*) AS 2018年出版的图书数目 FROM 图书 WHERE YEAR(出版日期) = 2018;

4. 多表连接与数据操作

4.1 表连接查询

图书借阅系统的核心功能需要多表连接查询。例如查询图书借阅情况:

SELECT 账号, book.条形码, 书名, 借书日期 FROM 图书 AS book, 借阅 AS borrow WHERE book.条形码 = borrow.条形码;

更规范的写法是使用JOIN语法:

SELECT b.账号, 姓名, a.条形码, 书名, 借书日期, 还书日期 FROM 图书 a JOIN 借阅 b ON a.条形码 = b.条形码 JOIN 读者 c ON b.账号 = c.账号;

在实际项目中,我建议总是使用显式的JOIN语法,它更清晰且易于维护。

4.2 数据插入操作

向图书表插入新记录:

INSERT INTO 图书 VALUES ('TP211.3', '狼图腾', '姜戎', NULL, NULL, 44.5);

更安全的写法是指定列名:

INSERT INTO 图书 (条形码, 书名, 作者, 售价) VALUES ('TP211.3', '狼图腾', '姜戎', 44.5);

4.3 数据更新与删除

更新科学出版社图书价格上涨5%:

UPDATE 图书 SET 售价 = 售价 * 1.05 WHERE 出版社 = '科学出版社';

删除特定图书记录:

DELETE FROM 图书 WHERE 条形码 = 'TP204.2';

在执行UPDATE和DELETE操作前,我通常会先用SELECT语句确认影响范围,避免误操作。例如:

SELECT * FROM 图书 WHERE 出版社 = '科学出版社'; -- 确认无误后再执行UPDATE
http://www.jsqmd.com/news/993339/

相关文章:

  • 如何快速获得专业级鼠标指针:Bibata_Cursor完全定制指南
  • MTProxy网络层架构深度解析:构建高可用代理服务的核心技术实现
  • Resistor Scanner:3步教你用手机摄像头识别电阻值,从此告别色环记忆烦恼
  • 联发科设备修复终极指南:5步掌握MTKClient专业数据恢复与系统刷写
  • 2026 年宁夏石嘴山黄金回收市场全景解析与优质门店测评指南 - 衡金阁
  • 如何在高安版Amlogic电视盒子上实现Armbian系统的终极兼容方案
  • 2026年四川会议策划公司综合实力榜:五大服务商深度评测 - 深度智识库
  • Vue3定时任务可视化配置:如何用no-vue3-cron告别复杂Cron表达式
  • 5个核心功能彻底改变XCOM 2模组管理体验:AML启动器深度解析
  • 2026 年天津黄金回收:附 6 家头部渠道深度解析,收的顶强势第一 - 奢侈品回收评测
  • Claude Code UI Git集成架构深度解析:4层架构设计与企业级版本控制实现
  • 官方最新发布|湖北现代科技学校2026年招生简章计划 - 辛云教育资讯
  • 导师推荐!盘点2026年抢手爆款的一键生成论文工具
  • 2026年艺术涂料厂家深度测评:如何为你的空间匹配最佳方案? - 资讯速览
  • (良心整理)亲测好用的AI论文写作工具,毕业党收藏备用
  • MPC8245电源与时钟设计实战:从规格书解读到硬件调试避坑指南
  • RPA 改造项目避坑全攻略:叠加海外大模型方案运维成本不可控?2026核心技术解析
  • 精选视频转动图优质工具,一键转换打造清晰流畅 GIF 图片 - 软件工具教程方法
  • Vue3实战:用Douyin-Vue打造类抖音应用的完整指南
  • 3大核心功能解密:Ink/Stitch如何重塑开源机器刺绣设计体验
  • 衡水玻璃钢电缆桥架、格栅、储罐采购避坑指南:2026年五大品牌深度横评与官方联系方式汇总 - 优质企业观察收录
  • 2026年澳洲留学哪家咨询服务好:五家优选品牌深度解析 - 科技焦点
  • 2026年全自动结晶点测定仪选购指南:重复性好、操作简单的优质推荐 - 品牌推荐大师1
  • IRISMAN:让您的PS3游戏管理变得前所未有的简单高效
  • 亨得利手表偷停维修专业指南:从劳力士到百达翡丽,彻底解决间歇性停走顽疾 - 亨得利腕表维修中心
  • 别再只测分类模型了!用PyTorch复现论文:自动驾驶回归模型对抗攻击实战(附Udacity数据集)
  • VB开发的实战型中文象棋程序,含可调试引擎、多风格棋盘与繁简双编码支持
  • 蓝气球戴腻了能卖多少?万国葡萄牙回收行情,西安表友必看 - 奢侈品回收测评
  • 3个真实故事告诉你:普通人如何用AI智能交易系统实现专业级股票分析
  • 如何快速掌握Mermaid Live Editor:5个实用技巧让你的图表创作效率翻倍