MySQL中的常用逻辑操作符

逻辑运算符在MySQL查询中扮演着重要角色,通过AND、OR、NOT等运算符的组合使用,可以提高查询的准确性和灵活性,确保查询结果满足业务需求。合理使用这些运算符还能优化查询性能,减少不必要的数据检索,并提高SQL语句的可读性和可维护性。
本来是想借助力扣的题目来巩固学习,结果刷了三道题后感觉太慢,还是从网上下载了一个动漫角色战力数据,自己建了两个数据库,操作更快更方便一点。
常用的MySQL逻辑运算符如下

逻辑运算符描述示例
AND (或 &&)当且仅当两个操作数都为真时,条件才为真SELECT * FROM 数据表 WHERE 列1 = '数值1' AND 列2 = '数值2';
OR (或 ||)当至少有一个操作数为真时,条件就为真SELECT * FROM 数据表 WHERE 列1 = '数值1' OR 列2 = '数值2';
NOT (或 !)用于反转操作数的逻辑状态SELECT * FROM 数据表 WHERE NOT 列1 = '数值1';
BETWEEN用于在某个范围内选择值SELECT * FROM 数据表 WHERE 列1 BETWEEN '数值1' AND '数值2';
IN用于测试某个值是否在给定的列表中SELECT * FROM 数据表 WHERE 列1 IN ('数值1', '数值2', '数值3');
IS NULL, IS NOT NULL用于测试某个字段是否为NULL或不为NULLSELECT * FROM 数据表 WHERE 列1 IS NULL;
EXISTS, NOT EXISTS用于测试子查询是否返回任何结果SELECT * FROM 数据表1 WHERE EXISTS (SELECT 1 FROM 数据表2 WHERE 数据表2.column = 数据表1.column);
LIKE用于在字符串中搜索模式SELECT * FROM 数据表 WHERE 列1 LIKE 'pattern%';
<> (或 !=)用于检查两个值是否不等SELECT * FROM 数据表 WHERE 列1 <> '数值1';

AND(&&)

借助力扣的题库来演示下。
原题链接:高频SQL50题:1757
题目要求如下:
表:Products

Column NameType
product_idint
low_fatsenum
recyclableenum

product_id 是该表的主键(具有唯一值的列)。
low_fats 是枚举类型,取值为以下两种 (‘Y’, ‘N’),其中 ‘Y’ 表示该产品是低脂产品,‘N’ 表示不是低脂产品。
recyclable 是枚举类型,取值为以下两种 (‘Y’, ‘N’),其中 ‘Y’ 表示该产品可回收,而 ‘N’ 表示不可回收。

编写解决方案找出既是低脂又是可回收的产品编号。

返回结果 无顺序要求 。

返回结果格式如下例所示:

示例 1:

输入:
Products 表:

product_idlow_fatsrecyclable
0YN
1YY
2NY
3YY
4NN

输出:

product_id
1
3

解释:
只有产品 id 为 1 和 3 的产品,既是低脂又是可回收的产品。

先建立以下表格模拟:

CREATE TABLE Products (  
    product_id INT PRIMARY KEY,  
    low_fats ENUM('Y', 'N'),  
    recyclable ENUM('Y', 'N')  
);
-- 一口气插入数据
INSERT INTO Products (product_id, low_fats, recyclable) VALUES  
(0, 'Y', 'N'),  
(1, 'Y', 'Y'),  
(2, 'N', 'Y'),  
(3, 'Y', 'Y'),  
(4, 'N', 'N');

我的解题方法是在使用了SELECTFROMWHERE的基础上,使用AND逻辑操作符来确保两个条件(低脂和可回收)同时得到满足。

SELECT product_id  
FROM Products  
WHERE low_fats = 'Y' AND recyclable = 'Y';

运行结果如下,我的应该是最常见的解法
在这里插入图片描述

在这里插入图片描述

OR(||)

这个也是力扣的题库。
原题链接:高频SQL50题:584
表: Customer

Column NameType
idint
namevarchar
referee_idint

在 SQL 中,id 是该表的主键列。
该表的每一行表示一个客户的 id、姓名以及推荐他们的客户的 id。
找出那些 没有被 id = 2 的客户 推荐 的客户的姓名。

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入:
Customer 表:

