SQL查询数据
外观
SQL查询数据[编辑 | 编辑源代码]
SQL查询数据是数据库操作的核心功能,允许用户从表中检索特定信息。通过使用SELECT语句,可以灵活地筛选、排序、聚合数据,满足不同场景的需求。本教程将从基础语法到高级应用逐步讲解,适合初学者和需要巩固知识的开发者。
基础语法[编辑 | 编辑源代码]
最基本的SELECT语句结构如下:
SELECT 列名1, 列名2
FROM 表名
WHERE 条件;
示例:简单查询[编辑 | 编辑源代码]
假设有一个学生表`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`表记录学生选课:
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 |
连接类型图示[编辑 | 编辑源代码]
子查询与嵌套[编辑 | 编辑源代码]
子查询可用于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)等在线工具。