国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

這篇具有很好參考價(jià)值的文章主要介紹了MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


目錄層級(jí)

MySQL數(shù)據(jù)庫(kù),從入門到精通:第一篇——MySQL概念詳解
MySQL數(shù)據(jù)庫(kù),從入門到精通:第二篇——MySQL關(guān)系型數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)的比較
MySQL數(shù)據(jù)庫(kù),從入門到精通:第三篇——MySQL 數(shù)據(jù)庫(kù)規(guī)范和基礎(chǔ)查詢語句
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第五篇——MySQL排序和分頁
MySQL數(shù)據(jù)庫(kù),從入門到精通:第六篇——全面掌握MySQL多表查詢技巧
MySQL數(shù)據(jù)庫(kù),從入門到精通:第七篇——MySQL單行函數(shù)應(yīng)用
MySQL數(shù)據(jù)庫(kù),從入門到精通:第八篇——MySQL聚合函數(shù)實(shí)戰(zhàn)探究:優(yōu)化SELECT過程助力高效查詢
MySQL數(shù)據(jù)庫(kù),從入門到精通:第九篇——MySQL子查詢
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十篇——MySQL表創(chuàng)建和管理指南
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十一篇——MySQL數(shù)據(jù)處理之增刪改指南
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十二篇——MySQL數(shù)據(jù)類型詳解
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十三篇——MySQL數(shù)據(jù)表約束詳解
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十四篇——MySQL視圖詳解
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十五篇——MySQL存儲(chǔ)過程和函數(shù)詳解
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十六篇——MySQL變量、流程控制和游標(biāo)詳解
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十七篇——MySQL 觸發(fā)器的使用方法及注意事項(xiàng)
MySQL數(shù)據(jù)庫(kù),從入門到精通:第十八篇——MySQL 8新特性全解析

THIS IS END!


前言

MySQL是一種流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在各行各業(yè)廣泛應(yīng)用。在MySQL中,運(yùn)算符是用于對(duì)數(shù)據(jù)進(jìn)行各種操作和計(jì)算的基礎(chǔ)工具。本文將對(duì)MySQL中常用的各類運(yùn)算符進(jìn)行詳細(xì)介紹,幫助讀者更好地理解和應(yīng)用運(yùn)算符,提高數(shù)據(jù)庫(kù)的使用效率和精度。

摘要

本文主要分為三個(gè)方面,第一部分介紹MySQL中的算術(shù)運(yùn)算符,包括加、減、乘、除、求模等運(yùn)算符的用法和注意事項(xiàng)。

第二部分介紹MySQL中常用的比較運(yùn)算符,如等于、不等于、大于、小于等,以及空運(yùn)算符、非空運(yùn)算符、最小值運(yùn)算符、最大值運(yùn)算符、BETWEEN AND運(yùn)算符、IN運(yùn)算符、NOT IN運(yùn)算符、LIKE運(yùn)算符、REGEXP運(yùn)算符等的用法和示例。

第三部分介紹MySQL中常用的邏輯運(yùn)算符和位運(yùn)算符的用法,包括邏輯或運(yùn)算符、按位取反運(yùn)算符、按位右移運(yùn)算符、按位左移運(yùn)算符等。

同時(shí),本文還介紹了使用正則表達(dá)式查詢的方法,并提供了一些常見的正則表達(dá)式查詢示例,如查詢以特定字符或字符串開頭的記錄、查詢以特定字符或字符串結(jié)尾的記錄、用符號(hào)".“來替代字符串中的任意一個(gè)字符、使用”*“和”+"來匹配多個(gè)字符、匹配指定字符串、匹配指定字符中的任意一個(gè)、匹配指定字符以外的字符、使用{n,}或者{n,m}來指定字符串連續(xù)出現(xiàn)的次數(shù)等


第四篇_MySQL中常用的運(yùn)算符及其用法運(yùn)算符

1. 算術(shù)運(yùn)算符

算術(shù)運(yùn)算符主要用于數(shù)學(xué)運(yùn)算,其可以連接運(yùn)算符前后的兩個(gè)數(shù)值或表達(dá)式,對(duì)數(shù)值或表達(dá)式進(jìn)行加(+)、減(-)、乘(*)、除(/)和取模(%)運(yùn)算。
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

1.加法與減法運(yùn)算符

mysql> SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5
FROM dual;
+-----+---------+---------+----------+--------------+------------+------------+
| 100 | 100 + 0 | 100 - 0 | 100 + 50 | 100 + 50 -30 | 100 + 35.5 | 100 - 35.5 |
+-----+---------+---------+----------+--------------+------------+------------+
| 100 | 100 | 100 | 150 | 120 | 135.5 | 64.5 |
+-----+---------+---------+----------+--------------+------------+------------+
1 row in set (0.00 sec)

由運(yùn)算結(jié)果可以得出如下結(jié)論:

  1. 一個(gè)整數(shù)類型的值對(duì)整數(shù)進(jìn)行加法和減法操作,結(jié)果還是一個(gè)整數(shù);
  2. 一個(gè)整數(shù)類型的值對(duì)浮點(diǎn)數(shù)進(jìn)行加法和減法操作,結(jié)果是一個(gè)浮點(diǎn)數(shù);
  3. 加法和減法的優(yōu)先級(jí)相同,進(jìn)行先加后減操作與進(jìn)行先減后加操作的結(jié)果是一樣的;
  4. 在Java中,+的左右兩邊如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示數(shù)值相加。如果遇到非數(shù)值類型,先嘗試轉(zhuǎn)成數(shù)值,如果轉(zhuǎn)失敗,就按0計(jì)算。(補(bǔ)充:MySQL中字符串拼接要使用字符串函數(shù)CONCAT()實(shí)現(xiàn))
#運(yùn)算符  dual 創(chuàng)建一個(gè)虛擬的表

SELECT 100,100+0,100+20,100+20*30,100+22.2 FROM DUAL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#表示加法運(yùn)算 并不像java得到字符串拼接 注意下  
SELECT 100+'1' FROM DUAL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#默認(rèn)把字符當(dāng)做0 來進(jìn)行處理的
SELECT 100+'a' from DUAL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#null 參與運(yùn)算結(jié)果都為null
SELECT 100+NULL FROM DUAL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

2.乘法與除法運(yùn)算符

+-----+---------+-----------+-----------+---------+-----------------+---------+-------
----+
| 100 | 100 * 1 | 100 * 1.0 | 100 / 1.0 | 100 / 2 | 100 + 2 * 5 / 2 | 100 /3 | 100
DIV 0 |
+-----+---------+-----------+-----------+---------+-----------------+---------+-------
----+
| 100 | 100 | 100.0 | 100.0000 | 50.0000 | 105.0000 | 33.3333 |
NULL |
+-----+---------+-----------+-----------+---------+-----------------+---------+-------
----+
1 row in set (0.00 sec)
#div=/ 分母為0  值為0
SELECT  100 , 100 * 1 , 100 * 1.0 ,100 / 1.0 , 100 / 2 , 100 + 2 * 5 / 2 , 100 /3 ,
100 DIV 0 FROM DUAL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#計(jì)算出員工的年基本工資
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees;

