SQL基础入门—— 简单查询与条件筛选

news2024/11/28 5:19:28

在SQL中,查询是从数据库中获取数据的核心操作,而条件筛选是查询中不可或缺的一部分。通过使用条件筛选,我们可以精准地从大量数据中提取我们需要的信息。本节将详细讲解如何使用SQL进行简单查询与条件筛选,包含常见的条件运算符和函数。

1. 使用WHERE进行条件筛选

WHERE子句是SQL查询中用于指定条件的关键部分。它用于限制查询结果集,仅返回满足特定条件的行。条件可以基于列的值、计算结果或多种比较运算符。

1.1 基本条件筛选
SELECT * FROM employees
WHERE salary > 50000;

这个查询将返回所有薪水大于50,000的员工记录。

1.2 多条件筛选(AND,OR)
  • AND:多个条件同时满足时才会返回结果。
  • OR:至少满足一个条件即可返回结果。
SELECT * FROM employees
WHERE salary > 50000 AND department = 'Engineering';

这个查询返回薪水大于50,000并且属于"Engineering"部门的员工。

SELECT * FROM employees
WHERE department = 'Engineering' OR department = 'Sales';

这个查询返回所有属于"Engineering"或"Sales"部门的员工。

1.3 排除特定值(NOT)

使用NOT关键字排除某些值。

SELECT * FROM employees
WHERE NOT department = 'HR';

这个查询返回所有部门不是"HR"的员工。

1.4 条件筛选中使用NULL值

在SQL中,NULL表示缺失或未知的值。要筛选包含NULL或不包含NULL的记录,可以使用IS NULLIS NOT NULL

SELECT * FROM employees
WHERE salary IS NULL;

这个查询返回薪水为空的员工记录。

SELECT * FROM employees
WHERE salary IS NOT NULL;

这个查询返回所有薪水不为空的员工记录。

2. 使用LIKE, IN, BETWEEN等操作符

SQL提供了多个操作符来进行更加复杂和灵活的条件筛选。

2.1 LIKE 操作符

LIKE用于进行模糊匹配,支持通配符。常见的通配符有:

  • %:匹配零个或多个字符。
  • _:匹配单个字符。
SELECT * FROM employees
WHERE name LIKE 'John%';

这个查询返回所有名字以"John"开头的员工。

SELECT * FROM employees
WHERE name LIKE '_o%';

这个查询返回所有名字以"son"结尾的员工。

SELECT * FROM employees
WHERE name LIKE '_o%';

这个查询返回所有名字的第二个字符是"o"的员工。

2.2 IN 操作符

IN用于检查一个列的值是否存在于指定的多个值中,它可以简化多个OR条件的查询。

SELECT * FROM employees
WHERE department IN ('Engineering', 'Sales', 'Marketing');

这个查询返回所有属于"Engineering"、"Sales"或"Marketing"部门的员工。

2.3 BETWEEN 操作符

BETWEEN用于选择范围内的值(包括边界值),适用于数字、日期和时间类型。

SELECT * FROM employees
WHERE salary BETWEEN 40000 AND 60000;

这个查询返回薪水在40,000到60,000之间的员工。

SELECT * FROM employees
WHERE hire_date BETWEEN '2023-01-01' AND '2023-12-31';

这个查询返回在2023年1月1日到12月31日之间入职的员工。

2.4 NOT 操作符

NOT可以与其他操作符配合使用,排除符合条件的记录。

SELECT * FROM employees
WHERE department NOT IN ('HR', 'Finance');

这个查询返回所有不在"HR"和"Finance"部门的员工。

SELECT * FROM employees
WHERE salary NOT BETWEEN 50000 AND 70000;

这个查询返回薪水不在50,000到70,000之间的员工。

3. 基本的字符串操作与日期函数

SQL还提供了强大的字符串和日期操作功能,帮助开发者高效地处理和转换数据。

3.1 字符串操作
  • CONCAT:将多个字符串连接在一起。
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

这个查询返回员工的全名。

  • SUBSTRING:提取字符串的子串。
SELECT SUBSTRING(first_name, 1, 3) FROM employees;

