【MySQL基礎篇】MySQL中的算術運算符和比較運算符


精選專欄鏈接 🔗


  • MySQL技術筆記專欄
  • Redis技術筆記專欄
  • 大模型搭建專欄
  • Python學習筆記專欄
  • 深度學習算法專欄

歡迎訂閱,點贊+關注,每日精進1%,共攀技術高峰

更多內容持續更新中!希望能給大家帶來幫助~ 😀😀😀


MySQL中的算術運算符和比較運算符

  • 1,MySQL中的DUAL關鍵字
  • 2,算術運算符
  • 3,比較運算符
    • 3.1,符號型運算符
      • 3.1.1,等號運算符
      • 3.1.2,安全等于運算符
      • 3.1.3,不等于運算符
      • 3.1.4,其他符號型運算符總結
    • 3.2,非符號型運算符
      • 3.2.1,IS NULL :為空運算符
      • 3.2.1,IS NOT NULL: 不為空運算符
      • 3.2.3,LEAST:最小值運算符
      • 3.2.4,GREATEST:最大值運算符
      • 3.2.5,BETWEEN AND運算符
      • 3.2.6,IN 和NOT IN運算符
      • 3.2.7,LIKE:模糊查詢運算符
      • 3.2.8,ESCAPE 運算符
  • 4,邏輯運算符


1,MySQL中的DUAL關鍵字

? DUAL 關鍵字?是 MySQL數據庫 中的一個特殊表,主要用于在不需要從具體表中獲取數據時進行查詢操作。DUAL表是一個虛擬表,以運行如下SQL代碼為例:

SELECT 1,3*2
FROM DUAL;

代碼運行結果如下:

在這里插入圖片描述


2,算術運算符

算術運算符主要用于數學運算,其可以連接運算符前后的兩個數值或表達式,對數值或表達式進行運算。

MySQL中常見的算術運算符有:加(+)、減(-)、乘(*)、除(/或DIV)和取模(%或MOD)。接下來以SQL代碼為例理解算術運算符:

①加法與減法運算符

SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5 
FROM DUAL;

運行結果如下:

在這里插入圖片描述

②乘法與除法運算符

 SELECT 100, 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2,100 + 2 * 5 / 2,100 /3, 100 DIV 0 
FROM DUAL;

運行結果如下:

在這里插入圖片描述
注意點:

  • 有浮點數參與運算,則結果為浮點數;如(100 * 1.0結果為100.0);
  • 整數相除結果為浮點數。 因為大多數情況下的整數相除結果不能除盡,因此MySQL中默認了是除不盡的情況,即使除盡了也是浮點數;
  • 分母為0則結果為Null;

③取模(求余)運算符

 SELECT 12 % 3, 12 MOD 5, 12 MOD -5, -12 % 5,-12 % -5FROM dual;

運行結果如下:

在這里插入圖片描述

注意:取余運算結果的正負與被模數一致(即%前面的數值)

練習:從員工表中查詢員工id為偶數的員工信息

SQL代碼如下:

 SELECT employee_id,last_name,salaryFROM employeesWHERE employee_id % 2 = 0;

查詢得到的結果集如下:

在這里插入圖片描述


3,比較運算符

比較運算符用來對表達式左邊的操作數和右邊的操作數進行比較,比較的結果為真則返回1,比較的結果為假則返回0,其他情況則返回NULL。比較運算符可以分為符號類型和非符號類型。


3.1,符號型運算符

3.1.1,等號運算符

運行如下SQL代碼:

SELECT 1 = 2,1 != 2,1 = '1',1 = 'a',0 = 'a' 
FROM DUAL;

運行結果如下:

在這里插入圖片描述
運行如下SQL代碼:

SELECT 'a' = 'a','ab' = 'ab','a' = 'b' 
FROM DUAL;

運行結果如下:

在這里插入圖片描述

注意點:

  • 如果等號兩邊的值一個是整數,一個是字符串,則MySQL會按照字符串進行比較。如:1 = ‘1’ 進行比較時,會將字符串轉換為數值1 ;
  • 字符串存在隱式轉換。如果轉換數值不成功,則看做0;比如1=‘a’ ,字符串轉數值失敗,會變為0;
  • 如果等號兩邊都是字符串,MySQL會按照字符串進行比較,比較各自字符的ASCII編碼;
  • 如果等號兩邊的值、字符串或表達式中有一個為NULL,則比較結果為NULL。