由運(yùn)算結(jié)果可以得出如下結(jié)論:

一個(gè)數(shù)乘以整數(shù)1和除以整數(shù)1后仍得原數(shù);
一個(gè)數(shù)乘以浮點(diǎn)數(shù)1和除以浮點(diǎn)數(shù)1后變成浮點(diǎn)數(shù),數(shù)值與原數(shù)相等;
一個(gè)數(shù)除以整數(shù)后,不管是否能除盡,結(jié)果都為一個(gè)浮點(diǎn)數(shù);
一個(gè)數(shù)除以另一個(gè)數(shù),除不盡時(shí),結(jié)果為一個(gè)浮點(diǎn)數(shù),并保留到小數(shù)點(diǎn)后4位;
乘法和除法的優(yōu)先級(jí)相同,進(jìn)行先乘后除操作與先除后乘操作,得出的結(jié)果相同。
在數(shù)學(xué)運(yùn)算中,0不能用作除數(shù),在MySQL中,一個(gè)數(shù)除以0NULL

3.求模(求余)運(yùn)算符

將t22表中的字段i對(duì)3和5進(jìn)行求模(求余)運(yùn)算。

mysql> SELECT 12 % 3, 12 MOD 5 FROM dual;
+--------+----------+
| 12 % 3 | 12 MOD 5 |
+--------+----------+
| 0 | 2 |
+--------+----------+
1 row in set (0.00 sec)
#取模 運(yùn)算: %  mod  除數(shù)前面的數(shù)為負(fù)數(shù)那么他得到值就是負(fù)數(shù)
SELECT 12 % 3,12 % 5, 12 MOD -5,-12 % 5,-12%-5 FROM DUAL; 

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#查詢employees 表中employee_id 為偶數(shù)的值
 SELECT employee_id,last_name,salary FROM employees
 WHERE employee_id % 2 = 0;


MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#篩選出employee_id是偶數(shù)的員工
SELECT * FROM employees
WHERE employee_id MOD 2 = 0;

可以看到,100對(duì)3求模后的結(jié)果為3,對(duì)5求模后的結(jié)果為0。

2. 比較運(yùn)算符

比較運(yùn)算符用來對(duì)表達(dá)式左邊的操作數(shù)和右邊的操作數(shù)進(jìn)行比較,比較的結(jié)果為真則返回1,比較的結(jié)果為假則返回0,其他情況則返回NULL。

比較運(yùn)算符經(jīng)常被用來作為SELECT查詢語句的條件來使用,返回符合條件的結(jié)果記錄。
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#比較運(yùn)算符  0為false 1為ftrue 字符串存在隱式轉(zhuǎn)換如果轉(zhuǎn)換不成功則為0

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

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

1.等號(hào)運(yùn)算符

  • 等號(hào)運(yùn)算符(=)判斷等號(hào)兩邊的值、字符串或表達(dá)式是否相等,如果相等則返回1,不相等則返回0。

  • 在使用等號(hào)運(yùn)算符時(shí),遵循如下規(guī)則:

    1.如果等號(hào)兩邊的值、字符串或表達(dá)式都為字符串,則MySQL會(huì)按照字符串進(jìn)行比較,其比較的是每個(gè)字符串中字符的ANSI編碼是否相等。
    2.如果等號(hào)兩邊的值都是整數(shù),則MySQL會(huì)按照整數(shù)來比較兩個(gè)值的大小。
    3.如果等號(hào)兩邊的值一個(gè)是整數(shù),另一個(gè)是字符串,則MySQL會(huì)將字符串轉(zhuǎn)化為數(shù)字進(jìn)行比較。
    4.如果等號(hào)兩邊的值、字符串或表達(dá)式中有一個(gè)為NULL,則比較結(jié)果為NULL。

  • 對(duì)比:SQL中賦值符號(hào)使用 :=時(shí),其返回值為0,而不為NULL。

mysql> SELECT 1 = 1, 1 = '1', 1 = 0, 'a' = 'a', (5 + 3) = (2 + 6), '' = NULL , NULL =
NULL;
+-------+---------+-------+-----------+-------------------+-----------+-------------+
| 1 = 1 | 1 = '1' | 1 = 0 | 'a' = 'a' | (5 + 3) = (2 + 6) | '' = NULL | NULL = NULL |
+-------+---------+-------+-----------+-------------------+-----------+-------------+
| 1 | 1 | 0 | 1 | 1 | NULL | NULL |
+-------+---------+-------+-----------+-------------------+-----------+-------------+
1 row in set (0.00 sec)
mysql> SELECT 1 = 2, 0 = 'abc', 1 = 'abc' FROM dual;
+-------+-----------+-----------+
| 1 = 2 | 0 = 'abc' | 1 = 'abc' |
+-------+-----------+-----------+
| 0 | 1 | 0 |
+-------+-----------+-----------+
1 row in set, 2 warnings (0.00 sec)
#查詢salary=10000,注意在Java中比較是==
SELECT employee_id,salary FROM employees WHERE salary = 10000;
#比較運(yùn)算符  0為false 1為ftrue 字符串存在隱式轉(zhuǎn)換如果轉(zhuǎn)換不成功則為0

#只要null參與比較判斷那么他結(jié)果就會(huì)為空
SELECT 1=NULL, NULL=NULL
FROM DUAL;


SELECT last_name,salary 
FROM employees 
WHERE salary = 6000;



SELECT last_name,salary 
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE commission_pct=NULL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

2.安全等號(hào)運(yùn)算符

mysql> SELECT 1 <=> '1', 1 <=> 0, 'a' <=> 'a', (5 + 3) <=> (2 + 6), '' <=> NULL,NULL
<=> NULL FROM dual;
+-----------+---------+-------------+---------------------+-------------+-------------
--+
| 1 <=> '1' | 1 <=> 0 | 'a' <=> 'a' | (5 + 3) <=> (2 + 6) | '' <=> NULL | NULL <=>
NULL |
+-----------+---------+-------------+---------------------+-------------+-------------
--+
| 1 | 0 | 1 | 1 | 0 |
1 |
+-----------+---------+-------------+---------------------+-------------+-------------
--+
1 row in set (0.00 sec)
#查詢commission_pct等于0.40
SELECT employee_id,commission_pct FROM employees WHERE commission_pct = 0.40;
SELECT employee_id,commission_pct FROM employees WHERE commission_pct <=> 0.40;
#如果把0.40改成 NULL 呢?

