Mysql数据库(八)——mysql高阶语句(中)
生活随笔
收集整理的這篇文章主要介紹了
Mysql数据库(八)——mysql高阶语句(中)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Mysql數據庫(八)——mysql高階語句(中)
- 一、正則表達式(同shell腳本的正則表達式)
- 1、以"."代替任意一個字符
- 2、匹配前面字符多次
- 3、匹配前面字符至少一次
- 4、匹配字符串
- 5、匹配包含或者關系的記錄
- 6、匹配指定字符集中的任意一個
- 二、運算符
- 1、算數運算
- 2、比較運算符
- ①、等于(=)
- ②、不等于(!=或<>)
- ③、大于、大于等于、小于、小于等于
- ④、判斷一個值為/不為null(is null,is not null)
- ⑤、兩者之間(between ... and ...)
- ⑥、當有兩個或者多個參數時,返回其中最大/最小值,如果其中有一個為null,則返回null(least、greatest)
- ⑦、在/不在集合中(in/not in)
- ⑧、通配符匹配
- 3、邏輯運算符
- ①、邏輯非(not 或 !)
- ②、邏輯與(and 或 &&)
- ③、邏輯或(or)
- ④、邏輯異或(xor)
- 4、位運算符
- 5、優先級
- 三、連接查詢
- 1、內連接
- 2、左連接
- 3、右連接
- 總結
- 1、算數運算符
- 2、比較運算符
- ①、等于
- ②、不等于、大于、大于等于、小于、小于等于
- ③、判斷一個值為/不為null
- ④、兩者之間
- ⑤、通配符匹配
- 3、邏輯運算符
- ①、邏輯非(not 或 !)
- ②、邏輯與(and 或 &&)
- ③、邏輯或(or)
- ④、邏輯異或(xor)
- 4、位運算符
- 5、連接查詢
一、正則表達式(同shell腳本的正則表達式)
- MysQL正則表達式通常是在檢索數據庫記錄的時候,根據指定的匹配模式匹配記錄中符合要求的特殊字符串。
- MysQL的正則表達式使用REGEXP這個關鍵字來指定正則表達式的匹配模式
- REGEXP操作符所支持的匹配模式如下
| ^ | 匹配文本的開始字符 |
| $ | 匹配文本的結束字符 |
| . | 匹配任何單個字符 |
| * | 匹配零個或多個在它前面的字符 |
| + | 匹配前面的字符 1 次或多次 |
| 字符串 | 匹配包含指定的字符串 |
| p1Ip2 | 匹配 p1 或 p2 |
| […] | 匹配字符集合中的任意一個字符 |
| [^…] | 匹配不在括號中的任何字符 |
| {n} | 匹配前面的字符串 n 次 |
| {n,m} | 匹配前面的字符串至少 n 次,至多m 次 |
1、以"."代替任意一個字符
2、匹配前面字符多次
3、匹配前面字符至少一次
4、匹配字符串
5、匹配包含或者關系的記錄
6、匹配指定字符集中的任意一個
二、運算符
- MysQL的運算符用于對記錄中的字段值進行運算。
- MysQL的運算符共有四種,分別是:算術運算符、比較運算符、邏輯運算符和位運算符。
1、算數運算
| + | 加法 |
| - | 減法 |
| * | 乘法 |
| / | 除法 |
| % | 取余 |
- 在除法運算中,除數不能為0,若除數是0,則返回的結果為 null 。
- 如果有多個運算符,按照先乘除后加減的優先級進行運算,相同優先級的運算,沒有先后順序
2、比較運算符
- 字符串的比較默認不區分大小寫,可使用 binary 來區分
| = | 等于 |
| !=或<> | 不等于 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| is null | 判斷是否為null |
| is not null | 判斷是否不為null |
| between and | 兩者之間 |
| greatest | 兩個或多個參數時返回最大值 |
| least | 兩個或多個參數時返回最小值 |
| in | 在集合中 |
①、等于(=)
- 等號(=)用來判斷數字、字符串和表達式是否相等的,如果相等則返回1,如果不相等則返回0。
- 如果比較的兩者有一個值是NULL,則比較的結果就是NULL。
- 其中字符的比較是根據ASCII碼來判斷的,如果ASCIl碼相等,則表示兩個字符相同;如果ASCII碼不相等,則表示兩個字符不相同。例如字符串(字母)比較: (‘a’ > ‘b’)其實比較的是底層ASCll碼需要關注的ASCII碼有:a、A、0
- 如果兩者都是整數,則按照整數值進行比較。
- 如果一個整數一個字符串,則會自動將字符串轉換為數字,再進行比較。
- 如果兩者都是字符串,則按照字符串進行比較。
- 如果兩者中至少有一個值是NULL,則比較的結果是NULL
②、不等于(!=或<>)
- 用于針對數字、字符串和表達式不相等的比較,如果不相等則返回1,如果相等則返回0
- 不等于(!=,<>)無法用于判斷是否為null
③、大于、大于等于、小于、小于等于
- 大于(>)運算符用來判斷左側的操作數是否大于右側的操作數,若大于返回1,否則返回0,同樣不能用于判斷NULL
- 小于(<)運算符用來判斷左側的操作數是否小于右側的操作數,若小于返回1,否則返回0,同樣不能用于判斷NULL
- 大于等于(>=)判斷左側的操作數是否大于等于右側的操作數,若大于等于返回1,否則返回0,不能用于判斷NULL
- 小于等于(<=)判斷左側的操作數是否小于等于右側的操作數,若小于等于返回1,否則返回0,不能用于判斷NULL
④、判斷一個值為/不為null(is null,is not null)
- IS NULL判斷一個值是否為NULL,如果為NULL返回1,否則返回0
- IS NOT NULL判斷一個值是否不為NULL,如果不為NULL返回1,否則返回0
⑤、兩者之間(between … and …)
- 通常用于判斷一個值是否在某兩個值之間。例如,判斷某數字是否在另外兩個數字之間,也可以判斷某英文字母是否在另外兩個字母之間,條件符合返回1,否則返回0
⑥、當有兩個或者多個參數時,返回其中最大/最小值,如果其中有一個為null,則返回null(least、greatest)
⑦、在/不在集合中(in/not in)
- in 判斷一個值是否在集合中,在則返回1,否則返回0
- not in 判斷一個值是否不在集合中,不在則返回1,在則返回0
⑧、通配符匹配
- LIKE用來匹配字符串,如果匹配成功則返回1,反之返回0
- LIKE支持兩種通配符:‘g’用于匹配任意數目的字符,而’_'只能匹配一個字符。
3、邏輯運算符
- 邏輯運算符又被稱為布爾運算符,通常用來判斷表達式的真假,如果為真返回1,否則返回0,真和假也可以用TRUE和FALSE表示。
- MySQL中支持使用的邏輯運算符有四種
- not 或 ! :邏輯非
- and 或 && :邏輯與
- or :邏輯或
- xor :邏輯異或
①、邏輯非(not 或 !)
- 邏輯非將跟在他后面的值取反,如果NOT后面的操作數為0時,所得值為1
- 如果操作數為非0時,所得值為0
- 如果操作數為NULL時,所得值為NULL
②、邏輯與(and 或 &&)
- 當所有操作數都為非零值并且不為NULL時,返回值為1
- 當一個或多個操作數為0時,返回值為0
- 操作數中有任何一個為NULT時,返回值為NULL
③、邏輯或(or)
- 當兩個操作數都為非NULL值時,如果有任意一個操作數為非零值,則返回值為1,否則結果為0
- 當有一個操作數為NULL時,如果另一個操作數為非零值,則返回值為1,否則結果為NULL
- 假如兩個操作數均為NULL時,則返回值為NULL。
④、邏輯異或(xor)
- 當任意一個操作數為NULL時,返回值為NULL
- 對于非NULL的操作數,如果兩個操作數都是非0值或者都是0值,則返回值為0
- 如果一個為0值,另一個為非0值,返回值為1
4、位運算符
- 位運算符是在二進制數上進行計算的運算符
- 位運算會先將操作數變成二進制數,進行位運算
- 然后再將計算結果從二進制數變回十進制數
| & | 按位與 |
| I | 按位或 |
| ^ | 按位異或 |
| ! | 取反 |
| << | 左移 |
| >> | 右移 |
- 按位與:對應的二進制位都為1,則運算結果為1,否則為0
- 按位或:對應的二進制位有一個為1則為1,否則為0
- 按位異或:對應的二進制位不同時,運算結果為1,否則為0
- 取反:對應的二進制數逐位反轉,0取反為1,1取反為0
5、優先級
三、連接查詢
- MysQL的連接查詢,通常都是將來自兩個或多個表的行結合起來,基于這些表之間的共同字段,進行數據的拼接。
- 首先,要確定一個主表作為結果集,然后將其他表的行有選擇性的連接到選定的主表結果集上。
- 使用較多的連接查詢包括:內連接、左連接和右連接
1、內連接
- MySQL中的內連接就是兩張或多張表中同時符合某種條件的數據記錄的組合。
- 通常在 from 子句中使用關鍵字 inner join 來連接多張表,并使用 on 子句設置連接條件
- 內連接是系統默認的表連接,所以在 from 子句后可以省略 inner 關鍵字,只使用關鍵字 join ,同時有多個表時,也可以連續使用 inner join 來實現多表的內連接,不過為了更好的性能,建議最好不要超過三個表
2、左連接
- 左連接也可以被稱為左外連接,在 from 子句中用 left join 或者 left out join 關鍵字來表示。
- 左連接以左側表為基礎表,接收左表的所有行,并用這些行與右側參考表中的記錄進行匹配,也就是說匹配左表中的所有行以及右表中符合條件的行。
- 左連接中,左表的記錄會全部表示出來,而右表只會顯示符合搜索條件的記錄,不足的地方均為 null
3、右連接
- 右連接也被稱為右外連接,在 from 子句中用 right join 或者 right out join 關鍵字來表示。
- 右連接跟左連接正好相反,它是以右表為基礎表,用于接收右表中的所有行,并用這些記錄與左表中的行進行匹配
總結
1、算數運算符
- 算法運算中,除法運算/的結果類型為decimal,其余為Int
- 多個運算符時,先乘除后加減
2、比較運算符
- 判斷結果正確為1,不正確則為0
①、等于
- 字母是按照ASCII碼的數值來進行判斷
- 有一個為NULL,則為NULL
②、不等于、大于、大于等于、小于、小于等于
- 無法判斷NULL
③、判斷一個值為/不為null
- 判斷成立則為1,不成立則為0
④、兩者之間
- 判斷范圍是包含范圍的兩個數值的
- 也可以用來判斷英文字母
⑤、通配符匹配
- like支持兩種通配符,‘g’ 用于匹配任意數目字符,而 ‘_’ 只能匹配一個字符
3、邏輯運算符
- 是用來判斷表達式的真假,真為1,假為0
①、邏輯非(not 或 !)
- NULL則為NULL
- 非0時則為0
- 0時則為1
- 注:整體判斷時需要使用單引號進行整體判斷
- 例如 select !1+1 的結果為1,而 select !‘1+1’ 則為0
②、邏輯與(and 或 &&)
- 都非0,且不為NULL,則為1
- 有一個或多個0,則為0
- 非0時,有NULL,則為NULL
③、邏輯或(or)
- 有NULL時:
- 全是NULL則為NULL
- 不全是NULL時:有0則為NULL,非0則為1
- 無NULL時:
- 非0則為1
- 有0時:不全是0則為1,全是0則為0
④、邏輯異或(xor)
- 有NULL則為NULL
- 非NULL時
- 全是0或者全是非0則為0
- 不全是0則為1
4、位運算符
- 按位與:對應的二進制位都為1,則運算結果為1,否則為0
- 按位或:對應的二進制位有一個為1則為1,否則為0
- 按位異或:對應的二進制位不同時,運算結果為1,否則為0
- 取反:對應的二進制數逐位反轉,0取反為1,1取反為0
5、連接查詢
- 內連接是默認的表連接,可省略inner ,只用 jion ,查詢的結果為兩表相同字段。最好不要超過三張表。
- 左連接中主表在左邊,主表內容會全部顯示出來,在從表中沒匹配到的以NULL顯示出來
- 右連接中主表在右邊,主表內容會全部顯示出來,在從表中沒匹配到的以NULL顯示出來
總結
以上是生活随笔為你收集整理的Mysql数据库(八)——mysql高阶语句(中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存选购攻略:16G内存,如何找到性价比
- 下一篇: 内存超频大揭秘:选择内存条、调整BIOS