idnamereferee_id
1Willnull
2Janenull
3Alex2
4Billnull
5Zack1
6Mark2

输出:

name
Will
Jane
Bill
Zack

建立表格先,这里我在建立时添加了外键约束,可以允许referee_id列有NULL

CREATE TABLE Customer (  
    id INT PRIMARY KEY,  
    name VARCHAR(255),  
    referee_id INT,  
    FOREIGN KEY (referee_id) REFERENCES Customer(id) ON DELETE SET NULL  
);  
  
INSERT INTO Customer (id, name, referee_id) VALUES  
(1, 'Will', NULL),  
(2, 'Jane', NULL),  
(3, 'Alex', 2),  
(4, 'Bill', NULL),  
(5, 'Zack', 1),  
(6, 'Mark', 2);

在这里插入图片描述
使用OR

SELECT name  
FROM Customer  
WHERE referee_id != 2 OR referee_id IS NULL;

在这里插入图片描述
在这里插入图片描述
刷题太费劲了,我还是自建一个小数据库吧

创建超级英雄战力数据库

CREATE DATABASE superheroes;
USE superheroes; 
CREATE TABLE IF NOT EXISTS characters (    
    `Character` VARCHAR(255),    
    `Universe` VARCHAR(255),    
    `Strength` INT,    
    `Speed` INT,    
    `Intelligence` INT,    
    `SpecialAbilities` VARCHAR(255),    
    `Weaknesses` VARCHAR(255),    
    `BattleOutcome` INT    
);

插入超级英雄信息

INSERT INTO `characters` (`Character`, `Universe`, `Strength`, `Speed`, `Intelligence`, `SpecialAbilities`, `Weaknesses`, `BattleOutcome`) VALUES 
('Wonder Woman', 'Marvel', 7, 8, 3, 'Telekinesis', 'Kryptonite', 0),  
('Iron Man', 'Marvel', 4, 7, 9, 'Telekinesis', 'Kryptonite', 0),  
('Ass Man', 'DC Comics', 8, 7, 5, 'Telekinesis', 'Magic', 0),  
('Spider-Dick-Man', 'DC Comics', 5, 6, 10, 'Telekinesis', 'Kryptonite', 0),  
('Flash', 'Marvel', 7, 6, 2, 'Invisibility', 'Magic', 0),  
('Spider-Man', 'DC Comics', 10, 9, 7, 'Invisibility', 'Wooden Stake', 1),  
('Wonder Woman', 'Marvel', 3, 6, 2, 'Super Strength', 'Silver', 1),  
('Thor', 'DC Comics', 7, 2, 4, 'Invisibility', 'Magic', 1),  
('Batman', 'DC Comics', 8, 2, 7, 'Flight', 'Silver', 0),  
('Iron Man', 'DC Comics', 5, 5, 4, 'Flight', 'Wooden Stake', 0),  
('Superman', 'DC Comics', 4, 4, 7, 'Telekinesis', 'Kryptonite', 0),  
('Thor', 'DC Comics', 8, 2, 7, 'Flight', 'Wooden Stake', 0),  
('Iron Man', 'DC Comics', 8, 3, 1, 'Super Strength', 'Silver', 0),  
('Batman', 'Marvel', 3, 7, 6, 'Invisibility', 'Wooden Stake', 0),  
('Flash', 'DC Comics', 6, 8, 9, 'Invisibility', 'Kryptonite', 0),  
('Superman', 'Marvel', 5, 6, 2, 'Invisibility', 'Wooden Stake', 0),  
('Iron Man', 'Marvel', 2, 5, 3, 'Flight', 'Kryptonite', 0),  
('Captain America', 'Marvel', 8, 1, 10, 'Invisibility', 'Magic', 1),  
('Wonder Woman', 'Marvel', 6, 8, 5, 'Telekinesis', 'Silver', 1),  
('Thor', 'Marvel', 2, 3, 9, 'Telekinesis', 'Kryptonite', 0),  
('BigDick', 'Marvel', 100, 100, 100, 'Flight', 'Kryptonite', 0);