可以看到,使用安全等于運(yùn)算符時(shí),兩邊的操作數(shù)的值都為NULL時(shí),返回的結(jié)果為1而不是NULL,其他返回結(jié)果與等于運(yùn)算符相同。

#<=> :安全等于 區(qū)別在于 對(duì)于NULl的判斷也會(huì)進(jìn)行判斷了  
#   為了null而生


SELECT 1<=>1, 1 <=>2,2<=>'a',0<=>'a' FROM DUAL;

#空可以正常得到比較了 加了<=>

SELECT 1<=> NULL, NULL<=> NULL
FROM DUAL;

#可查詢表中commission_pct 為空的數(shù)據(jù)
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE commission_pct<=>NULL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

3.不等于運(yùn)算符

不等于運(yùn)算符(<>和!=)用于判斷兩邊的數(shù)字、字符串或者表達(dá)式的值是否不相等,如果不相等則返回1,相等則返回0。不等于運(yùn)算符不能判斷NULL值。如果兩邊的值有任意一個(gè)為NULL,或兩邊都為NULL,則結(jié)果為NULL。 SQL語句示例如下:

可以看到,使用安全等于運(yùn)算符時(shí),兩邊的操作數(shù)的值都為NULL時(shí),返回的結(jié)果為1而不是NULL,其他
返回結(jié)果與等于運(yùn)算符相同。
3.不等于運(yùn)算符 不等于運(yùn)算符(<>!=)用于判斷兩邊的數(shù)字、字符串或者表達(dá)式的值是否不相等,
如果不相等則返回1,相等則返回0。不等于運(yùn)算符不能判斷NULL值。如果兩邊的值有任意一個(gè)為NULL,
或兩邊都為NULL,則結(jié)果為NULL。 SQL語句示例如下:

# <>  != 不等于
SELECT 3<>2 ,3!=2,2<>2 ,2!=2 FROM DUAL;

#空和任何數(shù)據(jù)做對(duì)比都為空
SELECT  '4'<>NULL,''!=NULL,NULL!=NULL FROM DUAL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

此外,還有非符號(hào)類型的運(yùn)算符:
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#查詢commission_pct 為空
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE commission_pct  IS NULL;

#或者 作為關(guān)鍵字
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE ISNULL(commission_pct);

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#查詢commission_pct  不 為空
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE commission_pct  IS NOT NULL;

#或者 作為關(guān)鍵字
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE NOT commission_pct <=>NULL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#LEAST(value1,value2,...) 最小值    GREATEST(value1,value2,...) 最大值
SELECT LEAST('a','c','d','z','v'),
GREATEST('a','c','d','z','v') FROM DUAL;


SELECT LEAST(first_name,last_name) , LEAST(LENGTH(first_name),LENGTH(last_name))
FROM employees;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#BETWEENt 條件1 AND 條件2  (查詢條件1到條件二范圍的值 ,包含邊界值 例如 條件2是小于 5000 那就包括 5000)
#條件1必須為起始條件 條件2位終止條件 注意 不然查不到數(shù)據(jù)
#查詢表employees 中salary的值為6000-8000的包含6000和8000

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

#或者下面

SELECT employee_id,last_name,salary
FROM employees
WHERE salary>=6000 && salary<=8000;


#錯(cuò)誤案例無法查詢到數(shù)據(jù)
SELECT employee_id,last_name,salary
FROM employees
WHERE salary>=8000 && salary<=6000;


#查詢不在6000和8000之間的數(shù)據(jù)

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

#or 或的意思     AND 和&& 為且的意思
SELECT employee_id,last_name,salary
FROM employees
WHERE salary<6000  or salary>8000;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法


#in (集合)   not in (集合)
#in 多條件值查詢 查詢 值為 10  20 30 
SELECT department_id,last_name,salary
FROM employees
WHERE department_id =10 OR department_id=20 OR department_id=30 ;

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

#查詢不為 10  20 30 的 not in 
SELECT department_id,last_name,salary
FROM employees
WHERE department_id NOT in(10,20,30);

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法


#like 模糊查詢 查詢 相似值
#%% 代表不確定個(gè)數(shù)的字符  代表前后有若干個(gè)值可能是0 ,1,或者其他
#查詢name中包含 a的值
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a%';



#查詢name中 a 開頭的值
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE 'a%';

#查詢name中 a 結(jié)尾的值
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a';

#查詢包含a e的值
#寫法1 
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%';

#寫法2 
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a%e%' or last_name LIKE '%e%a%';

#查詢第二個(gè)字符是a的值
#_ 代表不確定的字符
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '_a%'

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

#REGEXP  RLIKE   正則表達(dá)式

#查詢 是不是以為y開頭,是不是以為O結(jié)尾,是不是包含 wen
SELECT 'yanwenchao' REGEXP '^y','yanwenchao' REGEXP 'o$',
'yanwenchao' REGEXP 'wen' FROM DUAL;

#... 3個(gè)點(diǎn)代表中間是3個(gè)任意值 前后對(duì)應(yīng)即可  
#【af】  其中有任意一個(gè)字母就算通過 或者都有 
SELECT 'yanwenchao' REGEXP 'yan...ch','yanwenchao' REGEXP '[af]'
FROM DUAL;

1是true 2是false
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

4. 空運(yùn)算符

空運(yùn)算符(IS NULL或者ISNULL)判斷一個(gè)值是否為NULL,如果為NULL則返回1,否則返回0。 SQL語句示例如下:

mysql> SELECT NULL IS NULL, ISNULL(NULL), ISNULL('a'), 1 IS NULL;
+--------------+--------------+-------------+-----------+
| NULL IS NULL | ISNULL(NULL) | ISNULL('a') | 1 IS NULL |
+--------------+--------------+-------------+-----------+
| 1 | 1 | 0 | 0 |
+--------------+--------------+-------------+-----------+
1 row in set (0.00 sec)
#查詢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;
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL;
#查詢commission_pct 為空
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE commission_pct  IS NULL;

#或者 作為關(guān)鍵字
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE ISNULL(commission_pct);

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

5. 非空運(yùn)算符

非空運(yùn)算符(IS NOT NULL)判斷一個(gè)值是否不為NULL,如果不為NULL則返回1,否則返回0。 SQL語句示例如下:

mysql> SELECT NULL IS NOT NULL, 'a' IS NOT NULL, 1 IS NOT NULL;
+------------------+-----------------+---------------+
| NULL IS NOT NULL | 'a' IS NOT NULL | 1 IS NOT NULL |
+------------------+-----------------+---------------+
| 0 | 1 | 1 |
+------------------+-----------------+---------------+
1 row in set (0.01 sec)
SELECT employee_id,commission_pct FROM employees WHERE NOT commission_pct <=> NULL;
SELECT employee_id,commission_pct FROM employees WHERE NOT ISNULL(commission_pct);
#查詢commission_pct  不 為空
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE commission_pct  IS NOT NULL;

