您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页【SQL入门指南 Day4:SELECT、WHERE、ORDER BY和LIMIT语句】

【SQL入门指南 Day4:SELECT、WHERE、ORDER BY和LIMIT语句】

来源:化拓教育网

小伙伴们好!今天我要跟大家深入讲解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;
  1. 范围查询:
-- 查询年龄在18-25岁之间的学生
SELECT * 
FROM students 
WHERE age BETWEEN 18 AND 25;

-- 查询指定班级的学生
SELECT * 
FROM students 
WHERE class_id IN (1, 2, 3);
  1. 模糊查询:
-- 查询姓张的学生
-- % 通配符 代表任意位数字符
SELECT * 
FROM students 
WHERE name LIKE '张%';

-- 查询姓名是三个字的学生
-- _ 占位符 代表一位数字符
SELECT * 
FROM students 
WHERE name LIKE '___';

⚠️ 重要技巧

  1. AND的优先级高于OR,使用括号可以改变运算顺序:
-- 查询一班或者分数大于90的男生
SELECT * 
FROM students 
WHERE (class_id = 1 OR score > 90) AND gender = 'M';
  1. 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条

📝 使用技巧

  1. LIMIT x, n 中的x是偏移量(从0开始)
  2. LIMIT n 等价于 LIMIT 0, n
  3. 常用于分页查询:
-- 第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;

🔍 要点解析:

  1. WHERE条件组合使用
  2. ORDER BY多字段排序
  3. LIMIT结果集

📌 小贴士

  1. MySQL中LIMIT是特有的语法,其他数据库可能使用不同语法
  2. ORDER BY默认是ASC(升序)
  3. WHERE中的逻辑运算要注意优先级

记住:多练习,多思考,让这些查询语句成为你的得力助手!💪

#SQL进阶 #数据库学习 #编程技巧 #数据查询

有问题随时在评论区讨论哦!我会持续更新SQL学习系列,帮助大家掌握数据库开发技能!🚀

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务