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