易錯例子:篩選出employees表內commission_pct為Null的員工信息

SQL語句如果寫成:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct = NULL;

此時執行查詢,沒有任何結果,如下圖所示:

在這里插入圖片描述
原因就是WHERE語句中有Null參與比較,而只要等號兩邊有一個Null,結果就是Null。可以使用接下來介紹的安全等于運算符解決此問題。


3.1.2,安全等于運算符

安全等于運算符**(<=>)與等于運算符(=)的作用是相似的,唯一的區別是‘<=>’可以用來對NULL進行判斷。在兩個操作數均為NULL時,其返回值為1,而不為NULL;當一個操作數為NULL時,其返回值為0,而不為NULL。

SQL代碼示例如下:

SELECT 1 <=> '1', 1 <=> 0, 'a' <=> 'a', (5 + 3) <=> (2 + 6), '' <=> NULL,NULL <=> NULL 
FROM DUAL;

運行結果如下:

在這里插入圖片描述

回顧例子:篩選出employees表內commission_pct為Null的員工信息

對此例子,可以使用安全等于(<=>)進行查詢:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct <=> NULL;  

運行結果如下:
在這里插入圖片描述


3.1.3,不等于運算符

不等于運算符( <> 和 != )用于判斷兩邊的數字、字符串或者表達式的值是否不相等,如果不相等則返回1,相等則返回0。不等于運算符不能判斷NULL值。如果兩邊的值有任意一個為NULL,或兩邊都為NULL,則結果為NULL。

SQL示例如下:

 SELECT 1 <> 1, 1 != 2, 'a' != 'b', (3+4) <> (2+6), 'a' != NULL, NULL <> NULLFROM DUAL; 

運行結果如下:

在這里插入圖片描述

3.1.4,其他符號型運算符總結

運算符名稱作用示例
<小于運算符判斷前面的值、字符串或表達式是否小于后面的值、字符串或表達式SELECT C FROM TABLE WHERE A < B
>大于運算符判斷前面的值、字符串或表達式是否大于后面的值、字符串或表達式SELECT C FROM TABLE WHERE A > B
<=小于等于運算符判斷前面的值、字符串或表達式是否小于等于后面的值、字符串或表達式SELECT C FROM TABLE WHERE A <= B
>=大于等于運算符判斷前面的值、字符串或表達式是否大于等于后面的值、字符串或表達式SELECT C FROM TABLE WHERE A >= B

3.2,非符號型運算符

3.2.1,IS NULL :為空運算符

回顧例子:篩選出employees表內commission_pct為Null的員工信息

前面介紹了使用安全等于運算符篩選 Null 字段。我們還可以使用IS NULL運算符進行篩選:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NULL;  

在這里插入圖片描述


3.2.1,IS NOT NULL: 不為空運算符

繼續看例子:篩選出employees表內commission_pct不為Null的員工信息

SQL語句如下:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;  

運行結果如下:

在這里插入圖片描述

總結:查詢commission_pct等于NULL。可以有以下四種寫法:

SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT employee_id,commission_pct FROM employees WHERE commission_pct <=> NULL;
SELECT employee_id,commission_pct FROM employees WHERE ISNULL(commission_pct);
SELECT employee_id,commission_pct FROM employees WHERE commission_pct = NULL;

3.2.3,LEAST:最小值運算符

LEAST最小值運算符,用于在多個值中返回最小值。

SQL示例如下:

 SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2)FROM DUAL;

運行結果如下:
在這里插入圖片描述
通過結果可以看出:

  • 當參數是整數或者浮點數時,LEAST將返回其中最小的值;
  • 當參數為字符串時,LEAST返回字母表中順序最靠前的字符;
  • 當比較值列表中有NULL時,LEAST不能判斷大小,返回值為NULL;

3.2.4,GREATEST:最大值運算符

GREATEST最大值運算符,用于在多個值中返回最小值。

SQL示例如下:

SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2)
FROM DUAL;

運行結果如下:

在這里插入圖片描述
通過結果可以看出:

  • 當參數中是整數或者浮點數時,GREATEST將返回其中最大的值;
  • 當參數為字符串時,GREATEST返回字母表中順序最靠后的字符;
  • 當比較值列表中有NULL時,GREATEST不能判斷大小,返回值為NULL;

3.2.5,BETWEEN AND運算符

BETWEEN AND運算符使用的格式通常為:SELECT D FROM TABLE WHERE C BETWEEN A AND B,此時,當C大于或等于A,并且C小于或等于B時,結果為1,否則結果為0。

