日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql数据库(八)——mysql高阶语句(中)

發(fā)布時間:2024/2/28 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql数据库(八)——mysql高阶语句(中) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Mysql數(shù)據(jù)庫(八)——mysql高階語句(中)

  • 一、正則表達式(同shell腳本的正則表達式)
    • 1、以"."代替任意一個字符
    • 2、匹配前面字符多次
    • 3、匹配前面字符至少一次
    • 4、匹配字符串
    • 5、匹配包含或者關系的記錄
    • 6、匹配指定字符集中的任意一個
  • 二、運算符
    • 1、算數(shù)運算
    • 2、比較運算符
      • ①、等于(=)
      • ②、不等于(!=或<>)
      • ③、大于、大于等于、小于、小于等于
      • ④、判斷一個值為/不為null(is null,is not null)
      • ⑤、兩者之間(between ... and ...)
      • ⑥、當有兩個或者多個參數(shù)時,返回其中最大/最小值,如果其中有一個為null,則返回null(least、greatest)
      • ⑦、在/不在集合中(in/not in)
      • ⑧、通配符匹配
    • 3、邏輯運算符
      • ①、邏輯非(not 或 !)
      • ②、邏輯與(and 或 &&)
      • ③、邏輯或(or)
      • ④、邏輯異或(xor)
    • 4、位運算符
    • 5、優(yōu)先級
  • 三、連接查詢
    • 1、內連接
    • 2、左連接
    • 3、右連接
  • 總結
    • 1、算數(shù)運算符
    • 2、比較運算符
      • ①、等于
      • ②、不等于、大于、大于等于、小于、小于等于
      • ③、判斷一個值為/不為null
      • ④、兩者之間
      • ⑤、通配符匹配
    • 3、邏輯運算符
      • ①、邏輯非(not 或 !)
      • ②、邏輯與(and 或 &&)
      • ③、邏輯或(or)
      • ④、邏輯異或(xor)
    • 4、位運算符
    • 5、連接查詢

一、正則表達式(同shell腳本的正則表達式)

  • MysQL正則表達式通常是在檢索數(shù)據(jù)庫記錄的時候,根據(jù)指定的匹配模式匹配記錄中符合要求的特殊字符串。
  • MysQL的正則表達式使用REGEXP這個關鍵字來指定正則表達式的匹配模式
  • REGEXP操作符所支持的匹配模式如下
匹配模式描述
^匹配文本的開始字符
$匹配文本的結束字符
.匹配任何單個字符
*匹配零個或多個在它前面的字符
+匹配前面的字符 1 次或多次
字符串匹配包含指定的字符串
p1Ip2匹配 p1 或 p2
[…]匹配字符集合中的任意一個字符
[^…]匹配不在括號中的任何字符
{n}匹配前面的字符串 n 次
{n,m}匹配前面的字符串至少 n 次,至多m 次

1、以"."代替任意一個字符

2、匹配前面字符多次

3、匹配前面字符至少一次

4、匹配字符串

5、匹配包含或者關系的記錄

6、匹配指定字符集中的任意一個

二、運算符

  • MysQL的運算符用于對記錄中的字段值進行運算。
  • MysQL的運算符共有四種,分別是:算術運算符、比較運算符、邏輯運算符和位運算符。

1、算數(shù)運算

運算符描述
+加法
-減法
*乘法
/除法
%取余
  • 在除法運算中,除數(shù)不能為0,若除數(shù)是0,則返回的結果為 null 。
  • 如果有多個運算符,按照先乘除后加減的優(yōu)先級進行運算,相同優(yōu)先級的運算,沒有先后順序

2、比較運算符

  • 字符串的比較默認不區(qū)分大小寫,可使用 binary 來區(qū)分
常用比較運算符說明
=等于
!=或<>不等于
>大于
>=大于等于
<小于
<=小于等于
is null判斷是否為null
is not null判斷是否不為null
between and兩者之間
greatest兩個或多個參數(shù)時返回最大值
least兩個或多個參數(shù)時返回最小值
in在集合中

