SQL SELECT 查询数据
SQL SELECT 查询语句 · 难度:入门 · +10XP
SQL SELECT 查询语句
SELECT是SQL中最基本也是最常用的语句,用于从数据库中检索数据。无论是查看数据、生成报表还是数据分析,一切都从SELECT开始。
基本语法
SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件
ORDER BY 排序列; -- 可选
查询示例
假设有一张students表,包含id、name、age、score、city五个字段。
-- 查询所有列(谨慎使用,数据量大时影响性能)
SELECT * FROM students;
-- 查询指定列
SELECT name, score FROM students;
-- 查询不重复的值
SELECT DISTINCT city FROM students;
-- 返回:南宁、桂林、柳州(每个城市只出现一次)
别名(AS)
-- 给列起别名(中文需要双引号或方括号,视数据库而定)
SELECT name AS 姓名, score AS 成绩 FROM students;
-- 给表起别名(多表查询时常用)
SELECT s.name, s.score FROM students AS s;
计算列
-- SELECT 中可以做运算
SELECT name, score, score + 10 AS 加分后 FROM students;
SELECT name, score, score * 1.1 AS 加权分 FROM students;
LIMIT 限制结果数量
-- 只返回前5条
SELECT * FROM students LIMIT 5;
-- 跳过前3条,取5条(分页查询)
SELECT * FROM students LIMIT 5 OFFSET 3;
-- MySQL 简写:SELECT * FROM students LIMIT 3, 5;
SELECT 子句执行顺序
理解执行顺序有助于写出正确的SQL:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
实战练习
- 查询students表中所有学生的姓名和城市(只显示这两列)
- 查询所有不重复的城市
- 查询成绩的前10名学生(按成绩降序,只取前10)
- 用AS给查询结果列取有意义的中文别名
SELECT 常用技巧
-- 拼接字符串(MySQL CONCAT)
SELECT CONCAT(name, ' (', city, ')') AS 学生信息 FROM students;
-- 结果:张三 (南宁)
-- 条件判断(CASE WHEN)
SELECT name, score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS 等级
FROM students;
-- 从结果中去除重复行
SELECT DISTINCT city, age FROM students;
掌握SELECT是学习SQL的第一步。实际工作中绝大多数查询都是从SELECT开始的,熟练使用SELECT的各种子句能让你高效地从数据库中提取所需数据。建议初学者多动手写查询语句,从简单到复杂逐步练习。