SQL示例如下:

SELECT 1 BETWEEN 0 AND 1, 10 BETWEEN 11 AND 12, 'b' BETWEEN 'a' AND 'c'
FROM DUAL;

運行結果如下:

在這里插入圖片描述

應用示例:查詢employees表內工資在6000到8000的員工信息;

SQL語句如下:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000;

查詢得到的結果集如下:

在這里插入圖片描述

需要注意的是:SELECT D FROM TABLE WHERE C BETWEEN A AND B;,其中A為下邊界,C為上邊界,不可顛倒,否則可能查詢不到數據。

如果需求改變,要求查詢employees表內工資不在6000到8000的員工信息呢?

SQL語句如下:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;

查詢得到的結果集如下:

在這里插入圖片描述


3.2.6,IN 和NOT IN運算符

IN運算符用于**判斷給定的值是否是IN列表中的一個值,如果是則返回1,否則返回0。

應用示例:查詢部門為10、20、30部門的員工信息

SQL示例如下:

SELECT last_name,salary,department_id
FROM employees
WHERE department_id IN (10,20,30);

或者采用下面這種方案:

SELECT last_name,salary,department_id
FROM employees
where department_id = 10 or department_id = 20 or department_id = 30;

運行結果如下:

在這里插入圖片描述


NOT IN運算符用于判斷給定的值是否不是IN列表中的一個值,如果不是IN列表中的一
個值,則返回1,否則返回0。

應用示例:查詢工資不是6000、7000、8000的員工信息

SQL示例如下:

SELECT last_name,salary,department_id
FROM employees
WHERE salary NOT IN (6000,7000,8000);

運行結果如下:

在這里插入圖片描述


3.2.7,LIKE:模糊查詢運算符

LIKE運算符主要用來匹配字符串,通常用于模糊匹配,如果滿足條件則返回1,否則返回
0。如果給定的值或者匹配條件為NULL,則返回結果為NULL。

應用示例:查詢last_name中包含字符 ‘a’ 的員工信息

SQL示例如下:

SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';

運行結果如下:

在這里插入圖片描述

其中 %a% 中的 “%”是通配符,它代表不確定個數的字符。另外“_” 也是常用的通配符,二者區別如下:

  • “%”:匹配0個或多個字符。
  • “_”:只能匹配一個字符。

以下面的幾個案例進行說明:

  • “%a%” 表示查詢 last_name 中包含字符a的員工信息;
  • “a%” 表示查詢last_name中以字符a開頭的員工信息;
  • “%a” 表示查詢last_name中以字符a結尾的員工信息;
  • “_a%” 表示查詢last_name中第二個字符為a的員工信息;(一個下劃線匹配一個字符)
  • “_\_a%” 表示查詢第二個字符為下劃線,且第三個字符為a的 員工信息;(其中 “\” 表示轉義)

3.2.8,ESCAPE 運算符

如果使用\表示轉義,要省略ESCAPE。如果不想使用\表示轉義,則要加上ESCAPE。

SQL示例(\表示轉義):

SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';

不想使用\進行轉義,比如要求使用$進行轉義。則可以修改SQL為:

SELECT last_name
FROM employees
WHERE last_name LIKE '_$_a%' ESCAPE '$';

4,邏輯運算符

邏輯運算符主要用來判斷表達式的真假,在MySQL中,邏輯運算符的返回結果為1、0或者NULL。MySQL中支持的四種邏輯運算符分別是:邏輯與、邏輯或、邏輯非、邏輯異或。

運算符作用作用
NOT 或 !邏輯非SELECT NOT A
AND 或 &&邏輯與SELECT A AND B 或 SELECT && B
OR 或II邏輯或SELECT A OR B 或 SELECT A | | B
XOR邏輯異或SELECT A XOR B

其中邏輯異或(XOR)運算符是當給定的值中任意一個值為NULL時,則返回NULL;如果
兩個非NULL的值都是0或者都不等于0時,則返回0;如果一個值為0,另一個值不為0時,則返回1。簡而言之,異或強調 “異” ,只有兩邊不同時,才返回1。

異或運算符SQL示例

SELECT 1 XOR -1, 1 XOR 0, 0 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1, 0 XOR 0 XOR 0;

運行結果如下:

在這里插入圖片描述


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909882.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FFmpeg推流實戰30秒速成