#或者 作為關(guān)鍵字
SELECT last_name,salary ,commission_pct
FROM employees 
#WHERE salary = NULL; #只要null參與判斷不會(huì)有任何結(jié)果
WHERE NOT commission_pct <=>NULL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

6. 最小值運(yùn)算符

語法格式為:LEAST(值1,值2,…,值n)。其中,“值n”表示參數(shù)列表中有n個(gè)值。在有兩個(gè)或多個(gè)參數(shù)的情況下,返回最小值。

mysql> SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2);
+---------------+--------------------+-----------------+
| LEAST (1,0,2) | LEAST('b','a','c') | LEAST(1,NULL,2) |
+---------------+--------------------+-----------------+
| 0 | a | NULL |
+---------------+--------------------+-----------------+
1 row in set (0.00 sec)
#LEAST(value1,value2,...) 最小值    GREATEST(value1,value2,...) 最大值
SELECT LEAST('a','c','d','z','v'),
GREATEST('a','c','d','z','v') FROM DUAL;


SELECT LEAST(first_name,last_name) , LEAST(LENGTH(first_name),LENGTH(last_name))
FROM employees;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

由結(jié)果可以看到,當(dāng)參數(shù)是整數(shù)或者浮點(diǎn)數(shù)時(shí),LEAST將返回其中最小的值;當(dāng)參數(shù)為字符串時(shí),返回字母表中順序最靠前的字符;當(dāng)比較值列表中有NULL時(shí),不能判斷大小,返回值為NULL。

7. 最大值運(yùn)算符

語法格式為:GREATEST(值1,值2,…,值n)。其中,n表示參數(shù)列表中有n個(gè)值。當(dāng)有兩個(gè)或多個(gè)參數(shù)時(shí),返回值為最大值。假如任意一個(gè)自變量為NULL,則GREATEST()的返回值為NULL。

mysql> SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2);
+-----------------+-----------------------+--------------------+
| GREATEST(1,0,2) | GREATEST('b','a','c') | GREATEST(1,NULL,2) |
+-----------------+-----------------------+--------------------+
| 2 | c | NULL |
+-----------------+-----------------------+--------------------+
1 row in set (0.00 sec)

由結(jié)果可以看到,當(dāng)參數(shù)中是整數(shù)或者浮點(diǎn)數(shù)時(shí),GREATEST將返回其中最大的值;當(dāng)參數(shù)為字符串時(shí),返回字母表中順序最靠后的字符;當(dāng)比較值列表中有NULL時(shí),不能判斷大小,返回值為NULL。

#LEAST(value1,value2,...) 最小值    GREATEST(value1,value2,...) 最大值
SELECT LEAST('a','c','d','z','v'),
GREATEST('a','c','d','z','v') FROM DUAL;


SELECT LEAST(first_name,last_name) , LEAST(LENGTH(first_name),LENGTH(last_name))
FROM employees;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

8. BETWEEN AND運(yùn)算符

BETWEEN運(yùn)算符使用的格式通常為SELECT D FROM TABLE WHERE C BETWEEN AAND B,此時(shí),當(dāng)C大于或等于A,并且C小于或等于B時(shí),結(jié)果為1,否則結(jié)果為0。

mysql> SELECT 1 BETWEEN 0 AND 1, 10 BETWEEN 11 AND 12, 'b' BETWEEN 'a' AND 'c';
+-------------------+----------------------+-------------------------+
| 1 BETWEEN 0 AND 1 | 10 BETWEEN 11 AND 12 | 'b' BETWEEN 'a' AND 'c' |
+-------------------+----------------------+-------------------------+
| 1 | 0 | 1 |
+-------------------+----------------------+-------------------------+
1 row in set (0.00 sec)
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
#BETWEENt 條件1 AND 條件2  (查詢條件1到條件二范圍的值 ,包含邊界值 例如 條件2是小于 5000 那就包括 5000)
#條件1必須為起始條件 條件2位終止條件 注意 不然查不到數(shù)據(jù)
#查詢表employees 中salary的值為6000-8000的包含6000和8000

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

#或者下面

SELECT employee_id,last_name,salary
FROM employees
WHERE salary>=6000 && salary<=8000;


#錯(cuò)誤案例無法查詢到數(shù)據(jù)
SELECT employee_id,last_name,salary
FROM employees
WHERE salary>=8000 && salary<=6000;


#查詢不在6000和8000之間的數(shù)據(jù)

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

#or 或的意思     AND 和&& 為且的意思
SELECT employee_id,last_name,salary
FROM employees
WHERE salary<6000  or salary>8000;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

9. IN運(yùn)算符

IN運(yùn)算符用于判斷給定的值是否是IN列表中的一個(gè)值,如果是則返回1,否則返回0。如果給定的值為NULL,或者IN列表中存在NULL,則結(jié)果為NULL。

mysql> SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'a' IN ('a', NULL);
+----------------------+------------+-------------------+--------------------+
| 'a' IN ('a','b','c') | 1 IN (2,3) | NULL IN ('a','b') | 'a' IN ('a', NULL) |
+----------------------+------------+-------------------+--------------------+
| 1 | 0 | NULL | 1 |
+----------------------+------------+-------------------+--------------------+
WHERE manager_id IN (100, 101, 201);

#in (集合)   not in (集合)
#in 多條件值查詢 查詢 值為 10  20 30 
SELECT department_id,last_name,salary
FROM employees
WHERE department_id =10 OR department_id=20 OR department_id=30 ;

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

#查詢不為 10  20 30 的 not in 
SELECT department_id,last_name,salary
FROM employees
WHERE department_id NOT in(10,20,30);

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

10. NOT IN運(yùn)算符

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

mysql> SELECT 'a' NOT IN ('a','b','c'), 1 NOT IN (2,3);
+--------------------------+----------------+
| 'a' NOT IN ('a','b','c') | 1 NOT IN (2,3) |
+--------------------------+----------------+
| 0 | 1 |
+--------------------------+----------------+
1 row in set (0.00 sec)

#in (集合)   not in (集合)
#in 多條件值查詢 查詢 值為 10  20 30 
SELECT department_id,last_name,salary
FROM employees
WHERE department_id =10 OR department_id=20 OR department_id=30 ;

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

#查詢不為 10  20 30 的 not in 
SELECT department_id,last_name,salary
FROM employees
WHERE department_id NOT in(10,20,30);

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

11. LIKE運(yùn)算符

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

%”:匹配0個(gè)或多個(gè)字符。
“_”:只能匹配一個(gè)字符。

SQL語句示例如下:

