当前位置: 首页 > article >正文

SELECT 语句用法大全:数据库查询的核心力量

在数据库的世界中,SELECT 语句犹如一把万能钥匙,开启了数据检索的大门,让我们能够从海量的数据中精准地获取所需的信息。它的用法丰富多样,涵盖了从简单的数据查看,到复杂的数据统计和关联查询等多个方面,为数据库的有效利用提供了强大的支持。

一、基本查询:开启数据探索之旅

  • 查询所有列:使用 “*” 通配符可以查询表中的所有列,快速了解表的整体数据结构和内容。
    SELECT * FROM employees;
    
  • 查询指定列:指定需要查询的列名,用逗号分隔,聚焦于我们真正关心的数据。
  • SELECT name, age, salary FROM employees;
    

二、条件查询:精准定位目标数据

为了从大量数据中筛选出符合特定条件的数据,WHERE 子句成为了 SELECT 语句的得力助手。通过使用各种比较运算符(如 =、>、<、>=、<=、<>),我们可以构建出精确的条件表达式。

  • 使用比较运算符:通过 WHERE 子句使用比较运算符(如 =、>、<、>=、<=、<>)来筛选满足条件的记录。
    SELECT * FROM employees WHERE age > 30;
    SELECT * FROM employees WHERE salary >= 5000 AND salary <= 8000;
    SELECT * FROM employees WHERE department <> 'IT';
    
  • 使用逻辑运算符:可以使用 AND、OR、NOT 等逻辑运算符组合多个条件。
    SELECT * FROM employees WHERE age > 30 AND department = 'HR';
    SELECT * FROM employees WHERE age < 25 OR salary > 6000;
    SELECT * FROM employees WHERE NOT (department = 'IT');
    
  • 使用 BETWEEN...AND:用于查询某个范围内的值。
    SELECT * FROM employees WHERE salary BETWEEN 4000 AND 6000;
    
  • 使用 IN:用于查询指定值列表中的值。
    SELECT * FROM employees WHERE department IN ('HR', 'Finance');
    
  • 使用 LIKE:用于进行模糊查询,通常与通配符 “%”(代表任意字符序列)和 “_”(代表任意单个字符)一起使用。
    SELECT * FROM employees WHERE name LIKE 'J%';  -- 查询名字以J开头的员工
    SELECT * FROM employees WHERE name LIKE '%s_';  -- 查询名字以s结尾且倒数第二个字符任意的员工
    

三、排序查询:让数据有序呈现

当查询结果需要按照特定的顺序排列时,ORDER BY 子句就发挥了作用。默认情况下,它按照升序(ASC)对数据进行排序;如果需要按照降序排列,只需加上 DESC 关键字,而且,ORDER BY 还可以按照多个列进行排序。

  • 使用 ORDER BY:用于对查询结果按照一个或多个列进行排序,默认是升序(ASC),可以指定降序(DESC)。
    SELECT * FROM employees ORDER BY age ASC;
    SELECT * FROM employees ORDER BY salary DESC, age ASC;  -- 先按照工资降序排序,如果工资相同则按照年龄升序排序
    

四、聚合函数查询:数据统计的利器

聚合函数,在数据分析中起着至关重要的作用,能够快速提供数据的总体特征和趋势。

  • 常用聚合函数:如 COUNT、SUM、AVG、MAX、MIN 等,用于对数据进行统计计算。
    SELECT COUNT(*) FROM employees;  -- 查询员工总数
    SELECT SUM(salary) FROM employees;  -- 查询员工工资总和
    SELECT AVG(salary) FROM employees;  -- 查询员工平均工资
    SELECT MAX(salary) FROM employees;  -- 查询最高工资
    SELECT MIN(salary) FROM employees;  -- 查询最低工资
    
  • 五、分组查询:深入洞察数据分布

  • 分组查询:使用 GROUP BY 子句按照指定列对数据进行分组,然后可以对每组数据进行聚合计算。
    SELECT department, COUNT(*) FROM employees GROUP BY department;  -- 查询每个部门的员工人数
    SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 5000;  -- 查询平均工资大于5000的部门及其平均工资
    