查看下数据库是否正创建成功,使用CREATE VIEW创建一个虚拟表格来展示下:

CREATE VIEW superheroes_view AS  
SELECT `Character`, `Universe`, `Strength`, `Speed`, `Intelligence`, `SpecialAbilities`, `Weaknesses`, `BattleOutcome`  
FROM characters;

SELECT * FROM superheroes_view;

在这里插入图片描述

NOT (或 !)

根据superheroes数据库查询非漫威宇宙的角色

SELECT * FROM characters WHERE NOT Universe = 'Marvel';  
-- 或者SELECT * FROM characters WHERE Universe != 'Marvel';

在这里插入图片描述

BETWEEN

查询力量值在5到8之间的角色:

SELECT * FROM characters WHERE Strength BETWEEN 5 AND 8;

在这里插入图片描述

IN

查询宇宙为漫威或DC的角色(这里再插入几个Pig Pig Man中的角色):

INSERT INTO `characters` (`Character`, `Universe`, `Strength`, `Speed`, `Intelligence`, `SpecialAbilities`, `Weaknesses`, `BattleOutcome`) VALUES 
('Pig Woman', 'Pig Pig Man', 7, 8, 3, 'Telekinesis', 'Kryptonite', 0),  
('Super People Strang', 'Pig Pig Man', 4, 7, 9, 'Telekinesis', 'Kryptonite', 0),  
('Teacher MiHu', 'Pig Pig Man', 8, 7, 5, 'Telekinesis', 'Magic', 0),  
('GGBond', 'Pig Pig Man', 5, 6, 10, 'Telekinesis', 'Kryptonite', 0);
SELECT * FROM characters WHERE Universe IN ('Marvel', 'DC Comics');

在这里插入图片描述

IS NULLIS NOT NULL

插入含有NULL值的角色信息,随后查询字段不为NULL的角色:

INSERT INTO `characters` (`Character`, `Universe`, `Strength`, `Speed`, `Intelligence`, `SpecialAbilities`, `Weaknesses`, `BattleOutcome`) VALUES 
('Fei Fei', 'Pig Pig Man', NULL, 8, 3, 'Telekinesis', 'Kryptonite', 0),  
('Old Eight', 'Pig Pig Man', 4, 7, NULL, 'Telekinesis', 'Kryptonite', 0),  
('Doger', 'Pig Pig Man', NULL, 7, 5, 'Telekinesis', 'Magic', 0),  
('Hu Ge', 'Pig Pig Man', 5, NULL, 10, 'Telekinesis', 'Kryptonite', 0);

查询能力的三个数值字段中不存在NULL值的角色

SELECT * FROM `characters` WHERE `Strength` IS NOT NULL AND `Speed` IS NOT NULL AND `Intelligence` IS NOT NULL;

在这里插入图片描述

查询能力的三个数值字段存在NULL值的角色:

SELECT * FROM `characters` WHERE `Strength` IS NULL OR `Speed` IS NULL OR `Intelligence` IS NULL;

在这里插入图片描述

EXISTSNOT EXISTS

这是一个稍微复杂的操作符,需要有两个表格,先新建一个名为missions的表格,在里面记录角色的战斗任务:

SELECT `Character`, `Universe`  
FROM `characters` c  
WHERE EXISTS (  
    SELECT 1  
    FROM `missions` m  
    WHERE m.`Character` = c.`Character`  
);

给角色安排下任务:

CREATE TABLE IF NOT EXISTS missions (  
    `MissionID` INT AUTO_INCREMENT PRIMARY KEY,  
    `Character` VARCHAR(255),  
    `MissionName` VARCHAR(255),  
    `Success` BOOLEAN  
);  
  
INSERT INTO `missions` (`Character`, `MissionName`, `Success`) VALUES  
('Spider-Man', 'Save the PigWord', TRUE),  
('Batman', 'Love the Joker', TRUE),  
('Iron Man', 'Defend the Earth', TRUE),  
('Wonder Woman', 'Find the Lost Artifact', FALSE),  
('GGBond', 'Rescue the Piglets', TRUE);

使用EXISTS查询有任务的英雄:

