SQL入门指南:条件查询和数据过滤

本文介绍了SQL中的关键操作,包括使用WHERE子句进行条件查询,如比较和逻辑运算;ORDERBY子句进行排序查询;聚合函数如SUM、AVG和COUNT进行数据统计;以及GROUPBY子句进行分组查询。通过实例展示了如何在students数据表上执行这些操作,帮助读者理解SQL的基本查询技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当进行SQL查询时,条件查询、排序查询、聚合函数和分组查询是非常重要的操作,它们能够帮助您更加灵活和高效地获取所需的数据。

我们首先创建一个简单易懂的数据表来辅助学习SQL条件查询与数据过滤的基础知识。

数据表名:students

student_idnameagegenderscore
1Alice22Female85
2Bob21Male78
3Charlie23Male92
4David20Male80
5Emma22Female88

一.条件查询:

WHERE子句用于在SELECT语句中添加条件,从而筛选满足条件的数据行。

可以使用比较运算符(如=、<、>、<=、>=、<>)和逻辑运算符(如AND、OR、NOT)来创建条件。

查询年龄大于等于22岁的学生:

-- 查询年龄大于等于22岁的学生
SELECT * FROM students WHERE age >= 22;
student_idnameagegenderscore
1Alice22Female85
3Charlie23Male92
5Emma22Female88

查询分数高于85分且为女性的学生:

-- 查询分数高于85分且为女性的学生
SELECT * FROM students WHERE score > 85 AND gender = 'Female';
student_idnameagegenderscore
1Alice22Female85
5Emma22Female88

查询分数在80到90分之间的学生:

-- 查询分数在80到90分之间的学生
SELECT * FROM students WHERE score BETWEEN 80 AND 90;
student_idnameagegenderscore
1Alice22Female85
4David20Male80
5Emma22Female88

二.排序查询:

ORDER BY子句用于对查询结果进行排序,默认按照指定列的升序排序。

可以指定多个列,并用逗号分隔,也可以使用DESC关键字实现降序排序。

按分数降序排序学生:

-- 按分数降序排序学生
SELECT * FROM students ORDER BY score DESC;
student_idnameagegenderscore
3Charlie23Male92
5Emma22Female88
1Alice22Female85
4David20Male80
2Bob21Male78

按年龄升序排序学生:

-- 按年龄升序排序学生
SELECT * FROM students ORDER BY age;
student_idnameagegenderscore
4David20Male80
2Bob21Male78
1Alice22Female85
5Emma22Female88
3Charlie23Male92

三.聚合函数:

聚合函数用于对数据进行汇总和统计,如SUM、AVG、COUNT等。

SUM函数用于计算某列数据的总和,AVG函数用于计算平均值,COUNT函数用于计算行数或非NULL值的数量。

聚合函数描述
SUM()计算某列的总和
AVG()计算某列的平均值
COUNT()计算某列的行数或非空值的个数
MAX()找出某列的最大值
MIN()找出某列的最小值
GROUP_CONCAT()将某列的值连接成字符串

计算所有学生的总数:

-- 计算所有学生的总数
SELECT COUNT(*) as total_students FROM students;
total_students
5

计算学生的平均分数:

-- 计算学生的平均分数
SELECT AVG(score) as average_score FROM students;
average_score
84

计算所有学生的总分数:

-- 计算所有学生的总分数
SELECT SUM(score) as total_score FROM students;
total_score
423

四.分组查询:

GROUP BY子句用于将数据按照指定列进行分组,然后对每个组应用聚合函数。

在使用GROUP BY子句时,通常需要结合聚合函数来得到每个组的汇总结果。

按性别分组,并计算每个性别学生的平均分数:

-- 按性别分组,并计算每个性别学生的平均分数
SELECT gender, AVG(score) as average_score FROM students GROUP BY gender;
genderaverage_score
Female87.67
Male83.33

按年龄分组,并计算每个年龄学生的总数:

-- 按年龄分组,并计算每个年龄学生的总数
SELECT age, COUNT(*) as total_students FROM students GROUP BY age;
agetotal_students
201
211
223
231

五.基础知识补充

  1. WHERE子句:

    • WHERE子句用于在SELECT语句中指定条件,以过滤查询结果。
    • 可以使用比较运算符(如=、<、>、<=、>=、<>)和逻辑运算符(如AND、OR、NOT)来创建条件。
    • 示例:SELECT * FROM employees WHERE salary > 50000;
  2. 比较运算符:

    • 比较运算符用于比较两个值,并返回布尔值(TRUE或FALSE)。
    • 常见的比较运算符包括:=(等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、<>(不等于)。
    • 示例:SELECT * FROM products WHERE price > 100;
  3. 逻辑运算符:

    • 逻辑运算符用于组合多个条件,并返回逻辑表达式的结果。
    • 常见的逻辑运算符包括:AND(与)、OR(或)、NOT(非)。
    • 示例:SELECT * FROM orders WHERE status = 'Shipped' AND total_amount > 1000;
  4. 通配符:

    • 通配符是用于模糊匹配的特殊字符。在条件查询中,可以使用通配符来匹配符合特定模式的数据。
    • 常见的通配符包括:%(代表任意字符序列)、_(代表任意单个字符)。
    • 示例:SELECT * FROM customers WHERE name LIKE 'J%';
  5. IN运算符:

    • IN运算符用于指定一个值列表,并检查某个列是否与列表中的任何值匹配。
    • 示例:SELECT * FROM products WHERE category IN ('Electronics', 'Appliances');
  6. BETWEEN运算符:

    • BETWEEN运算符用于检查某个列的值是否在指定的范围内。
    • 示例:SELECT * FROM employees WHERE hire_date BETWEEN '2020-01-01' AND '2021-12-31';
  7. NULL值:

    • 在SQL中,NULL表示缺少值或未知值。
    • 可以使用IS NULL或IS NOT NULL来检查列中的NULL值。
    • 示例:SELECT * FROM orders WHERE shipping_address IS NULL;
  8. 聚合函数与HAVING子句:

    • 聚合函数(如SUM、AVG、COUNT等)用于对数据进行汇总和统计。
    • HAVING子句用于筛选聚合函数的结果。
    • 示例:SELECT category, COUNT() as total_products FROM products GROUP BY category HAVING COUNT() > 10;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值