六、连接查询:整合多表数据资源

在实际的数据库应用中,往往需要从多个相关的表中获取数据,这时候连接查询就派上了用场。内连接(INNER JOIN)通过共同的列将两个表中的数据关联起来,返回满足连接条件的记录,实现了数据的整合和关联展示。

外连接(包括左外连接 LEFT JOIN、右外连接 RIGHT JOIN 和全外连接 FULL JOIN)则在关联数据的基础上,能够保留一个表中的所有记录,以及另一个表中满足条件的记录,确保了数据的完整性,为数据分析提供了更全面的视角。

内连接:使用 INNER JOIN 关键字,返回两个表中满足连接条件的记录。

SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

  • 外连接:包括左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL JOIN),可以返回一个表中的所有记录以及另一个表中满足连接条件的记录。
    SELECT employees.name, departments.department_name
    FROM employees
    LEFT JOIN departments ON employees.department_id = departments.id;
    

七、子查询:嵌套查询的智慧

子查询是 SELECT 语句中的一种高级用法,它允许在一个查询中嵌套另一个查询。

  • 作为条件的子查询:子查询可以作为 WHERE 子句中的条件,用于筛选主查询的记录,使得查询条件更加灵活和动态。
    SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
    
  • 作为列的子查询:子查询可以作为主查询中的一列,用于返回一个值或一组值,为数据的呈现增添了更多的信息维度。
    SELECT name, (SELECT MAX(salary) FROM employees) AS max_salary FROM employees;
    

八、分页查询:优化数据展示体验

在处理大量数据时,为了提高查询性能和用户体验,分页查询是一种常用的技巧。通过 LIMIT 关键字,我们可以限制查询结果返回的行数,让用户能够更加便捷地浏览和管理数据。

  • 使用 LIMIT:用于限制查询结果返回的行数,通常用于实现分页功能。
    SELECT * FROM employees LIMIT 10;  -- 返回前10条记录
    SELECT * FROM employees LIMIT 5 OFFSET 10;  -- 返回从第11条记录开始的5条记录

http://www.kler.cn/a/459001.html

相关文章:

  • 掌握RabbitMQ:全面知识点汇总与实践指南
  • 基于51单片机和16X16LED点阵屏(74HC138和74HC595驱动)的小游戏《贪吃蛇》
  • 【新教程】华为昇腾NPU的pytorch环境搭建
  • RabbitMQ-基本使用
  • epoll 水平ET跟边缘LT触发的区别是什么
  • MinGW 和 MinGW-w64 的介绍与配置
  • 【网络安全实验室】基础关实战详情
  • 【发票提取明细+发票号改名】批量提取PDF电子发票明细导出Excel表格并改名技术难点,批量PDF多区域内容识别提取明细并用内容改名的小结
  • Azure Function 解决跨域问题
  • 算法训练营Day28 | leetcode 122.买卖股票的最佳时机II 55.跳跃游戏 45.跳跃游戏II
  • nginx中的proxy_set_header参数详解
  • 18、【OS】【Nuttx】用gdb调试nuttx os
  • 轮胎识别数据集,可对生产流水线里的轮胎图片标注,支持yolo,coco json,voc xml格式的标注,一共785张采集图片
  • IDEA XML 文件 SQL 提示
  • 【每日学点鸿蒙知识】桌面快捷方式API、Swiper显示异常、Page防止截屏、Tabs组件监听显示隐藏、PDF翻页回调
  • ubuntu快速入门
  • 《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(22):密钥协商算法
  • Axure RP11安装学习
  • [Day 10]有序数组的平方
  • 平衡车PID算法 学习日记
  • 如何删除Mac上的系统数据
  • 【论文阅读】DebSDF:深入研究神经室内场景重建的细节和偏差
  • Flink 中的 Time 有哪⼏种?
  • 【Python】正则表达式的艺术:轻松驾驭 Python 的re库
  • MySQLOCP考试过了,题库很稳,经验分享。
  • springboot521基于Spring Boot的校园闲置物品交易系统(论文+源码)_kaic