mysql> SELECT NULL LIKE 'abc', 'abc' LIKE NULL;
+-----------------+-----------------+
| NULL LIKE 'abc' | 'abc' LIKE NULL |
+-----------------+-----------------+
| NULL | NULL |
+-----------------+-----------------+
1 row in set (0.00 sec)
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%';

ESCAPE

回避特殊符號(hào)的:使用轉(zhuǎn)義符。例如:將[%]轉(zhuǎn)為[ %]、[]轉(zhuǎn)為[ ],然后再加上[ESCAPE‘$’]即可。

SELECT job_id
FROM jobs
WHERE job_id LIKE ‘IT\_%;

如果使用\表示轉(zhuǎn)義,要省略ESCAPE。如果不是\,則要加上ESCAPE。

SELECT job_id
FROM jobs
WHERE job_id LIKE ‘IT$_%escape ‘$‘;

#like 模糊查詢 查詢 相似值
#%% 代表不確定個(gè)數(shù)的字符  代表前后有若干個(gè)值可能是0 ,1,或者其他
#查詢name中包含 a的值
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a%';



#查詢name中 a 開頭的值
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE 'a%';

#查詢name中 a 結(jié)尾的值
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a';

#查詢包含a e的值
#寫法1 
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%';

#寫法2 
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '%a%e%' or last_name LIKE '%e%a%';

#查詢第二個(gè)字符是a的值
#_ 代表不確定的字符
SELECT department_id,last_name,salary
FROM employees
WHERE last_name LIKE '_a%'

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

12. REGEXP運(yùn)算符

REGEXP運(yùn)算符用來匹配字符串,語法格式為: expr REGEXP 匹配條件 。如果expr滿足匹配條件,返回

(1)‘^’匹配以該字符后面的字符開頭的字符串。
(2)‘$’匹配以該字符前面的字符結(jié)尾的字符串。
(3)‘.’匹配任何一個(gè)單字符。
(4)“[…]”匹配在方括號(hào)內(nèi)的任何字符。例如,“[abc]”匹配“a”或“b”或 “c”。為了命名字符的范圍,使用一 個(gè)‘-’?!癧a-z]”匹配任何字母,而“[0-9]”匹配任何數(shù)字 。
(5)‘’匹配零個(gè)或多個(gè)在它前面的字符。例如,“x”匹配任何數(shù)量的‘x’字符,“[0-9]”匹配任何數(shù)量的數(shù)字, 而“”匹配任何數(shù)量的任何字符。

SQL語句示例如下:

mysql> SELECT 'shkstart' REGEXP '^s', 'shkstart' REGEXP 't$', 'shkstart' REGEXP 'hk';
+------------------------+------------------------+-------------------------+
| 'shkstart' REGEXP '^s' | 'shkstart' REGEXP 't$' | 'shkstart' REGEXP 'hk' |
+------------------------+------------------------+-------------------------+
| 1 | 1 | 1 |
+------------------------+------------------------+-------------------------+
1 row in set (0.01 sec)
mysql> SELECT 'atguigu' REGEXP 'gu.gu', 'atguigu' REGEXP '[ab]';
+--------------------------+-------------------------+
| 'atguigu' REGEXP 'gu.gu' | 'atguigu' REGEXP '[ab]' |
+--------------------------+-------------------------+
| 1 | 1 |
+--------------------------+-------------------------+
1 row in set (0.00 sec)
#REGEXP  RLIKE   正則表達(dá)式

#查詢 是不是以為y開頭,是不是以為O結(jié)尾,是不是包含 wen
SELECT 'yanwenchao' REGEXP '^y','yanwenchao' REGEXP 'o$',
'yanwenchao' REGEXP 'wen' FROM DUAL;

#... 3個(gè)點(diǎn)代表中間是3個(gè)任意值 前后對(duì)應(yīng)即可  
#【af】  其中有任意一個(gè)字母就算通過 或者都有 
SELECT 'yanwenchao' REGEXP 'yan...ch','yanwenchao' REGEXP '[af]'
FROM DUAL;

1是true 2是false
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

3. 邏輯運(yùn)算符

邏輯運(yùn)算符主要用來判斷表達(dá)式的真假,在MySQL中,邏輯運(yùn)算符的返回結(jié)果為1、0或者NULL。MySQL中支持4種邏輯運(yùn)算符如下:
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
1.邏輯非運(yùn)算符
邏輯非(NOT或!)運(yùn)算符表示當(dāng)給定的值為0時(shí)返回1;當(dāng)給定的值為非0值時(shí)返回0;當(dāng)給定的值為NULL時(shí),返回NULL。

mysql> SELECT NOT 1, NOT 0, NOT(1+1), NOT !1, NOT NULL;
+-------+-------+----------+--------+----------+
| NOT 1 | NOT 0 | NOT(1+1) | NOT !1 | NOT NULL |
+-------+-------+----------+--------+----------+
| 0 | 1 | 0 | 1 | NULL |
+-------+-------+----------+--------+----------+
1 row in set, 1 warning (0.00 sec)
WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');

2.邏輯與運(yùn)算符

邏輯與(AND或&&)運(yùn)算符是當(dāng)給定的所有值均為非0值,并且都不為NULL時(shí),返回1;當(dāng)給定的一個(gè)值或者多個(gè)值為0時(shí)則返回0;否則返回NULL。

mysql> SELECT 1 AND -1, 0 AND 1, 0 AND NULL, 1 AND NULL;
+----------+---------+------------+------------+
| 1 AND -1 | 0 AND 1 | 0 AND NULL | 1 AND NULL |
+----------+---------+------------+------------+
| 1 | 0 | 0 | NULL |
+----------+---------+------------+------------+
1 row in set (0.00 sec)
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%';

3.1邏輯或運(yùn)算符

邏輯或(OR或||)運(yùn)算符是當(dāng)給定的值都不為NULL,并且任何一個(gè)值為非0值時(shí),則返回1,否則返回0;當(dāng)一個(gè)值為NULL,并且另一個(gè)值為非0值時(shí),返回1,否則返回NULL;當(dāng)兩個(gè)值都為NULL時(shí),返回NULL。

mysql> SELECT 1 OR -1, 1 OR 0, 1 OR NULL, 0 || NULL, NULL || NULL;
+---------+--------+-----------+-----------+--------------+
| 1 OR -1 | 1 OR 0 | 1 OR NULL | 0 || NULL | NULL || NULL |
+---------+--------+-----------+-----------+--------------+
| 1 | 1 | 1 | NULL | NULL |
+---------+--------+-----------+-----------+--------------+
1 row in set, 2 warnings (0.00 sec)
#查詢基本薪資不在9000-12000之間的員工編號(hào)和基本薪資
SELECT employee_id,salary FROM employees
WHERE NOT (salary >= 9000 AND salary <= 12000);
SELECT employee_id,salary FROM employees
WHERE salary <9000 OR salary > 12000;
SELECT employee_id,salary FROM employees
WHERE salary NOT BETWEEN 9000 AND 12000;
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';
注意:
OR可以和AND一起使用,但是在使用時(shí)要注意兩者的優(yōu)先級(jí),由于AND的優(yōu)先級(jí)高于OR,因此先
對(duì)AND兩邊的操作數(shù)進(jìn)行操作,再與OR中的操作數(shù)結(jié)合。

