小伙伴们好!今天我要跟大家深入讲解SQL查询中最常用的四大法宝:SELECT、WHERE、ORDER BY和LIMIT。让我们一起来掌握这些数据查询的必备技能吧!👨💻
1️⃣ SELECT语句:数据查询的基石
1. SELECT基础用法
1.1 查询单个字段
-- 基础查询
SELECT name FROM world;
-- 使用别名
SELECT name AS country_name FROM world;
-- 或者省略AS
SELECT name country_name FROM world;
1.2 查询多个字段
-- 多字段查询
SELECT
name,
population,
gdp
FROM world;
-- 使用别名和格式化
SELECT
name AS country_name,
population AS total_population,
gdp AS gross_domestic_product
FROM world;
1.3 查询所有字段
-- 使用星号查询所有字段
SELECT * FROM world;
2. SELECT高级技巧
2.1 DISTINCT去重
-- 单字段去重
SELECT DISTINCT continent FROM world;
-- 多字段去重(组合去重)
SELECT DISTINCT
continent,
population
FROM world;
-- 错误示范:DISTINCT不能放在第二个字段
-- 这样会报错:
SELECT continent, DISTINCT population FROM world;
2.2 计算字段
-- 基础计算
SELECT
name,
gdp,
population,
gdp/population AS gdp_per_capita
FROM world;
-- 复杂计算
SELECT
product_name,
price,
quantity,
price * quantity AS total_revenue,
ROUND(price * quantity * 0.1, 2) AS tax,
price * quantity * 0.9 AS after_tax_revenue
FROM sales_data;
2️⃣ WHERE子句:数据筛选
运算符大全
-- 比较运算符
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于(也可写作 <>)
-- 范围运算符
BETWEEN ... AND ... 在两值之间(包含边界值)
IN 在指定集合中
NOT IN 不在指定集合中
-- 空值判断
IS NULL 为空
IS NOT NULL 不为空
-- 逻辑运算符
AND 与
OR 或
NOT 非
💡 实战示例
-- 查询成绩大于等于90分的学生
SELECT name, score
FROM students
WHERE score >= 90;
- 范围查询:
-- 查询年龄在18-25岁之间的学生
SELECT *
FROM students
WHERE age BETWEEN 18 AND 25;
-- 查询指定班级的学生
SELECT *
FROM students
WHERE class_id IN (1, 2, 3);
- 模糊查询:
-- 查询姓张的学生
-- % 通配符 代表任意位数字符
SELECT *
FROM students
WHERE name LIKE '张%';
-- 查询姓名是三个字的学生
-- _ 占位符 代表一位数字符
SELECT *
FROM students
WHERE name LIKE '___';
⚠️ 重要技巧
- AND的优先级高于OR,使用括号可以改变运算顺序:
-- 查询一班或者分数大于90的男生
SELECT *
FROM students
WHERE (class_id = 1 OR score > 90) AND gender = 'M';
- BETWEEN AND的边界处理:
-- 排除边界值的范围查询
SELECT *
FROM scores
WHERE score >= 60 AND score <= 80
AND score != 60 AND score != 80;
3️⃣ ORDER BY:数据排序
排序规则
-- 单字段排序
SELECT *
FROM students
ORDER BY score DESC; -- 降序
-- 多字段排序
SELECT *
FROM students
ORDER BY class_id ASC, score DESC; -- 先按班级升序,再按分数降序
🌟 高级技巧
-- 将某些值排在最后
-- The expression subject IN (Chemistry,'Physics)can be used as a value, it will be 0 or 1.
SELECT name, subject
FROM nobel_winners
WHERE year = 1984
ORDER BY
subject IN ('Chemistry', 'Physics') ,
subject,
name;
4️⃣ LIMIT:结果集控制
基本用法
-- 显示前5条记录
SELECT *
FROM students
LIMIT 5;
-- 显示第6-10条记录
SELECT *
FROM students
LIMIT 5, 5; -- 从第5条后面开始,显示5条
📝 使用技巧
- LIMIT x, n 中的x是偏移量(从0开始)
- LIMIT n 等价于 LIMIT 0, n
- 常用于分页查询:
-- 第1页(每页10条)
SELECT * FROM products LIMIT 0, 10;
-- 第2页
SELECT * FROM products LIMIT 10, 10;
-- 第n页
SELECT * FROM products LIMIT (n-1)*10, 10;
🎯 综合实战示例
来看一个复杂查询的例子:
-- 查询每个班级前三名的学生,要求成绩不为空
SELECT
s.class_id,
s.name,
s.score
FROM
students s
WHERE
s.score IS NOT NULL
AND s.status = 'active'
ORDER BY
s.class_id ASC,
s.score DESC
LIMIT 3;
🔍 要点解析:
- WHERE条件组合使用
- ORDER BY多字段排序
- LIMIT结果集
📌 小贴士
- MySQL中LIMIT是特有的语法,其他数据库可能使用不同语法
- ORDER BY默认是ASC(升序)
- WHERE中的逻辑运算要注意优先级
记住:多练习,多思考,让这些查询语句成为你的得力助手!💪
#SQL进阶 #数据库学习 #编程技巧 #数据查询
有问题随时在评论区讨论哦!我会持续更新SQL学习系列,帮助大家掌握数据库开发技能!🚀