①、等于(=)

  • 等號(=)用來判斷數(shù)字、字符串和表達式是否相等的,如果相等則返回1,如果不相等則返回0。
  • 如果比較的兩者有一個值是NULL,則比較的結果就是NULL。
  • 其中字符的比較是根據(jù)ASCII碼來判斷的,如果ASCIl碼相等,則表示兩個字符相同;如果ASCII碼不相等,則表示兩個字符不相同。例如字符串(字母)比較: (‘a(chǎn)’ > ‘b’)其實比較的是底層ASCll碼需要關注的ASCII碼有:a、A、0

  • 如果兩者都是整數(shù),則按照整數(shù)值進行比較。
  • 如果一個整數(shù)一個字符串,則會自動將字符串轉換為數(shù)字,再進行比較。
  • 如果兩者都是字符串,則按照字符串進行比較。
  • 如果兩者中至少有一個值是NULL,則比較的結果是NULL

②、不等于(!=或<>)

  • 用于針對數(shù)字、字符串和表達式不相等的比較,如果不相等則返回1,如果相等則返回0
  • 不等于(!=,<>)無法用于判斷是否為null

③、大于、大于等于、小于、小于等于

  • 大于(>)運算符用來判斷左側的操作數(shù)是否大于右側的操作數(shù),若大于返回1,否則返回0,同樣不能用于判斷NULL
  • 小于(<)運算符用來判斷左側的操作數(shù)是否小于右側的操作數(shù),若小于返回1,否則返回0,同樣不能用于判斷NULL
  • 大于等于(>=)判斷左側的操作數(shù)是否大于等于右側的操作數(shù),若大于等于返回1,否則返回0,不能用于判斷NULL
  • 小于等于(<=)判斷左側的操作數(shù)是否小于等于右側的操作數(shù),若小于等于返回1,否則返回0,不能用于判斷NULL

④、判斷一個值為/不為null(is null,is not null)

  • IS NULL判斷一個值是否為NULL,如果為NULL返回1,否則返回0
  • IS NOT NULL判斷一個值是否不為NULL,如果不為NULL返回1,否則返回0

⑤、兩者之間(between … and …)

  • 通常用于判斷一個值是否在某兩個值之間。例如,判斷某數(shù)字是否在另外兩個數(shù)字之間,也可以判斷某英文字母是否在另外兩個字母之間,條件符合返回1,否則返回0

⑥、當有兩個或者多個參數(shù)時,返回其中最大/最小值,如果其中有一個為null,則返回null(least、greatest)

⑦、在/不在集合中(in/not in)

  • in 判斷一個值是否在集合中,在則返回1,否則返回0
  • not in 判斷一個值是否不在集合中,不在則返回1,在則返回0

⑧、通配符匹配

  • LIKE用來匹配字符串,如果匹配成功則返回1,反之返回0
  • LIKE支持兩種通配符:‘g’用于匹配任意數(shù)目的字符,而’_'只能匹配一個字符。

3、邏輯運算符

  • 邏輯運算符又被稱為布爾運算符,通常用來判斷表達式的真假,如果為真返回1,否則返回0,真和假也可以用TRUE和FALSE表示。
  • MySQL中支持使用的邏輯運算符有四種
    - not 或 ! :邏輯非
    - and 或 && :邏輯與
    - or :邏輯或
    - xor :邏輯異或

①、邏輯非(not 或 !)

  • 邏輯非將跟在他后面的值取反,如果NOT后面的操作數(shù)為0時,所得值為1
  • 如果操作數(shù)為非0時,所得值為0
  • 如果操作數(shù)為NULL時,所得值為NULL

②、邏輯與(and 或 &&)

  • 當所有操作數(shù)都為非零值并且不為NULL時,返回值為1
  • 當一個或多個操作數(shù)為0時,返回值為0
  • 操作數(shù)中有任何一個為NULT時,返回值為NULL

③、邏輯或(or)

  • 當兩個操作數(shù)都為非NULL值時,如果有任意一個操作數(shù)為非零值,則返回值為1,否則結果為0
  • 當有一個操作數(shù)為NULL時,如果另一個操作數(shù)為非零值,則返回值為1,否則結果為NULL
  • 假如兩個操作數(shù)均為NULL時,則返回值為NULL。

④、邏輯異或(xor)

  • 當任意一個操作數(shù)為NULL時,返回值為NULL
  • 對于非NULL的操作數(shù),如果兩個操作數(shù)都是非0值或者都是0值,則返回值為0
  • 如果一個為0值,另一個為非0值,返回值為1