4.邏輯異或運(yùn)算符
邏輯異或(XOR)運(yùn)算符是當(dāng)給定的值中任意一個(gè)值為NULL時(shí),則返回NULL;如果兩個(gè)非NULL的值都是0或者都不等于0時(shí),則返回0;如果一個(gè)值為0,另一個(gè)值不為0時(shí),則返回1。

| 1 XOR -1 | 1 XOR 0 | 0 XOR 0 | 1 XOR NULL | 1 XOR 1 XOR 1 | 0 XOR 0 XOR 0 |
+----------+---------+---------+------------+---------------+---------------+
| 0 | 1 | 0 | NULL | 1 | 0 |
+----------+---------+---------+------------+---------------+---------------+
1 row in set (0.00 sec)
select last_name,department_id,salary
from employees
where department_id in (10,20) XOR salary > 8000;

整理代碼:

#or:或者 滿足一個(gè)即可    and  并 且  兩者都要滿足

SELECT department_id,last_name,salary
FROM employees
WHERE department_id =10 OR salary>6000;



#not  非空
SELECT department_id,last_name,salary
FROM employees
#WHERE department_id =10 OR salary>6000;
#HERE commission_pct is NULL;#空的 
WHERE commission_pct is not NULL;#非空的
# WHERE Not commission_pct <=> NULL;#非空的

#XOR  異或 理解:2個(gè)條件滿足一個(gè)另一個(gè)肯定不滿足的 
#查詢出來的肯定是滿足其中一個(gè) 不滿足另一個(gè)的數(shù)據(jù)
SELECT department_id,last_name,salary
FROM employees
WHERE department_id =10 XOR salary>6000;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

4. 位運(yùn)算符

位運(yùn)算符是在二進(jìn)制數(shù)上進(jìn)行計(jì)算的運(yùn)算符。位運(yùn)算符會(huì)先將操作數(shù)變成二進(jìn)制數(shù),然后進(jìn)行位運(yùn)算,最后將計(jì)算結(jié)果從二進(jìn)制變回十進(jìn)制數(shù)。

MySQL支持的位運(yùn)算符如下:
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
1.按位與運(yùn)算符
按位與(&)運(yùn)算符將給定值對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯與運(yùn)算。當(dāng)給定值對(duì)應(yīng)的二進(jìn)制位的數(shù)值都為1時(shí),則該位返回1,否則返回0。

mysql> SELECT 1 & 10, 20 & 30;
+--------+---------+
| 1 & 10 | 20 & 30 |
+--------+---------+
| 0 | 20 |
+--------+---------+
1 row in set (0.00 sec)

1的二進(jìn)制數(shù)為0001,10的二進(jìn)制數(shù)為1010,所以1 & 10的結(jié)果為0000,對(duì)應(yīng)的十進(jìn)制數(shù)為0。20的二進(jìn)制數(shù)為10100,30的二進(jìn)制數(shù)為11110,所以20 & 30的結(jié)果為10100,對(duì)應(yīng)的十進(jìn)制數(shù)為20。

2. 按位或運(yùn)算符
按位或(|)運(yùn)算符將給定的值對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯或運(yùn)算。當(dāng)給定值對(duì)應(yīng)的二進(jìn)制位的數(shù)值有一個(gè)或兩個(gè)為1時(shí),則該位返回1,否則返回0。

mysql> SELECT 1 | 10, 20 | 30;
+--------+---------+
| 1 | 10 | 20 | 30 |
+--------+---------+
| 11 | 30 |
+--------+---------+
1 row in set (0.00 sec)

1的二進(jìn)制數(shù)為0001,10的二進(jìn)制數(shù)為1010,所以1 | 10的結(jié)果為1011,對(duì)應(yīng)的十進(jìn)制數(shù)為11。20的二進(jìn)制數(shù)為10100,30的二進(jìn)制數(shù)為11110,所以20 | 30的結(jié)果為11110,對(duì)應(yīng)的十進(jìn)制數(shù)為30。

mysql> SELECT 1 ^ 10, 20 ^ 30;
+--------+---------+
| 1 ^ 10 | 20 ^ 30 |
+--------+---------+
| 11 | 10 |
+--------+---------+
1 row in set (0.00 sec)

1的二進(jìn)制數(shù)為0001,10的二進(jìn)制數(shù)為1010,所以1 ^ 10的結(jié)果為1011,對(duì)應(yīng)的十進(jìn)制數(shù)為11。20的二進(jìn)
制數(shù)為10100,30的二進(jìn)制數(shù)為11110,所以20 ^ 30的結(jié)果為01010,對(duì)應(yīng)的十進(jìn)制數(shù)為10。

再舉例:

mysql> SELECT 12 & 5, 12 | 5,12 ^ 5 FROM DUAL;
+--------+--------+--------+
| 12 & 5 | 12 | 5 | 12 ^ 5 |
+--------+--------+--------+
| 4 | 13 | 9 |
+--------+--------+--------+
1 row in set (0.00 sec)

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

SELECT 12 & 5, 12 | 5,12 ^ 5 FROM DUAL;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

4. 按位取反運(yùn)算符

按位取反(~)運(yùn)算符將給定的值的二進(jìn)制數(shù)逐位進(jìn)行取反操作,即將1變?yōu)?,將0變?yōu)?。

mysql> SELECT 10 & ~1;
+---------+
| 10 & ~1 |
+---------+
| 10 |
+---------+
1 row in set (0.00 sec)

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

5. 按位右移運(yùn)算符

按位右移(>>)運(yùn)算符將給定的值的二進(jìn)制數(shù)的所有位右移指定的位數(shù)。右移指定的位數(shù)后,右邊低位的數(shù)值被移出并丟棄,左邊高位空出的位置用0補(bǔ)齊。

mysql> SELECT 1 >> 2, 4 >> 2;
+--------+--------+
| 1 >> 2 | 4 >> 2 |
+--------+--------+
| 0 | 1 |
+--------+--------+
1 row in set (0.00 sec)

1的二進(jìn)制數(shù)為0000 0001,右移2位為0000 0000,對(duì)應(yīng)的十進(jìn)制數(shù)為0。4的二進(jìn)制數(shù)為0000 0100,右移2位為0000 0001,對(duì)應(yīng)的十進(jìn)制數(shù)為1。