这个查询返回员工名字的前3个字符。

  • TRIM:去掉字符串两端的空格。
SELECT TRIM(name) FROM employees;

这个查询返回去除前后空格的员工名字。

  • LENGTH:返回字符串的长度。
SELECT LENGTH(first_name) FROM employees;

这个查询返回员工名字的字符数。

  • REPLACE:替换字符串中的部分内容。
SELECT REPLACE(email, 'example.com', 'newdomain.com') FROM employees;

这个查询将员工邮箱中的"example.com"替换为"newdomain.com"。

3.2 日期函数
  • CURDATE:返回当前日期。
SELECT CURDATE();

这个查询返回当前日期。

  • NOW:返回当前的日期和时间。
SELECT NOW();

这个查询返回当前的日期和时间。

  • DATE_FORMAT:格式化日期。
SELECT DATE_FORMAT(hire_date, '%Y-%m-%d') FROM employees;

这个查询将员工的入职日期格式化为"年-月-日"的形式。

  • DATEDIFF:计算两个日期之间的差值,返回天数。
SELECT DATEDIFF(NOW(), hire_date) AS days_since_hired FROM employees;

SELECT DATEDIFF(NOW(), hire_date) AS days_since_hired FROM employees;

这个查询返回员工入职至今的天数。

  • DATE_ADDDATE_SUB:在日期上增加或减少指定的时间。
SELECT DATE_ADD(hire_date, INTERVAL 1 YEAR) FROM employees;

这个查询返回员工入职日期之后1年的日期。

SELECT DATE_SUB(hire_date, INTERVAL 6 MONTH) FROM employees;

这个查询返回员工入职日期之前6个月的日期。

总结

SQL提供了多种强大的工具和操作符,用于执行简单查询和进行条件筛选。通过WHERE子句,开发者可以精确地控制查询的结果集,利用LIKEINBETWEEN等操作符进行灵活的筛选,提升查询的效率和可读性。同时,SQL还提供了丰富的字符串和日期函数,使得开发者可以高效地操作和转换数据。掌握这些基本的查询技巧是开发者在实际工作中快速获取数据的基础。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2248834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

反向代理模块

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…

英语知识网站:Spring Boot技术构建

6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…

TMS FNC UI Pack 5.4.0 for Delphi 12

TMS FNC UI Pack是适用于 Delphi 和 C Builder 的多功能 UI 控件的综合集合,提供跨 VCL、FMX、LCL 和 TMS WEB Core 等平台的强大功能。这个统一的组件集包括基本工具,如网格、规划器、树视图、功能区和丰富的编辑器,确保兼容性和简化的开发。…

【AIGC】国内AI工具复现GPTs效果详解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | GPTs应用实例 文章目录 💯前言💯本文所要复现的GPTs介绍💯GPTs指令作为提示词在ChatGPT实现类似效果💯国内AI工具复现GPTs效果可能出现的问题解决方法解决后的效…

网络原理(一):应用层自定义协议的信息组织格式 HTTP 前置知识

目录 1. 应用层 2. 自定义协议 2.1 根据需求 > 明确传输信息 2.2 约定好信息组织的格式 2.2.1 行文本 2.2.2 xml 2.2.3 json 2.2.4 protobuf 3. HTTP 协议 3.1 特点 4. 抓包工具 1. 应用层 在前面的博客中, 我们了解了 TCP/IP 五层协议模型: 应用层传输层网络层…

【es6】原生js在页面上画矩形及删除的实现方法