4、位運算符

  • 位運算符是在二進制數(shù)上進行計算的運算符
  • 位運算會先將操作數(shù)變成二進制數(shù),進行位運算
  • 然后再將計算結果從二進制數(shù)變回十進制數(shù)
位運算符描述
&按位與
I按位或
^按位異或
!取反
<<左移
>>右移
  • 按位與:對應的二進制位都為1,則運算結果為1,否則為0
  • 按位或:對應的二進制位有一個為1則為1,否則為0
  • 按位異或:對應的二進制位不同時,運算結果為1,否則為0
  • 取反:對應的二進制數(shù)逐位反轉,0取反為1,1取反為0

5、優(yōu)先級

  • ~
  • ^
  • *、/、%
  • +、-
  • <<、>>
  • &
  • |
  • =、<=>、>=、>、<=、<、<>、!=、like、regexp、in
  • between、case、when、then、else
  • not
  • &&、and
  • or、xor
  • :=
  • 三、連接查詢

    • MysQL的連接查詢,通常都是將來自兩個或多個表的行結合起來,基于這些表之間的共同字段,進行數(shù)據(jù)的拼接。
    • 首先,要確定一個主表作為結果集,然后將其他表的行有選擇性的連接到選定的主表結果集上。
    • 使用較多的連接查詢包括:內連接、左連接和右連接

    1、內連接

    • MySQL中的內連接就是兩張或多張表中同時符合某種條件的數(shù)據(jù)記錄的組合。
    • 通常在 from 子句中使用關鍵字 inner join 來連接多張表,并使用 on 子句設置連接條件
    • 內連接是系統(tǒng)默認的表連接,所以在 from 子句后可以省略 inner 關鍵字,只使用關鍵字 join ,同時有多個表時,也可以連續(xù)使用 inner join 來實現(xiàn)多表的內連接,不過為了更好的性能,建議最好不要超過三個表
    select 字段 from 表1 inner join 表2 on 表1.字段=2.字段

    2、左連接

    • 左連接也可以被稱為左外連接,在 from 子句中用 left join 或者 left out join 關鍵字來表示。
    • 左連接以左側表為基礎表,接收左表的所有行,并用這些行與右側參考表中的記錄進行匹配,也就是說匹配左表中的所有行以及右表中符合條件的行。
    • 左連接中,左表的記錄會全部表示出來,而右表只會顯示符合搜索條件的記錄,不足的地方均為 null

    3、右連接

    • 右連接也被稱為右外連接,在 from 子句中用 right join 或者 right out join 關鍵字來表示。
    • 右連接跟左連接正好相反,它是以右表為基礎表,用于接收右表中的所有行,并用這些記錄與左表中的行進行匹配

    總結

    1、算數(shù)運算符

    • 算法運算中,除法運算/的結果類型為decimal,其余為Int
    • 多個運算符時,先乘除后加減

    2、比較運算符

    • 判斷結果正確為1,不正確則為0

    ①、等于

    • 字母是按照ASCII碼的數(shù)值來進行判斷
    • 有一個為NULL,則為NULL

    ②、不等于、大于、大于等于、小于、小于等于

    • 無法判斷NULL

    ③、判斷一個值為/不為null

    • 判斷成立則為1,不成立則為0

    ④、兩者之間

    • 判斷范圍是包含范圍的兩個數(shù)值的
    • 也可以用來判斷英文字母

    ⑤、通配符匹配

    • like支持兩種通配符,‘g’ 用于匹配任意數(shù)目字符,而 ‘_’ 只能匹配一個字符

    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
    • 取反:對應的二進制數(shù)逐位反轉,0取反為1,1取反為0

    5、連接查詢

    • 內連接是默認的表連接,可省略inner ,只用 jion ,查詢的結果為兩表相同字段。最好不要超過三張表。
    • 左連接中主表在左邊,主表內容會全部顯示出來,在從表中沒匹配到的以NULL顯示出來
    • 右連接中主表在右邊,主表內容會全部顯示出來,在從表中沒匹配到的以NULL顯示出來

    總結

    以上是生活随笔為你收集整理的Mysql数据库(八)——mysql高阶语句(中)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。