跳转到内容

SQL查询数据

来自代码酷

SQL查询数据[编辑 | 编辑源代码]

SQL查询数据是数据库操作的核心功能,允许用户从表中检索特定信息。通过使用SELECT语句,可以灵活地筛选、排序、聚合数据,满足不同场景的需求。本教程将从基础语法到高级应用逐步讲解,适合初学者和需要巩固知识的开发者。

基础语法[编辑 | 编辑源代码]

最基本的SELECT语句结构如下:

  
SELECT 列名1, 列名2  
FROM 表名  
WHERE 条件;

示例:简单查询[编辑 | 编辑源代码]

假设有一个学生表`students`:

students表结构
id name age major
1 Alice 20 Computer Science
2 Bob 22 Mathematics
3 Carol 21 Physics

查询所有学生的姓名和专业:

  
SELECT name, major  
FROM students;

输出结果:

查询结果
name major
Alice Computer Science
Bob Mathematics
Carol Physics

条件筛选(WHERE子句)[编辑 | 编辑源代码]

通过WHERE子句添加条件,例如查找年龄大于20的学生:

  
SELECT name, age  
FROM students  
WHERE age > 20;

输出结果:

查询结果
name age
Bob 22
Carol 21

运算符列表[编辑 | 编辑源代码]

  • 比较运算符:`=`, `<>`, `>`, `<`, `>=`, `<=`
  • 逻辑运算符:`AND`, `OR`, `NOT`
  • 范围匹配:`IN`, `BETWEEN`
  • 模糊匹配:`LIKE`(如`name LIKE 'A%'`匹配以A开头的名字)

排序与限制(ORDER BY和LIMIT)[编辑 | 编辑源代码]

按年龄降序排列并限制返回2条记录:

  
SELECT name, age  
FROM students  
ORDER BY age DESC  
LIMIT 2;

输出结果:

查询结果
name age
Bob 22
Carol 21

聚合函数与分组(GROUP BY)[编辑 | 编辑源代码]

常用聚合函数包括`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`。例如统计每个专业的学生人数:

  
SELECT major, COUNT(*) AS student_count  
FROM students  
GROUP BY major;

输出结果:

查询结果
major student_count
Computer Science 1
Mathematics 1
Physics 1

多表连接(JOIN)[编辑 | 编辑源代码]

假设新增一个`courses`表记录学生选课:

courses表结构
student_id course_name
1 Database Systems
2 Linear Algebra
3 Quantum Mechanics

通过内连接查询学生及其课程:

  
SELECT s.name, c.course_name  
FROM students s  
JOIN courses c ON s.id = c.student_id;

输出结果:

查询结果
name course_name
Alice Database Systems
Bob Linear Algebra
Carol Quantum Mechanics

连接类型图示[编辑 | 编辑源代码]

graph LR A[INNER JOIN] -->|匹配记录| B(结果) C[LEFT JOIN] -->|左表全保留| B D[RIGHT JOIN] -->|右表全保留| B

子查询与嵌套[编辑 | 编辑源代码]

子查询可用于WHERE或FROM子句中。例如查找年龄大于平均年龄的学生:

  
SELECT name, age  
FROM students  
WHERE age > (SELECT AVG(age) FROM students);

实际应用案例[编辑 | 编辑源代码]

场景:电商平台需要生成月度销售报告

  
-- 查询2023年10月销售额前5的产品  
SELECT p.product_name, SUM(o.amount) AS total_sales  
FROM orders o  
JOIN products p ON o.product_id = p.id  
WHERE o.order_date BETWEEN '2023-10-01' AND '2023-10-31'  
GROUP BY p.product_name  
ORDER BY total_sales DESC  
LIMIT 5;

性能优化提示[编辑 | 编辑源代码]

1. 为常用查询条件创建索引 2. 避免`SELECT *`,只查询必要列 3. 复杂查询拆分为多个步骤

总结[编辑 | 编辑源代码]

SQL查询是数据处理的核心技能,从简单筛选到多表关联,灵活运用可解决各类数据检索需求。建议通过实际数据库练习巩固知识,例如[SQLFiddle](https://sqlfiddle.com)等在线工具。

模板:Stub