#在一定的范圍內(nèi)他是滿足的:每向左移動(dòng)一位,相當(dāng)于乘以2
#向右移動(dòng)一位相當(dāng)除2  在圖中就可看出
SELECT 1 >> 2, 4 >> 2;

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

6. 按位左移運(yùn)算符

按位左移(<<)運(yùn)算符將給定的值的二進(jìn)制數(shù)的所有位左移指定的位數(shù)。左移指定的位數(shù)后,左邊高位的數(shù)值被移出并丟棄,右邊低位空出的位置用0補(bǔ)齊。

mysql> SELECT 1 << 2, 4 << 2;
+--------+--------+
| 1 << 2 | 4 << 2 |
+--------+--------+
| 4 | 16 |
+--------+--------+
1 row in set (0.00 sec)

1的二進(jìn)制數(shù)為0000 0001,左移兩位為0000 0100,對(duì)應(yīng)的十進(jìn)制數(shù)為4。4的二進(jìn)制數(shù)為0000 0100,左移兩位為0001 0000,對(duì)應(yīng)的十進(jìn)制數(shù)為16。

5. 運(yùn)算符的優(yōu)先級(jí)

MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

數(shù)字編號(hào)越大,優(yōu)先級(jí)越高,優(yōu)先級(jí)高的運(yùn)算符先進(jìn)行計(jì)算??梢钥吹?,賦值運(yùn)算符的優(yōu)先級(jí)最低,使用“()”括起來的表達(dá)式的優(yōu)先級(jí)最高。

拓展:使用正則表達(dá)式查詢

正則表達(dá)式通常被用來檢索或替換那些符合某個(gè)模式的文本內(nèi)容,根據(jù)指定的匹配模式匹配文本中符合要求的特殊字符串。例如,從一個(gè)文本文件中提取電話號(hào)碼,查找一篇文章中重復(fù)的單詞或者替換用戶輸入的某些敏感詞語等,這些地方都可以使用正則表達(dá)式。正則表達(dá)式強(qiáng)大而且靈活,可以應(yīng)用于非常復(fù)雜的查詢。

MySQL中使用REGEXP關(guān)鍵字指定正則表達(dá)式的字符匹配模式。下表列出了REGEXP操作符中常用字符匹配 列表。
MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法

1. 查詢以特定字符或字符串開頭的記錄

字符‘^’匹配以特定字符或者字符串開頭的文本。在fruits表中,查詢f_name字段以字母‘b’開頭的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name REGEXP '^b';

2. 查詢以特定字符或字符串結(jié)尾的記錄

字符‘$’匹配以特定字符或者字符串結(jié)尾的文本。
在fruits表中,查詢f_name字段以字母‘y’結(jié)尾的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'y$';

3.用符號(hào)"."來替代字符串中的任意一個(gè)字符

字符‘.’匹配任意一個(gè)字符。 在fruits表中,查詢f_name字段值包含字母‘a(chǎn)’與‘g’且兩個(gè)字母之間只有一個(gè)字母的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'a.g';

4. 使用"*“和”+"來匹配多個(gè)字符

星號(hào)‘*’匹配前面的字符任意多次,包括0次。加號(hào)‘+’匹配前面的字符至少一次。在fruits表中,查詢f_name字段值以字母‘b’開頭且‘b’后面出現(xiàn)字母‘a(chǎn)’的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name REGEXP '^ba+';

5. 匹配指定字符串

正則表達(dá)式可以匹配指定字符串,只要這個(gè)字符串在查詢文本中即可,如要匹配多個(gè)字符串,多個(gè)字符串之間使用分隔符‘|’隔開。

在fruits表中,查詢f_name字段值包含字符串“on”的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'on';

在fruits表中,查詢f_name字段值包含字符串“on”或者“ap”的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'on|ap';

之前介紹過,LIKE運(yùn)算符也可以匹配指定的字符串,但與REGEXP不同,LIKE匹配的字符串如果在文本中間出現(xiàn),則找不到它,相應(yīng)的行也不會(huì)返回。REGEXP在文本內(nèi)進(jìn)行匹配,如果被匹配的字符串在文本中
出現(xiàn),REGEXP將會(huì)找到它,相應(yīng)的行也會(huì)被返回。對(duì)比結(jié)果如下所示。

在fruits表中,使用LIKE運(yùn)算符查詢f_name字段值為“on”的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name like 'on';
Empty set(0.00 sec)

6. 匹配指定字符中的任意一個(gè)

方括號(hào)“[]”指定一個(gè)字符集合,只匹配其中任何一個(gè)字符,即為所查找的文本。

在fruits表中,查找f_name字段中包含字母‘o’或者‘t’的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_name REGEXP '[ot]';

在fruits表中,查詢s_id字段中包含4、5或者6的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE s_id REGEXP '[456]';

7. 匹配指定字符以外的字符

“[^字符集合]” 匹配不在指定集合中的任何字符。
在fruits表中,查詢f_id字段中包含字母ae和數(shù)字12以外字符的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_id REGEXP '[^a-e1-2]';

8. 使用{n,}或者{n,m}來指定字符串連續(xù)出現(xiàn)的次數(shù)

“字符串{n,}”表示至少匹配n次前面的字符;“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次。例如,a{2,}表示字母a連續(xù)出現(xiàn)至少2次,也可以大于2次;a{2,4}表示字母a連續(xù)出現(xiàn)最少2次,最多不能超過4次。

在fruits表中,查詢f_name字段值出現(xiàn)字母‘x’至少2次的記錄,SQL語句如下:

mysql> SELECT * FROM fruits WHERE f_id REGEXP '[^a-e1-2]';

在fruits表中,查詢f_name字段值出現(xiàn)字符串“ba”最少1次、最多3次的記錄,SQL語句如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-478207.html

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'ba{1,3}';