SELECT `Character`, `Universe`  
FROM `characters` c  
WHERE EXISTS (  
    SELECT 1  
    FROM `missions` m  
    WHERE m.`Character` = c.`Character`  
);

在这里插入图片描述

使用NOT EXISTS查询没有任务的英雄:

SELECT `Character`, `Universe`  
FROM `characters` c  
WHERE NOT EXISTS (  
    SELECT 1  
    FROM `missions` m  
    WHERE m.`Character` = c.`Character`  
);

在这里插入图片描述

LIKE

查询名字以"G"开头的角色:

SELECT * FROM `characters` WHERE `Character` LIKE 'G%';

在这里插入图片描述

<> (或 !=)

查询力量值不等于7的角色:

SELECT * FROM characters WHERE Strength <> 7;  
-- 或者SELECT * FROM characters WHERE Strength != 7;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot创建一个初始化项目

提示&#xff1a;这一篇文章&#xff0c;主要是为了之后可以快速的去搭建项目&#xff0c;当然这篇博客&#xff0c;作者也会根据以后学习到的东西&#xff0c;慢慢去整理 文章目录 前言 搭建一个SpringBoot项目&#xff0c;目的是为了快速开发项目 项目列表 响应枚举类 /***…

AI奥林匹克竞赛:Claude-3.5-Sonnet对决GPT-4o,谁是最聪明的AI?

目录 实验设置 评估对象 评估方法 结果与分析 针对学科的细粒度分析 GPT-4o vs. Claude-3.5-Sonnet GPT-4V vs. Gemini-1.5-Pro 结论 AI技术日新月异&#xff0c;Anthropic公司最新发布的Claude-3.5-Sonnet因在知识型推理、数学推理、编程任务及视觉推理等任务上设立新…

网络攻防题录集

文章目录 第一章 网络攻防概述第二章 密码学第三章 网络协议脆弱性分析第四 自测题三第五章 自测题五第六章 自测题六第七章 自测题七第八章 自测题八第九章 自测题九第十章 自测题十第十一章 自测题十一第十二章 自测题十二第十三章 自测题十三 第一章 网络攻防概述 第一代安…

Anti-Canine Heartworm Antibody (Chicken) - HRP Conjugated

犬心丝虫&#xff08;学名Dirofilaria immitis&#xff09;是一种寄生丝虫&#xff0c;通过蚊子叮咬而传播。感染犬在早期阶段&#xff0c;大多不会出现症状。随着病情发展&#xff0c;将出现咳嗽、呼吸困难等症状&#xff0c;并伴有右心功能衰竭&#xff0c;最终全身衰弱或虚脱…

2008-2022年款哈弗维修手册和电路图线路图接线图资料更新

经过整理&#xff0c;2005-2022年款长城哈弗全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照…

关于windows,wifi图标显示不了的解决方法

解决方法一&#xff08;解决了我的问题的方法&#xff09;&#xff1a; winr -->输入 regedit 打开注册表 --> 删除HKEY-CLASSES_ROOT\CLSID\{3d09c1ca-2bcc-40b7-b9bb-3f3ec143a87b} CLSID在下面仔细找&#xff0c;然后找到09开头那个删掉重启就可以了&#xff0c;可能…

工程师这几招降低电机EMI的方法,提高系统电磁兼容性能

通过在电机端子之间放置陶瓷电容器、工模滤波器或BDL滤波器均可抑制差模和共模噪声&#xff0c;以提高系统的EMC性能。工程师在本文详细介绍这几种降低电机EMI的方法。 EMC和EMI背景 电磁干扰(EMI)是系统上的电磁噪声的辐射或感应。与大多数电磁电路组件一样&#xff0c;直流…

大数据开发中的数据倾斜问题

数据倾斜是大数据开发中常见的性能瓶颈&#xff0c;了解其原因并采取有效的解决方案对系统性能至关重要。本文将从数据倾斜的影响、解决方法及示例代码等方面进行详细讨论。 目录 1. 数据倾斜的影响2. 解决数据倾斜的方法调整分区键预聚合倾斜处理逻辑 3. 进一步解决数据倾斜的…

深入解析 androidx.databinding.Bindable 注解