FFmpeg windows 7.1.1下載地址 FFmpeg 推流方法 FFmpeg 是一個強大的多媒體處理工具&#xff0c;支持將視頻和音頻推流到各種流媒體服務器&#xff08;如 RTMP、RTSP、HLS 等&#xff09;。以下是幾種常見的推流方法。 推流到 RTMP 服務器 RTMP&#xff08;Real-Time Messa…

74HC595功能介紹及代碼驅動

一、引腳描述 QA~QH(15,1~7腳):數據輸出引腳 QH1(9腳):移位寄存器串行數據輸出腳,當移位寄存器中的數據多余8位時,最先進入的那位被擠出去,一般級聯使用,接下一個74HC595 G(13腳):輸出使能引腳,低電平使能 RCK(12腳):存儲寄存器輸入數據使能引腳,上升沿時…

AntV G 入門教程

下面是 AntV?G&#xff08;以下簡稱 G&#xff09;的中文入門與核心 API 教程&#xff0c;涵蓋從畫布創建、圖形繪制到事件與動畫等常用方法&#xff0c;每個 API 均附帶完整示例代碼。示例引用自官方“Getting Started”指南 ([g.antv.antgroup.com][1])。 一、安裝與引入 #…

短視頻矩陣什么意思?

短視頻矩陣是指通過布局多個短視頻賬號&#xff0c;形成協同運營的賬號體系&#xff0c;以實現流量聚合、品牌曝光或商業變現的策略。其核心邏輯是利用不同賬號的定位、內容風格或受眾群體&#xff0c;構建互補的流量網絡&#xff0c;而非單一賬號的獨立運營。 核心特點與作用&…

Linux 日志查看和分析

Linux 日志是系統運行狀態的重要記錄&#xff0c;包含了系統啟動、服務運行、用戶操作、安全事件等關鍵信息&#xff0c;對于故障排查、安全審計和系統維護至關重要。 故障排查&#xff1a;定位系統崩潰、服務異常的根本原因&#xff08;如服務啟動失敗、硬件故障&#xff09;…

一篇文章快速學會HTML

一篇文章快速學會HTML 注&#xff1a;適合有一定編程基礎的來快速掌握HTML 超文本標記語言 超文本&#xff1a;文本&#xff0c;聲音&#xff0c;圖片&#xff0c;視頻&#xff0c;表格&#xff0c;鏈接 標記&#xff1a;許多的標簽組成 HTML頁面是運行到瀏覽器上的 HTML…

智能混合檢索DeepSearch

智能混合檢索 DeepSearch 是一款自主研發的大規模分布式搜索引擎&#xff0c;提供一站式智能搜索解決方案。系統內置多種行業專屬的查詢語義理解能力&#xff0c;融合語義 ORC 模型、文本向量模型、圖像/視頻向量模型、大語言模型&#xff08;LLM&#xff09;、分詞器以及機器學…

【Docker基礎】Docker鏡像管理:docker tag詳解

目錄 1 Docker鏡像標簽基礎概念 1.1 什么是Docker鏡像標簽 1.2 鏡像標識的三要素 2 docker tag命令詳解 2.1 命令基本語法 2.2 命令工作原理 2.3 常用操作示例 3 標簽管理的實踐示例 3.1 標簽命名規范 3.2 多標簽策略 3.3 latest標簽的合理使用 4 標簽與鏡像倉庫的…

AI時代個人IP的重塑與機遇 | 創客匠人

2025年作為AI應用爆發元年&#xff0c;正悄然改寫個人IP的打造邏輯。AI不會取代IP&#xff0c;卻會淘汰不懂得與AI共生的創作者。 AI重構IP運營的三大機遇 內容生產效率提升&#xff1a;傳統模式下需2-3天打磨的深度文章&#xff0c;AI輸入關鍵詞后半小時即可完成初稿&#xf…

[5-03-01].第14節:集群搭建 - 在Linux系統中搭建

SpringCloud學習大綱 三、集群環境搭建&#xff1a; 3.1.集群規劃 1.nacos規劃&#xff1a; hadoop103hadoop104hadoop105192.168.148.3192.168.148.4192.168.148.5nacosnacosnacos 2.MYSQL規劃 &#xff1a;192.168.148.3 3306 5.7.27

ESP32-CH3+MicroPython+INMP441 測試麥克風通過音量閾值控制小燈