到了這里,關(guān)于MySQL數(shù)據(jù)庫(kù),從入門到精通:第四篇——MySQL中常用的運(yùn)算符及其用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《數(shù)據(jù)庫(kù)原理MySQL》第四次上機(jī)實(shí)驗(yàn)

    一、連接查詢 1.查詢女學(xué)生的學(xué)生學(xué)號(hào)及總成績(jī) 2.查詢李勇同學(xué)所選的課程號(hào)及成績(jī) 3.查詢李新老師所授課程的課程名稱 4.查詢女教師所授課程的課程號(hào)及課程名稱 5.查詢姓“王”的學(xué)生所學(xué)的課程名稱 6.查詢選修“數(shù)據(jù)庫(kù)”課程且成績(jī)?cè)?80 到 90 之間的學(xué)生學(xué)號(hào)及成績(jī) 7.查

    2024年02月05日
    瀏覽(23)
  • mariadb數(shù)據(jù)庫(kù)從入門到精通

    mariadb數(shù)據(jù)庫(kù)從入門到精通

    實(shí)驗(yàn)環(huán)境:yum倉(cāng)庫(kù)搭建好 mariadb 是當(dāng)前流行的Mysql數(shù)據(jù)庫(kù)的分支 Mysql原先SUN公司(java)被Orical收購(gòu)了 Mysql開源免費(fèi),所以企業(yè)當(dāng)中的核心數(shù)據(jù)庫(kù)是Orical,其余是Mysql mariadb是Mysql數(shù)據(jù)庫(kù)的一個(gè)分支 1.數(shù)據(jù)庫(kù)的安裝 由于數(shù)據(jù)庫(kù)的登陸不需要密碼所以不安全,我們要安全初始化。 密碼

    2024年01月21日
    瀏覽(29)
  • 開源數(shù)據(jù)庫(kù)MYSQL DBA運(yùn)維實(shí)戰(zhàn) 第四章 集群

    開源數(shù)據(jù)庫(kù)MYSQL DBA運(yùn)維實(shí)戰(zhàn) 第四章 集群

    mysql復(fù)制技術(shù) 集群目的 負(fù)載均衡:解決高并發(fā) 高可用HA:服務(wù)可用性 遠(yuǎn)程災(zāi)害:數(shù)據(jù)有效性 圖示 類型 M M-S M-S-S... M-M M-M-S-S 原理圖示 圖示 概念 1.在主庫(kù)上把數(shù)據(jù)更改 (DDL DML DCL) 記錄到二進(jìn)制日志 (BinaryLog) 中。 2.備庫(kù)/0線程將主庫(kù)上的日志復(fù)制到自己的中繼日志 ( Relay Log) 中

    2024年02月21日
    瀏覽(27)
  • 【100天精通python】Day30:使用python操作數(shù)據(jù)庫(kù)_數(shù)據(jù)庫(kù)基礎(chǔ)入門

    【100天精通python】Day30:使用python操作數(shù)據(jù)庫(kù)_數(shù)據(jù)庫(kù)基礎(chǔ)入門

    ?專欄導(dǎo)讀? 專欄訂閱地址: https://blog.csdn.net/qq_35831906/category_12375510.html 1.1 什么是數(shù)據(jù)庫(kù)? ????????數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化存儲(chǔ)和組織數(shù)據(jù)的集合,它可以被有效地訪問、管理和更新。數(shù)據(jù)庫(kù)的目的是為了提供一種可靠的方式來存儲(chǔ)和管理大量的數(shù)據(jù),以便用戶和應(yīng)用程序

    2024年02月13日
    瀏覽(34)
  • JAVA JDBC數(shù)據(jù)庫(kù)開發(fā)詳解:從入門到精通

    簡(jiǎn)介: Java是一種面向?qū)ο螅踩`活的編程語言,已經(jīng)成為了世界上最流行的編程語言之一。Java語言的一個(gè)重要應(yīng)用領(lǐng)域就是數(shù)據(jù)庫(kù)開發(fā)。通過Java?JDBC(Java?Database?Connectivity)?API,開發(fā)人員可以使用Java語言來訪問并操作各種數(shù)據(jù)庫(kù)。 本篇資料將會(huì)詳細(xì)介紹Java?JDBC數(shù)據(jù)庫(kù)

    2024年02月02日
    瀏覽(23)
  • 13. python從入門到精通——Python操作數(shù)據(jù)庫(kù)

    13. python從入門到精通——Python操作數(shù)據(jù)庫(kù)

    python database API 規(guī)范對(duì)于關(guān)系數(shù)據(jù)庫(kù)的訪問,Python社區(qū)已經(jīng)制定出一個(gè)標(biāo)準(zhǔn),稱為Python Database API,通過這個(gè)接口使python跨不同數(shù)據(jù)庫(kù)的操作代碼可以更加具有可移植性、讓 Python 可以連接(并操作)更多的數(shù)據(jù)庫(kù)。 用于管理數(shù)據(jù)庫(kù)連接的Connection(連接)對(duì)象 用于執(zhí)行查詢的

    2024年02月10日
    瀏覽(114)
  • MongoDB數(shù)據(jù)庫(kù)從入門到精通系列文章之:MongoDB數(shù)據(jù)庫(kù)百篇技術(shù)文章匯總

    MongoDB數(shù)據(jù)庫(kù)系列文章持續(xù)更新中: 更多數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)閱讀博主數(shù)據(jù)庫(kù)專欄,數(shù)據(jù)庫(kù)專欄涵蓋了Mysql、SQLServer、PostgreSQL、MongoDB、Oracle、Cassandra等數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)專欄 文章名稱 文章鏈接 數(shù)據(jù)庫(kù)安裝部署系列之:部署Mongodb5.0.6高可用集群詳細(xì)步驟 數(shù)據(jù)庫(kù)安裝部署系列之:部署M

    2024年02月11日
    瀏覽(54)
  • Jmeter(六) - 從入門到精通 - 建立數(shù)據(jù)庫(kù)測(cè)試計(jì)劃(詳解教程)

    Jmeter(六) - 從入門到精通 - 建立數(shù)據(jù)庫(kù)測(cè)試計(jì)劃(詳解教程)

    1.簡(jiǎn)介 ? 在實(shí)際工作中,我們經(jīng)常會(huì)聽到數(shù)據(jù)庫(kù)的性能和穩(wěn)定性等等,這些有時(shí)候也需要測(cè)試工程師去評(píng)估和測(cè)試,因此這篇文章主要介紹了jmeter連接和創(chuàng)建數(shù)據(jù)庫(kù)測(cè)試計(jì)劃的過程,在文中通過示例和代碼非常詳細(xì)地介紹給大家,希望對(duì)各位小伙伴和童鞋們的學(xué)習(xí)或者工作具有

    2024年02月13日
    瀏覽(20)
  • 【Mysql】數(shù)據(jù)庫(kù)第四講(表的增刪改查操作 超全面 附實(shí)操案例)

    【Mysql】數(shù)據(jù)庫(kù)第四講(表的增刪改查操作 超全面 附實(shí)操案例)

    語法: 案例: 創(chuàng)建一個(gè)學(xué)生信息表 單行 多行 語法 案例 表達(dá)式不包含字段 表達(dá)式包含字段 表達(dá)式包含多個(gè)字段 比較運(yùn)算符: 邏輯運(yùn)算符: AND:多個(gè)條件必須都為 TRUE(1),結(jié)果才是 TRUE(1); OR:任意一個(gè)條件為 TRUE(1), 結(jié)果為 TRUE(1) NOT:條件為 TRUE(1),結(jié)果為 FALSE(0) 案例1 英語不

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包