Mysql数据库(七)——mysql高阶语句(上)
生活随笔
收集整理的這篇文章主要介紹了
Mysql数据库(七)——mysql高阶语句(上)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Mysql數據庫(七)——mysql高階語句(上)
- 一、按關鍵字排序
- 1、單字段排序
- 2、多字段排序
- 二、或/且的運用
- 三、查詢不重復記錄
- 四、對結果進行分組
- 五、限制結果條目
- 六、設置別名
- 使用場景
- 七、連接語句
- 八、通配符
- 九、子查詢
- 1、定義
- 2、子查詢—別名
- 3、子查詢—exists
- 十、視圖
- 十一、NULL值
- 1、定義
- 2、NULL和空值的區別
一、按關鍵字排序
- 使用select語句可以將需要的數據從 mysql 數據庫中查詢出來,如果對查詢的結果進行排序操作,可以使用 order by 語句完成排序,并且最終將排序后的結果返回給客戶。
- ASC|DESC
- ASC 是按照升序進行排名的,是默認的排序方式,即ASC可以省略
- DESC 是按照降序的方式進行排序的
- order by 也可以通過 where 子句對查詢結果進行進一步的過濾
- 可進行多字段的排序
1、單字段排序
2、多字段排序
二、或/且的運用
select * from ljm where id>2 and id<5;select * from ljm where id>2 or id<5;嵌套/多條件 select * from ljm where id>2 or (id>3 and id <5);三、查詢不重復記錄
select distinct 字段 from 表名;- distinct 必須放在最開頭
- distinct 只能使用需要去重的字段進行操作
- distinct 去重多個字段時,含義是:幾個字段同時重復時才能被過濾
四、對結果進行分組
- 通過 SQL 哈訊出來的結果,還可以對其進行分組,使用 group by 語句來實現
- group by 通常都是結合聚合函數一起使用的,常用的聚合函數包括:計數(count)、求和(sum)、求平均數(avg)、最大值(max)、最小值(min),group by 分組的時候可以按一個或者多個字段對結果進行分組處理
五、限制結果條目
- 在使用 mysql select 語句進行查詢操作時,結果集返回的是所有匹配的記錄。有時候僅需返回第一行或者前幾行。這時候就需要用到 limit 子句。
- limit 的第一個參數是位置偏移量(可選參數),是設置 mysql 從哪一行開始
- 如果不設定第一個參數,將會從表中的第一條記錄開始顯示。
- 第一條偏移量是0,第二條為1
- offset 為索引下標
- number 為索引下標后的幾位
六、設置別名
- 在 mysql 查詢時,當表的名字比較長或者表內某些字段比較長時,為了方便書寫或者多次使用相同的表,可以給字段列或表設置別名
- 方便操作,增強可讀性
使用場景
- 對復雜的表進行查詢的時候,別名可以縮短查詢語句
- 多表相連查詢的時候(通俗易懂、減短 SQL 語句)
七、連接語句
AS可作為連接語句用 例如: create table lucien as select * from ljm; 這里的AS起到的作用: 1、創建一個新表lucien,定義表結構,插入表數據(與working表相同) 2、但是“約束"沒有被“復制”過來,但是如果原表設置了主鍵,那么附表的: default字段會默認設置一個0八、通配符
- 通配符主要用于替換字符串中的部分字符,通過部分字符的匹配將相關結果查詢出來
- 通常通配符都是和 like(模糊查詢)一起使用的,并協同 where子句共同來完成查詢任務
- 常用的通配符有兩個
- %:百分號表示任意個數的任意字符
- _:下劃線表示單個字符
九、子查詢
1、定義
- 子查詢也被稱作內查詢或者嵌套查詢,是指在一個查詢語句里面還嵌套著另一個查詢語句
- 子查詢語句是先于主查詢語句被執行的,七結果作為外層的條件返回給主查詢進行下一步的查詢過濾
- 子語句可以與主語句所查詢的表相同,也可以不同
- 子查詢不僅可以在 select 中使用,在 insert、update、delete 中同樣可以使用
- 支持多層嵌套
- in語句是用來判斷某個值是否在給定的集合內(結果集),in往往和 select 搭配使用
- 可以使用 not in 來進行對結果集取反
2、子查詢—別名
例: select name,hobby from ljm 以上命令可以查詢一張表的name和hobby信息將結果作為“表”進行查詢的時候,我們也需要用到別名 比如我們輸入:select hobby from (select name,hobby from ljm); 會報錯,因為 select name,hobby from ljm 得到的是一個結果集,而不是表,mysql 是不能識別的 所以我們需要對結果集設置一個別名,這樣mysql就能將結果集視為一張表。3、子查詢—exists
select count(*) as num from working where exists(select id from working where id>3);as num 將 count 統計的結果作為 num 返回 exists 布爾值判斷,where之后的語句成立,布爾值則為0,則進行前面的操作,否則返回值為0 當使用 sum求和結合exists ,如果查詢結果不成立,返回值為null
十、視圖
- 數據庫中的虛擬表,這張虛擬表是真實數據的一個動態映射
- 這張虛擬表能動態的保存結果集
- 因為視圖和真實表之間是動態同步的關系,所以我們修改虛擬表的同時,真實數據也會收到影響
- 但是視圖除了名字什么都沒有,是一個投影,所以不占空間
- 我們只需要對其做權限的設置,就可保證其安全性
- 我們可以為視圖定義展示的條件,為不同的人群展示不同的網內容
十一、NULL值
1、定義
- 通常使用 NULL 來表示缺失的值,也就是在表中改字段時沒有值的。
- 如果在創建表時,限制某些字段不為空,則可以使用 NOT NULL 關鍵字,不使用則默認可以為空。
- 在向表內插入記錄或者更新記錄時,如果該字段沒有 NOT NULL 并且沒有值,這時候新記錄的該字段將被保存為NULL。
- 需要注意的是,NULL值與數字0或者空白(spaces)的字段是不同的,值為NUL的字段是沒有值的。
- 在SQL語句中,使用 IS NULL 可以判斷表內的某個字段是不是NULL值,相反的用 IS NOT NULL 可以判斷不是NULL值。
2、NULL和空值的區別
- 空值長度為0,不占空間
- NULL值的長度為null,占用空間
- is null 無法判斷空值
- 空值使用“=”或者“<>”來處理
- count()計算時,NULL會被忽略,空值會加入計算
總結
以上是生活随笔為你收集整理的Mysql数据库(七)——mysql高阶语句(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑爱好者必看!1.35V内存超频,让你
- 下一篇: Mysql数据库(八)——mysql高阶