單表查詢
全表查詢:select * from 表名;
查詢指定列:select 字段1[,字段2,…] from 表名;
別名的設(shè)置:select 字段名[ as] 列別名 from 原表名 [as ]表別名;
查詢不重復(fù)的記錄:select distinct 字段名 from 表名;
條件查詢:select 字段1[,字段2,…] from 表名 where 查詢條件;
空值查詢:select 字段1[,字段2,…] from 表名 where 空值字段 is[ not] null;
模糊查詢: select 字段1[,字段2,…] from 表名 where 字符串字段[ not] like 通配符;
百分號(hào)(%)通配符:匹配0個(gè)或多個(gè)字符
下劃線(_)通配符:匹配一個(gè)字符
!模糊查詢只能用于字符串類型的字段
查詢結(jié)果排序:select 字段1[,字段2,…] from 表名 order by 字段1[ 排序方向,字段2 排序方向,…];
多字段排序時(shí),先按第一個(gè)字段排序,第一個(gè)字段值相同時(shí)再按第二個(gè)字段排序
指定排序方向:asc升序,desc降序(沒有指定排序方向時(shí),默認(rèn)是asc升序)
限制查詢結(jié)果數(shù)量:select 字段1[,字段2,…] from 表名 limit [偏移量,] 行數(shù);
limit接受一個(gè)或兩個(gè)數(shù)字參數(shù),參數(shù)必須是一個(gè)整數(shù)常量
第一個(gè)參數(shù)指定第一個(gè)返回記錄行的偏移量,第二個(gè)參數(shù)指定返回記錄行的最大數(shù)目
如果只給定一個(gè)參數(shù),表示返回最大的記錄行數(shù)目
初始記錄行的偏移量是0(而不是1)
分組查詢:select 字段1[,字段2,…] from 表名[ where 查詢條件] group by 分組字段1[,分組字段2,…];
將查詢結(jié)果按照一個(gè)或多個(gè)字段進(jìn)行分組,字段值相同的為一組,對(duì)每個(gè)組進(jìn)行聚合計(jì)算
分組后篩選:select 字段1[,字段2,…] from 表名[ where 查詢條件][ group by 分組字段1[,分組字段2,…]] having 篩選條件;
where與having的區(qū)別:
where子句作用于表,having子句作用于組。
where條件查詢的作用域是針對(duì)數(shù)據(jù)表進(jìn)行篩選,而having條件查詢則是對(duì)分組結(jié)果進(jìn)行過濾。
where在分組和聚合計(jì)算之前篩選行,而having 在分組和聚合之后篩選分組的行,因此where子句不能包含聚合函數(shù)。
多表查詢
通過不同表中具有相同意義的關(guān)鍵字段,將多個(gè)表進(jìn)行連接,查詢不同表中的字段信息連接方式
內(nèi)連接和外連接(左連接和右連接)
內(nèi)連接:select 字段1[,…] from 表1[ inner] join 表2 on 表1.key=表2.key;
外連接
左連接:select 字段1[,…] from 表1 left join 表2 on 表1.key=表2.key;
右連接:select 字段1[,…] from 表1 right join 表2 on 表1.key=表2.key;
多表連接的結(jié)果通過三個(gè)屬性決定
方向性:在外連接中寫在前邊的表為左表、寫在后邊的表為右表
主附關(guān)系:主表要出所有的數(shù)據(jù)范圍,附表與主表無匹配項(xiàng)時(shí)標(biāo)記為null,內(nèi)連接時(shí)無主附表之分
對(duì)應(yīng)關(guān)系:關(guān)鍵字段中有重復(fù)值的表為多表,沒有重復(fù)值的表為一表
聯(lián)合查詢
union去重:select 字段1[,字段2,…] from 表名 union select 字段1[,字段2,…] from 表名;
union all不去重: select 字段1[,字段2,…] from 表名 union all select 字段1[,字段2,…] from 表名;








暫無數(shù)據(jù)