画一个矩形,可以选中高亮,删除自己效果的实现,后期会丰富下细节,拖动及拖动调整矩形大小 实现效果 代码实现 class Draw {constructor() {this.x 0this.y 0this.disX 0this.disY 0this.startX 0this.startY 0this.mouseDo…

12 —— Webpack中向前端注入环境变量

环境变量的作用:根据不同环境,执行不同的配置 需求:开发模式下打印语句生效,生产模式下打印语句失效 —— 使用Webpack内置的DefinePlugin插件 const webpack require(webpack) module.exports { plugins: [ new webpack.Def…

Learn Git Branching 学习笔记

网址&#xff1a;Learn Git Branching 一、基础篇 1.1 git commit 1.1.1 示例&#xff08;git commit&#xff09; git commit 1.1.2 题目&#xff08;两次提交记录&#xff09; git commit git commit 前 后 1.2 git branch 1.2.1 示例&#xff08;git branch <>、git …

Unity类银河战士恶魔城学习总结(P145 Save Skill Tree 保存技能树)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了技能树的保存 警告&#xff01;&#xff01;&#xff01; 如果有LoadData&#xff08;&#xff09;和SaveData(&#xff09;…

从 App Search 到 Elasticsearch — 挖掘搜索的未来

作者&#xff1a;来自 Elastic Nick Chow App Search 将在 9.0 版本中停用&#xff0c;但 Elasticsearch 拥有你构建强大的 AI 搜索体验所需的一切。以下是你需要了解的内容。 生成式人工智能的最新进展正在改变用户行为&#xff0c;激励开发人员创造更具活力、更直观、更引人入…

社团管理新工具:SpringBoot框架

3系统分析 3.1可行性分析 通过对本社团管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本社团管理系统采用SSM框架&#xff0c;JAVA作为开发语言&#…

Vue3 源码解析(三):静态提升

什么是静态提升 Vue3 尚未发布正式版本前&#xff0c;尤大在一次关于 Vue3 的分享中提及了静态提升&#xff0c;当时笔者就对这个亮点产生了好奇&#xff0c;所以在源码阅读时&#xff0c;静态提升也是笔者的一个重点阅读点。 那么什么是静态提升呢&#xff1f;当 Vue 的编译器…

8款Pytest插件助力Python自动化测试

当测试用例变得复杂&#xff0c;或者需要处理大量测试数据时&#xff0c;插件通过使测试更加简洁和结构化而变得非常有用。Python凭借其简洁性和多功能性&#xff0c;成为自动化测试的热门选择&#xff0c;而pytest是最广泛使用的测试框架之一。虽然pytest本身功能强大&#xf…

【spark-spring boot】学习笔记

目录 说明RDD学习RDD介绍RDD案例基于集合创建RDDRDD存入外部文件中 转换算子 操作map 操作说明案例 flatMap操作说明案例 filter 操作说明案例 groupBy 操作说明案例 distinct 操作说明案例 sortBy 操作说明案例 mapToPair 操作说明案例 mapValues操作说明案例 groupByKey操作说…

Spring Boot 3 集成 Spring Security(2)授权

文章目录 授权配置 SecurityFilterChain基于注解的授权控制自定义权限决策 在《Spring Boot 3 集成 Spring Security&#xff08;1&#xff09;》中&#xff0c;我们简单实现了 Spring Security 的认证功能&#xff0c;通过实现用户身份验证来确保系统的安全性。Spring Securit…

Apache OFBiz xmlrpc XXE漏洞(CVE-2018-8033)

目录 1、漏洞描述 2、EXP下载地址 3、EXP利用 1、漏洞描述 Apache OFBiz是一套企业资源计划&#xff08;ERP&#xff09;系统。它提供了广泛的功能&#xff0c;包括销售、采购、库存、财务、CRM等。 Apache OFBiz还具有灵活的架构和可扩展性&#xff0c;允许用户根据业务需求…

【Android】ARouter的使用及源码解析

文章目录 简介介绍作用 原理关系 使用添加依赖和配置初始化SDK添加注解在目标界面跳转界面不带参跳转界面含参处理返回结果 源码基本流程getInstance()build()navigation()_navigation()Warehouse ARouter初始化init帮助类根帮助类组帮助类 completion 总结 简介 介绍 ARouter…

springboot整合hive

springboot整合hive pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…

IntelliJ IDEA 中,自动导包功能

在 IntelliJ IDEA 中&#xff0c;自动导包功能可以极大地提高开发效率&#xff0c;减少手动导入包所带来的繁琐和错误。以下是如何在 IntelliJ IDEA 中设置和使用自动导包功能的详细步骤&#xff1a; 一、设置自动导包 打开 IntelliJ IDEA&#xff1a; 启动 IntelliJ IDEA 并打…

【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;MySQL课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 MySQL在Centos 7环境下的安装&#xff1a; 卸载…