測試功能描述&#xff1a; 程序會先測量 2 秒環境音量作為基準&#xff0c;然后開始實時顯示音量柱狀圖&#xff0c;并在 30 秒后自動結束&#xff0c;當檢測到音量超過閾值時會顯示提示并打開led燈 一&#xff0c;硬件準備&#xff1a; 1.ESP32 CH3 USB開發板1塊 2.INMP44…

io.net 攜手 Walrus,為 AI 和機器學習應用提供去中心化存儲與計算能力

作為最大規模的按需云計算提供商之一&#xff0c;io.net 部署并管理來自地理分布式節點的去中心化 GPU 集群&#xff0c;現正與基于 Sui 構建的去中心化數據存儲協議 Walrus 深度整合。此次合作為去中心化 AI 和機器學習&#xff08;machine learning&#xff0c;ML&#xff09…

【上市公司文本分析】根據句號和分號進行文本分割,提取含有特定關鍵詞的語句并導出為EXCEL

本文介紹了一種基于Python的中文文本分析方法&#xff0c;用于從年報文件中提取含有關鍵詞的語句。方法使用jieba分詞庫進行中文分詞&#xff0c;通過自定義詞典提高分詞準確性。程序首先讀取并預處理文本&#xff08;統一標點符號、去除換行符&#xff09;&#xff0c;然后按句…

小白暢通Linux之旅-----DHCP服務項目實戰

目錄 一、項目拓撲 二、項目要求 三、項目準備 DHCP服務器 1、下載dhcp服務 2、準備 1.txt 文件 &#xff08;為內部客戶機設置為固定獲得ip&#xff09; 3、準備2.txt文件 &#xff08;為內部網絡分配ip&#xff09; 4、準備 3.txt 文件&#xff08;為外部網絡配置ip&…

eps轉pdf-2025年6月18日星期三

1.打開cmd。 使用 cd 命令切換到包含 EPS 文件的目錄。例如&#xff0c;如果 EPS 文件在 E:\eps_files 目錄下&#xff0c;輸入以下命令&#xff1a; cd E:\eps_files 2. 轉換單個 EPS 文件&#xff1a; 輸入以下命令將單個 EPS 文件轉換為 PDF 文件 epstopdf input.eps …

處理器特性有哪些?

處理器特性有哪些&#xff1f; 處理器的特性可以從多個維度進行劃分&#xff0c;包括架構設計、性能指標、功能支持等。以下是處理器的主要特性分類及詳細說明&#xff1a; 1. 架構特性 指令集架構&#xff08;ISA&#xff09; CISC&#xff08;復雜指令集&#xff0c;如x86&…

Vue3+TypeScript 導入枚舉(Enum)最佳實踐

在 Vue 3 TypeScript 項目中&#xff0c;導入枚舉時通常不需要使用 import type&#xff0c;但具體取決于使用場景。以下是詳細說明&#xff1a; 1. 枚舉的特殊性 枚舉在 TypeScript 中既是類型&#xff08;Type&#xff09;也是值&#xff08;Value&#xff09;&#xff1a…

主成分分析(PCA)例題——給定協方差矩陣

向量 x x x的相關矩陣為 R x [ 0.3 0.1 0.1 0.1 0.3 ? 0.1 0.1 ? 0.1 0.3 ] {\bm R}_x \begin{bmatrix} 0.3 & 0.1 & 0.1 \\ 0.1 & 0.3 & -0.1 \\ 0.1 & -0.1 & 0.3 \end{bmatrix} Rx? ?0.30.10.1?0.10.3?0.1?0.1?0.10.3? ? 計算輸入向量…

RTSP播放器低延遲實踐:一次對毫秒級響應的技術探索

? 為什么說“大牛直播SDK的RTSP播放器延遲表現行業領先”&#xff1a; 1. 毫秒級延遲&#xff08;100ms~250ms&#xff09; windows平臺rtsp播放器延遲測試 在業內常見的 RTSP 播放器中&#xff0c;傳統開源方案&#xff08;如 VLC、FFmpeg 播放器封裝&#xff09;延遲普遍在…

【postgresql中timestamp為6是什么意思?】

postgresql中timestamp為6是什么意思&#xff1f; postgresql中timestamp為6是什么意思&#xff1f;示例注意事項 postgresql中timestamp為6是什么意思&#xff1f; 在 PostgreSQL 中&#xff0c;TIMESTAMP 類型用于存儲日期和時間信息。當你提到 TIMESTAMP(6)&#xff0c;這里…