从0-1学习Mysql第四章: 查询基础

news/2025/2/25 15:55:48

第四章: 查询基础

在本章中,我们将介绍 MySQL 查询的一些基础知识。SQL 查询是从数据库中提取数据的基本操作,理解和掌握这些基础内容对于开发和调试数据库应用至关重要。

1. SELECT 查询

SELECT 是 SQL 查询中最常用的语句,用于从数据库中查询数据。它的基本语法如下:

SELECT column1, column2 FROM table_name;
  • 示例:
SELECT name, age FROM users;  -- 查询所有用户的姓名和年龄
  • 常见错误:
SELECT * FROM users WHERE age > 20;

错误原因:使用 SELECT * 查询时会返回所有字段,但在实际开发中,推荐只查询需要的字段,避免不必要的数据传输。

2. 条件查询(WHERE

使用 WHERE 子句来为查询添加条件。它用于限制查询的结果集,只返回符合条件的记录。

  • 示例:
SELECT * FROM users WHERE age > 20;
  • 常见错误:
SELECT * FROM users WHERE age > 'twenty';

错误原因age 字段是数字类型,应该使用数字值进行比较,而不是字符串。应改为 WHERE age > 20

3. 排序(ORDER BY

ORDER BY 用于对查询结果进行排序。默认是升序(ASC),如果需要降序排序,可以使用 DESC

  • 示例:
SELECT name, age FROM users ORDER BY age DESC;  -- 按年龄降序排列
4. 限制查询结果(LIMIT

LIMIT 用于限制查询返回的记录数。它在处理大数据时非常有用,尤其在需要分页显示时。

  • 示例:
SELECT * FROM users LIMIT 10;  -- 只返回前 10 条记录
  • 常见错误:
SELECT * FROM users LIMIT -5;

错误原因LIMIT 不能接受负数,负数会导致错误。应确保 LIMIT 后的数字是正数。

5. 多表查询(JOIN

JOIN 用于将两个或多个表根据某些条件连接起来。常见的 JOIN 类型有:

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

    示例:

    SELECT users.name, orders.order_date
    FROM users
    INNER JOIN orders ON users.id = orders.user_id;
    
  • LEFT JOIN:返回左表中的所有行,即使右表中没有匹配的行,右表的列将为 NULL

    示例:

    SELECT users.name, orders.order_date
    FROM users
    LEFT JOIN orders ON users.id = orders.user_id;
    
  • RIGHT JOIN:返回右表中的所有行,即使左表中没有匹配的行,左表的列将为 NULL

    示例:

    SELECT users.name, orders.order_date
    FROM users
    RIGHT JOIN orders ON users.id = orders.user_id;
    
  • 常见错误:

SELECT * FROM users, orders;

错误原因:这个查询会产生笛卡尔积,导致不必要的数据重复。应使用 JOIN 来明确连接条件。

6. 聚合函数(COUNT, SUM, AVG, MAX, MIN

聚合函数用于对查询结果进行统计和分析。常见的聚合函数包括:

  • COUNT():返回符合条件的行数。

    SELECT COUNT(*) FROM users;  -- 返回用户表中所有行的数量
    
  • SUM():返回指定列的总和。

    SELECT SUM(salary) FROM employees;  -- 计算所有员工的总工资
    
  • AVG():返回指定列的平均值。

    SELECT AVG(age) FROM users;  -- 计算所有用户的平均年龄
    
  • MAX():返回指定列的最大值。

    SELECT MAX(age) FROM users;  -- 查找年龄最大的用户
    
  • MIN():返回指定列的最小值。

    SELECT MIN(age) FROM users;  -- 查找年龄最小的用户
    
7. 常见面试题及解答

1. INNER JOINLEFT JOIN 有什么区别?

  • INNER JOIN:返回两个表中匹配的行。
  • LEFT JOIN:返回左表中的所有行,即使右表中没有匹配的行。

2. 如何限制查询返回的结果行数?

使用 LIMIT 子句来限制返回的行数:

SELECT * FROM users LIMIT 10;  -- 返回前 10 条记录

3. COUNT()SUM()AVG()MAX()MIN() 函数分别有什么作用?

  • COUNT():返回符合条件的行数。
  • SUM():返回指定列的总和。
  • AVG():返回指定列的平均值。
  • MAX():返回指定列的最大值。
  • MIN():返回指定列的最小值。

4. 如何避免笛卡尔积?

避免在 JOIN 操作中缺少连接条件。务必确保有正确的 ON 条件,避免 FROM users, orders 这样的查询。

5. 如何判断字段是否为唯一值?

使用 DISTINCT 关键字检查字段值是否唯一:

SELECT DISTINCT age FROM users;  -- 查看 `age` 字段中的不同值

6. 如何优化查询性能?

  • 为查询频繁的字段创建索引。
  • 避免在 WHERE 子句中使用函数。
  • 使用 LIMIT 限制返回的记录数。
  • 避免 SELECT *,只选择需要的列。

小结

本章介绍了 SQL 查询基础的核心内容,包括如何使用 SELECT 查询数据,如何进行条件过滤、排序、限制结果、进行多表查询以及使用聚合函数等。我们还探讨了常见的面试问题,帮助大家理解并掌握这些基础的查询操作。通过学习这些基本查询技能,您可以更高效地与数据库进行交互,也能为日后的面试做好充分准备。


http://www.niftyadmin.cn/n/5865674.html

相关文章

大白话React第四章战项目阶段

大白话React第四章战项目阶段 1. 选项目 这就像你要开个小店,得先想好卖啥东西。根据自己的兴趣和能力,挑个适合的项目。比如你喜欢写文章,就做个博客系统;要是喜欢整理事情,那就弄个待办事项应用;要是对…

【知识】PyTorch中不同优化器的特点和使用

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 1. SGD(随机梯度下降) 2. Adam(自适应矩估计) 3. AdamW 4. Adagrad 5. Adadelta 6. Adafact…

在PyTorch使用UNet进行图像分割【附源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

DeepSeek 提示词:高效的提示词设计

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之加入购物车和显示购物车列表

🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🚀1.加入购物车-数…

git 克隆及拉取github项目到本地微信开发者工具,微信开发者工具通过git commit、git push上传代码到github仓库

git 克隆及拉取github项目到本地微信开发者工具,微信开发者工具通过git commit、git push上传代码到github仓库 git 克隆及拉取github项目到本地 先在自己的用户文件夹新建一个项目文件夹,取名为项目名 例如这样 C:\Users\HP\yzj-再打开一个终端页面&…

数据库的MVCC如何理解?

数据库的MVCC如何理解? MVCC(多版本并发控制,Multi-Version Concurrency Control)是数据库系统中的一种并发控制机制,用于允许多个事务在不互相干扰的情况下并行执行,同时保持数据的一致性和隔离性。 MVC…

基于python+django的宠物商店-宠物管理系统源码+运行步骤

该系统是基于pythondjango开发的宠物商店-宠物管理系统。是给师妹开发的课程作业。现将源码开放给大家。大家学习过程中,如遇问题可以在github咨询作者。加油 演示地址 前台地址: http://pet.gitapp.cn 后台地址: http://pet.gitapp.cn/adm…