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/pingmian/85585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85585.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85585.shtml

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

相關文章

高級IO技術詳解:阻塞/非阻塞IO、多路復用與內存映射

高級IO技術詳解&#xff1a;阻塞/非阻塞IO、多路復用與內存映射 關鍵詞&#xff1a;阻塞IO 非阻塞IO select/poll/epoll mmap 一、阻塞IO vs 非阻塞IO 類型行為特點設置方式阻塞IO- 讀空管道阻塞- 寫滿管道阻塞默認模式非阻塞IO- 讀空文件返回 -1&#xff0c;errnoEAGAIN- 寫滿…

【無標題】拓撲對偶框架的嚴格性補完與哲學突破

拓撲對偶框架的嚴格性補完與哲學突破&#xff1a; 一、數學嚴格性補完&#xff1a;同調類守恒的解決方案 1.1 負系數問題的幾何化修正 **問題本質**&#xff1a;當 $a_i$ 含負數時&#xff0c;曲率分配 $\kappa\frac{2\pi a_i}{A_{\text{max}}}$ 導致偽黎曼流形 **解決方案…

從0開始學習R語言--Day25--A/B測試 vs 多臂老虎機

通常在比較兩個不同的方案對數據的影響時&#xff0c;我們會各拿50%的數據去進行對照試驗&#xff0c;這樣觀測到的結果會最大程度地保留統計學上的特點。但實際上&#xff0c;并不是所有對比不同方案都要這樣做&#xff0c;一來&#xff0c;我們需要等到兩組實驗都完全結束后&…

功耗高?加密弱?愛普特APT32F1023H8S6單片機 2μA待機+AES硬件加密破局

愛普特APT32F1023H8S6單片機深度解析 1. 產品定位 APT32F1023H8S6 是愛普特半導體&#xff08;APT&#xff09;推出的 32位高性能單片機&#xff0c;基于 ARM Cortex-M0內核&#xff0c;主打 高集成度、低功耗、高性價比&#xff0c;面向消費電子、工業控制和物聯網領域。 2. …

【MFC】繪制自定義控件-顯示圖片(支持放大操作)

目錄 一、CDC類&#xff08;二級緩存&#xff09;二、計算視口三、放大操作代碼中初始化操作&#xff08;方便以后cv&#xff09; 一、CDC類&#xff08;二級緩存&#xff09; CDC類是設備上下文的核心類&#xff0c;它的作用是抽象化對圖形輸出設備&#xff08;像屏幕、打印機…

在Proteus新工程中放置基本元器件

視頻教程&#xff1a; [最詳細]Proteus新建第一個工程與快捷鍵設置 操作步驟 1選擇這個黃色的三角&#xff0c;然后點擊旁邊的P,開始找元件。 2點開P后&#xff0c;呈現如下圖界面&#xff0c;我們在Keyword欄中&#xff0c;輸入stm32&#xff0c;然后他會自動出現對應的元件&…

PRUD幣推動健康數據資產化,開啟Web3隱私金融新時代

在全球健康科技與數據主權浪潮下&#xff0c;PRUD幣&#xff08;Prudential Utility & Data Token&#xff09;正成為Web3健康金融領域中的重要通證。項目通過鏈上身份綁定、健康行為證明、隱私計算與NFT機制&#xff0c;為用戶打造了“健康數據資產化”的創新路徑&#xf…

Mac 安裝 finalshell

1.下載 地址&#xff1a;FinalShell官網 第一個進入選擇對應的 mac 版本下載。 下一步下一步完成安裝。 2.鏈接虛擬機&#xff0c;點擊圖示文件夾 點擊新建鏈接&#xff0c;新建 SSH 鏈接 3.去 vmware 中查詢 Linux 系統的 IP,使用 ip addr 命令或者 ifconfig 命令皆可。 ip…

Javaweb - 2 HTML

目錄 HTML 入門 1. HTML & CSS & JavaScript 的作用 2. 什么是 HTML 3. 什么是超文本 4. 什么是標記語言 5. HTML 基本結構 6. HTML 概念詞匯解釋 7. HTML 的一些語法規則 8. 開發工具 VsCode 安裝插件&#xff1a; 常見設置&#xff1a; HTML 常見標簽 …

CWGAN-GP 增強型 CAE 在非 IID 數據集中用于 5G-NR 干擾檢測