在现代 Android 开发中&#xff0c;数据绑定 (Data Binding) 是一个非常重要的技术。它使得我们能够简化 UI 和业务逻辑之间的连接&#xff0c;从而提高代码的可读性和维护性。在数据绑定中&#xff0c;Bindable 注解是一个关键部分&#xff0c;它帮助我们实现双向数据绑定和自…

SAP Build 3-调用SAP BAPI和调用S4HC API

1. 调用SAP BAPI 1.1 前提 项目已创建 SAP环境登录正常 1.2 引入BAPI SDK 商店中下载BAPI SDK Process中导入BAPI SDK 1.3 新建action group 新建action group时&#xff0c;会要求填写SAP登录信息&#xff0c;根据连接类型分为SSO&#xff0c;Basic和Custom 如果选择SS…

数据恢复篇:如何在 Android 手机上恢复未保存/删除的 Word 文档

在 Android 手机上访问 Word 文档通常很简单&#xff0c;但是当这些重要文件被删除或未保存时会发生什么&#xff1f;这种情况虽然令人痛苦&#xff0c;但并非毫无希望。到 2024 年&#xff0c;有几种强大的方法来处理此类数据丢失。本指南重点介绍如何在Android手机上恢复已删…

AI时代创新潮涌,从探路到引路,萤石云引领千行百业创新

步入AI新时代&#xff0c;AI、云计算、大数据等技术迅速迭代&#xff0c;并日益融入经济社会发展各领域全过程&#xff0c;数字经济成为推动千行百业转型升级的重要驱动力量。 今年的政府工作报告提出&#xff0c;深入推进数字经济创新发展。积极推进数字产业化、产业数字化&a…

UnityUGUI之二 CameraTargetTexture

在我们需要将3D物体呈现在2D视角时就可以使用TargetTexture&#xff0c;若想只显示3D物体则需改变背景颜色&#xff0c;并且得再增加一个相机

为什么我学个 JAVA 就已经耗尽所有而有些人还能同时学习多门语言

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「JAVA的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;我的入门语言是C&#xff0c…

Spring两大核心思想 IoC和AoP

目录 ✨ 一、什么是IoC 1、定义 &#x1f38a; 2、IoC思想 &#x1f38a; 3、优势 &#x1f38a; 4、对象的管理 &#x1f38a; 存对象&#xff1a;Component 取对象&#xff1a;AutoWired ✨二、什么是DI 1、定义 &#x1f38a; 2、IoC和DI的关系&#x1f38a; 可…

Stable Diffusion【真人模型】:人脸特美的人像摄影大模型wuhaXL_realisticMixV3.0

今天和大家分享一个基于SDXL的真人大模型&#xff1a;wuhaXL_realisticMix。该模型无需使用LORA**就能生成的特别漂亮的人脸&#xff0c;虽然有时候人脸有些假&#xff0c;但是生成的人脸确实非常漂亮。 该模型底模融合了WhiteXL_realisticMix&#xff0c;训练素材来自于视频转…

nacos开启认证之后,服务就无法注册了

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

机器学习项目-基于随机森林的航空公司用户满意度分析

摘要 ​ 航空旅行是人们出行的常用方式之一&#xff0c;乘客对于航空公司的服务质量有着较高的要求。满意度是衡量服务质量的重要指标&#xff0c;因此预测航空公司乘客的满意度对于提高服务质量具有重要意义。 ​ 近年来&#xff0c;机器学习在预测领域得到了广泛应用。机器…

08 - Python面向对象编程进阶

面向对象进阶 在前面的章节我们已经了解了面向对象的入门知识&#xff0c;知道了如何定义类&#xff0c;如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发&#xff0c;我们还需要对Python中的面向对象编程进行更为深入的了解。 property装…

mst[讲课留档]

最小生成树(Minimum Spanning Tree) (1)概念 我们知道&#xff0c;树是有 n n n个结点&#xff0c; n − 1 n-1 n−1条边的无向无环的连通图。 一个连通图的生成树是一个极小的连通子图&#xff0c;它包含图中全部的 n n n个顶点&#xff0c;但只有构成一棵树的 n − 1 n-1 …