檢索數(shù)據(jù)/排序檢索數(shù)據(jù)/過(guò)濾數(shù)據(jù)/高級(jí)過(guò)濾/用通配符進(jìn)行過(guò)濾
1.檢索單個(gè)列
select 列名 from 表名;
2.檢索多個(gè)列
select 列名1,列名2 from 表名;
3.檢索所有列
select * from 表名;
4.檢索不同的值(我理解就是去重)
注:distinct關(guān)鍵字必須直接放在列名前
select distinct 列名 from 表名;
5.限制結(jié)果
1)limit? n 表示返回結(jié)果不超過(guò)n行地啰,默認(rèn)從首位0開(kāi)始檢索
select 列名 from 表名 limit n;
2)指定從哪開(kāi)始以及檢索的行數(shù)道盏,n 代表檢索的行數(shù)骂澄,m代表從哪兒開(kāi)始
select 列名 from 表名 limit? n offset m;
3)簡(jiǎn)化版的limit n offset m吠卷,逗號(hào)前的值對(duì)應(yīng)offset鳄哭,逗號(hào)后值對(duì)應(yīng)limit
select 列名 from 表名 limit? m,n;? 即 select 列名 from 表名 limit n offset m;
6.注釋
1)行內(nèi)注釋
select 列名--這是行內(nèi)注釋內(nèi)容
from 表名泰佳;
2)整行注釋
#這是整行注釋內(nèi)容
select 列名 from 表名;
3)多行注釋
/* select 列名1,列名2
from表名*/
select 列名 from 表名;
7.排序數(shù)據(jù)
1)按單個(gè)列排序
select 列名1 from 表名order by 列名1柒莉;
2)按多個(gè)列排序
select 列名1,列名2,列名3 from 表名 order by 列名1,列名2;
3)按列的位置排序(n 闻坚、m代表列的位置)
select 列名1,列名2,列名3 from 表名 order by n,m;
8.指定排序方向
1)升序(一般很少用,默認(rèn)排序方向)
select 列名 from 表名order by 列名 asc;
2)降序(很常用)
注:desc 關(guān)鍵字值應(yīng)用到直接位于其前面的列名
select 列名1,列名2 from 表名 order by 列名1 desc;
像下面語(yǔ)句中只對(duì)列名1指定desc,對(duì)列名2沒(méi)指定兢孝,則列名1以降序排序鲤氢,列名2仍按標(biāo)準(zhǔn)的升序排序?
select 列名1,列名2,列名3 from 表名 order by 列名1 desc,列名2;
9.使用Where子句
注:where 子句在表名(from子句)之后給出
1)where子句的操作符
a. =等于 b. <> 不等于 c. != 不等于 d. < 小于 e. <= 小于等于 f. !< 不小于
g. > 大于 h. >= 大于等于 i. !> 不大于? j. between? 在指定的兩個(gè)值之間
k. is null為null值
2)檢索單個(gè)值
從表名中檢索列名的值等于n的行
select? *? from 表名 where 列名= n;
3)不匹配檢查
select * from 表名 where 列名 <> n; 即 select? * from 表名 where 列名 != n;
4)范圍值檢查
使用between關(guān)鍵字時(shí),必須指定范圍內(nèi)的低值與高值西潘,且必須用and關(guān)鍵字分隔卷玉,between匹配范圍中所有的值,包括指定的開(kāi)始值和結(jié)束值喷市。
select * from 表名 where 列名 between? n and m;
5)空值檢查
空值:是指一個(gè)列中不包含值時(shí)稱其包含空值null
注:null無(wú)值相种,它與字段包含0、空字符串或僅僅包含空格不同
1)確定值是否為null品姓,不能簡(jiǎn)單檢查是否=null寝并。確實(shí)值是null的正確語(yǔ)法如下:
select 列名1 from 表名 where 列名2 is null;
2)確定值不是null
select 列名1 from 表名 where 列名2 is not null;
10. 組合where子句
1)and 操作符
select 列名1,列名2,列名3? from? 表名 where 列名1 = n and 列名2 > m;
2)or操作符
select 列名1,列名2,列名3 from 表名 where 列名1 = n or 列名2 = m;
3)求值順序
select? * from 表名 where 列名1 = n or 列名1 = m and 列名3 > t;
select * from 表名 where (列名1 = n or 列名1 = m) and 列名3 > t;
注:上面的語(yǔ)句與下面語(yǔ)句的返回結(jié)果是不同的腹备,and 操作符的優(yōu)先級(jí)要高于or操作符衬潦,故根據(jù)不同的場(chǎng)景用不同的語(yǔ)句。
11. in 操作符
in操作符用來(lái)指定條件范圍植酥,范圍中的每個(gè)條件都可以進(jìn)行匹配镀岛。
in 取一組由逗號(hào)分隔、括在圓括號(hào)中的合法值友驮。n漂羊、mu均為列名3中的某個(gè)值。
select 列名1,列名2 from 表名 where 列名3 in ('n','m') order by 列名1;
where子句中用來(lái)指定要匹配值的清單的關(guān)鍵字卸留,in 功能與 or 相當(dāng)走越。
之所以使用in操作符的優(yōu)點(diǎn):
a. 在有很多合法選項(xiàng)時(shí),In 操作符的語(yǔ)法更清楚耻瑟,更直觀旨指。
b.在與其他and 和 or 操作符組合使用 In時(shí),求值順序更容易管理喳整。
c.in 操作符一般比一組 or 操作符執(zhí)行的更快谆构。
d.in的最大優(yōu)點(diǎn)是可以包含其他select 語(yǔ)句,能夠更動(dòng)態(tài)地建立where 子句算柳。
12. not 操作符
where 子句中用來(lái)否定其后條件的關(guān)鍵字低淡。not關(guān)鍵字可以用在要過(guò)濾的列前,而不僅是在其后瞬项。n 代指值蔗蹋。
select 列名1 from 表名 where not 列名2 = 'n' order by 列名1;
13.使用通配符過(guò)濾
1)Like 匹配文本
select * from 表名 where 列名 like '關(guān)鍵字%';? 例如:查詢名字是魏開(kāi)頭的,'魏%'
2)% 匹配一個(gè)或多個(gè)字符
select * from 表名 where 列名 like? '一百%章'; 例如查詢一百零六章或者一百章等
3)下劃線_? 只匹配單個(gè)字符
select * from 表名 where 列名 like '-000'; 例如查詢結(jié)果為1000囱淋、2000等
select * from 表名where 列名 like '--00'; 例如查詢結(jié)果為2600猪杭、3100等
4)方括號(hào)[]?
select * from 表名 where 列名 like ' [JM]%'; 例如查詢結(jié)果為Jone、Mike妥衣、Json等
數(shù)據(jù)源來(lái)自:SQL必知必會(huì)書(shū)籍? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??今日學(xué)習(xí)至此? ? ?2019.03.20? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?