抽象 在不斷擴大的 5G-NR 無線蜂窩網絡領域中&#xff0c;無線干擾攻擊作為安全攻擊普遍存在&#xff0c;損害了接收信號的質量。我們通過將加性高斯白噪聲 &#xff08;AWGN&#xff09; 合并到真實世界的同相和正交 &#xff08;I/Q&#xff09; OFDM 數據集中來模擬干擾環境…

JavaEE-Spring-Web-Mvc

Spring Web MVC 是基于 Servlet API 構建的原始 Web 框架&#xff0c;從?開始就包含在 Spring 框架中。它的正式名稱“Spring Web MVC”來?其源模塊的名稱(Spring-webmvc)&#xff0c;但它通常被稱為"Spring MVC". Servlet 是?種實現動態??的技術. 準確來講Serv…

Linux從入門到入門

系統教程學習類 Ubuntu 從入門到精通 系統頁面/基本操作類 Ubuntu20.04終端固定終端到左邊的導航欄_ubuntu20.04設置菜單固定-CSDN博客Ubuntu 20.04 系統5分鐘后老是自動鎖屏_修改鎖屏時間-CSDN博客 命令類 拷貝&#xff1a;將 下載 文件夾里的.sh文件 復制到opt目錄下 sudo cp…

AI自動生成Git提交信息-git AI Commit

在現代軟件開發中&#xff0c;編寫清晰且一致的Git提交信息對于維護項目歷史和促進團隊協作至關重要。然而&#xff0c;為每次變更手動撰寫描述性提交信息可能耗時&#xff0c;尤其是處理復雜差異或大型項目時。AI Commit 是一個利用AI分析Git差異并生成符合Conventional Commi…

【三大前端語言之一】樣式:CSS詳解

【三大前端語言之一】樣式&#xff1a;CSS詳解 在了解完HTML的有關知識后&#xff0c;我們應該知道&#xff0c;一個網頁光有框架還不行&#xff0c;必須還得有裝飾它的樣式。就好比房子的結構搭好了&#xff0c;但如果沒有油漆、沒有窗簾、沒有家具&#xff0c;就無法真正展現…

Spring AI 聊天記憶功能實戰(一):從接口設計到生產實踐

Spring AI 聊天記憶功能實戰&#xff08;一&#xff09;&#xff1a;從接口設計到生產實踐 在構建AI對話應用時&#xff0c;聊天記憶管理及存儲是實現連貫上下文交互的關鍵組件。而大模型&#xff08;LLM&#xff09;本質上是無狀態的&#xff0c;這意味著它們不會保留歷史交互…

Element Plus 對話框 el-dialog 和 抽屜 el-drawer 的使用注意項(使用 div 包裹)

總結&#xff1a;使用 div 包裹&#xff01;&#xff01;&#xff01; 詳細說明&#xff1a; 對話框 el-dialog 或 抽屜 el-drawer 樣式的設置說明&#xff1a; 要想有效設置 el-dialog 或 el-drawer 的樣式&#xff0c;需確保 el-dialog 或 el-drawer 的上層不是template&am…

【python】簡單演示 gateway、service、client的工作原理

gateway 看起來主要是做協議轉換的A gateway is a network node that acts as an entrance and exit point, connecting two networks that use different protocols. It allows data to flow between these networks, essentially acting as a translator between different c…

數據倉庫面試題合集⑥

實時指標體系設計 + Flink 優化實戰:面試高頻問題 + 項目答題模板 面試中不僅會問“你做過實時處理嗎?”,更會追問:“實時指標體系是怎么搭建的?”、“你們的 Flink 穩定性怎么保證?” 本篇聚焦實時指標體系設計與 Flink 優化場景,幫你答出架構設計力,也答出調優實戰感…

Vue + AbortController 請求取消彈窗 hook 封裝

背景 實際業務開發場景中&#xff0c;往往存在有些大數據請求的需求&#xff0c;一旦請求發起加載遮罩后用戶就無法操作了&#xff0c;直接尬住&#xff0c;所以提供一個支持取消查詢的功能還是很有必要的&#xff0c;為了在全業務接口都能使用封裝一個hook。 ?為什么要用 A…

數據結構相關

1 問題 如何辨析數據對象和數據結構&#xff1f;如何設計多種儲存結構以及他們特性有什么&#xff1f;內存條和硬盤的區別&#xff1f; 2 方法 明晰倆者的定義數據對象是性質相同的有限個數據元素的集合&#xff0c;他是數據的一個子集。數據結構是指所涉及的數據元素的集合以及…