跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
SQL查询数据
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= SQL查询数据 = '''SQL查询数据'''是数据库操作的核心功能,允许用户从表中检索特定信息。通过使用SELECT语句,可以灵活地筛选、排序、聚合数据,满足不同场景的需求。本教程将从基础语法到高级应用逐步讲解,适合初学者和需要巩固知识的开发者。 == 基础语法 == 最基本的SELECT语句结构如下: <syntaxhighlight lang="sql"> SELECT 列名1, 列名2 FROM 表名 WHERE 条件; </syntaxhighlight> === 示例:简单查询 === 假设有一个学生表`students`: {| class="wikitable" |+ students表结构 |- ! id !! name !! age !! major |- | 1 || Alice || 20 || Computer Science |- | 2 || Bob || 22 || Mathematics |- | 3 || Carol || 21 || Physics |} 查询所有学生的姓名和专业: <syntaxhighlight lang="sql"> SELECT name, major FROM students; </syntaxhighlight> '''输出结果:''' {| class="wikitable" |+ 查询结果 |- ! name !! major |- | Alice || Computer Science |- | Bob || Mathematics |- | Carol || Physics |} == 条件筛选(WHERE子句) == 通过WHERE子句添加条件,例如查找年龄大于20的学生: <syntaxhighlight lang="sql"> SELECT name, age FROM students WHERE age > 20; </syntaxhighlight> '''输出结果:''' {| class="wikitable" |+ 查询结果 |- ! name !! age |- | Bob || 22 |- | Carol || 21 |} === 运算符列表 === * 比较运算符:`=`, `<>`, `>`, `<`, `>=`, `<=` * 逻辑运算符:`AND`, `OR`, `NOT` * 范围匹配:`IN`, `BETWEEN` * 模糊匹配:`LIKE`(如`name LIKE 'A%'`匹配以A开头的名字) == 排序与限制(ORDER BY和LIMIT) == 按年龄降序排列并限制返回2条记录: <syntaxhighlight lang="sql"> SELECT name, age FROM students ORDER BY age DESC LIMIT 2; </syntaxhighlight> '''输出结果:''' {| class="wikitable" |+ 查询结果 |- ! name !! age |- | Bob || 22 |- | Carol || 21 |} == 聚合函数与分组(GROUP BY) == 常用聚合函数包括`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`。例如统计每个专业的学生人数: <syntaxhighlight lang="sql"> SELECT major, COUNT(*) AS student_count FROM students GROUP BY major; </syntaxhighlight> '''输出结果:''' {| class="wikitable" |+ 查询结果 |- ! major !! student_count |- | Computer Science || 1 |- | Mathematics || 1 |- | Physics || 1 |} == 多表连接(JOIN) == 假设新增一个`courses`表记录学生选课: {| class="wikitable" |+ courses表结构 |- ! student_id !! course_name |- | 1 || Database Systems |- | 2 || Linear Algebra |- | 3 || Quantum Mechanics |} 通过内连接查询学生及其课程: <syntaxhighlight lang="sql"> SELECT s.name, c.course_name FROM students s JOIN courses c ON s.id = c.student_id; </syntaxhighlight> '''输出结果:''' {| class="wikitable" |+ 查询结果 |- ! name !! course_name |- | Alice || Database Systems |- | Bob || Linear Algebra |- | Carol || Quantum Mechanics |} === 连接类型图示 === <mermaid> graph LR A[INNER JOIN] -->|匹配记录| B(结果) C[LEFT JOIN] -->|左表全保留| B D[RIGHT JOIN] -->|右表全保留| B </mermaid> == 子查询与嵌套 == 子查询可用于WHERE或FROM子句中。例如查找年龄大于平均年龄的学生: <syntaxhighlight lang="sql"> SELECT name, age FROM students WHERE age > (SELECT AVG(age) FROM students); </syntaxhighlight> == 实际应用案例 == '''场景:'''电商平台需要生成月度销售报告 <syntaxhighlight lang="sql"> -- 查询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; </syntaxhighlight> == 性能优化提示 == 1. 为常用查询条件创建索引 2. 避免`SELECT *`,只查询必要列 3. 复杂查询拆分为多个步骤 == 总结 == SQL查询是数据处理的核心技能,从简单筛选到多表关联,灵活运用可解决各类数据检索需求。建议通过实际数据库练习巩固知识,例如[SQLFiddle](https://sqlfiddle.com)等在线工具。 {{Stub|section=1}} <!-- 标记需要扩展的高级内容区域 --> [[Category:计算机科学]] [[Category:数据库与信息系统]] [[Category:SQL基础]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Stub
(
编辑
)