go mysql 查询数据_MySQL常用语句之查询数据-Go语言中文社区
簡單查詢:
select [distinct] *| {字段名1,字段名2,字段名3, ...}
from 表名
[where 條件表達(dá)式1]
[group by 字段名 [having 條件表達(dá)式2]]
[order by 字段名 [asc|desc]]
[limit [offset] 記錄數(shù)]
查詢所有字段有兩種方法
第一種:
在select語句中列出所有字段名來查詢表中的數(shù)據(jù),其語法格式
select 字段名1,字段名2, ... from 表名 ;
第二種:
使用星號(hào)(“*”)通配符來代替所有的字段名,其語法格式如下
select * from 表名;
按條件查詢
帶關(guān)系運(yùn)算符的查詢
在select語句中,最常見的是使用where子句指定查詢條件對(duì)數(shù)據(jù)進(jìn)行過濾,其語法格式如下
select 字段名1,字段名2, ...
from 表名
where 條件表達(dá)式 ;
常見的關(guān)系運(yùn)算符如下表所示
關(guān)系運(yùn)算符
說明
關(guān)系運(yùn)算符
說明=
等于
<=
小于等于
< >
不等于
!=
不等于
>
大 于
>=
大于等于
<
小于
例:查詢student表中g(shù)rade大于80的學(xué)生姓名。
select name, grade from student where grade > 80;
帶 in 關(guān)鍵字的查詢
in 關(guān)鍵字用于判斷某個(gè)字段的值是否在指定集合中,若字段的值在集合中,則滿足條件,該字段所在的記錄將被查詢出來。其語法格式如下
select * | 字段名1, 字段名2, ...
from 表名
where 字段名 [not] in (元素1, 元素2, ...)
說明:在上面的語法格式中,“元素1, 元素2, …”表示集合眾的元素,即指定的條件范圍。not 是可選參數(shù),使用not表示查詢不在in關(guān)鍵字指定集合范圍中的記錄。
帶between and 關(guān)鍵字的查詢
between and用于判斷某個(gè)字段的值是否在指定的范圍之內(nèi),其語法格式如下
select *|{字段名1, 字段名2, ...}
from 表名
where 字段名 [not] between 值1 and 值2 ;
說明:在上面的語法格式中,“值1”表示范圍條件的起始值,“值2”表示范圍條件的結(jié)束值,值1,值2均包含在范圍內(nèi)。not是可選參數(shù),使用not表示查詢指定范圍之外的記錄,通常情況下,“值1”小于“值2”,否則查詢不到任何結(jié)果。
空值查詢
在數(shù)據(jù)表中,某些列的值可能為空值(null),空值不同于0,也不同于空字符串。在MySQL語句中,使用 is null 關(guān)鍵字來判斷字段的值是否為空值,其語法格式如下
select *| 字段名1, 字段名2, ...
from 表名
where 字段名 is [not] null ;
帶distinct關(guān)鍵字的查詢
很多表中某些字段的數(shù)據(jù)存在重復(fù)的值。有時(shí),需要過濾掉查詢記錄中重復(fù)的值,可以使用distinct關(guān)鍵字來實(shí)現(xiàn)這種功能,其語法格式如下
select distinct 字段名 from 表名 ;
說明:“字段名”表示要過濾重復(fù)記錄的字段
select distinct 字段1,字段2,... from 表名 ;
說明:distinct關(guān)鍵字指定多個(gè)字段時(shí),distinct 必須放在最前面,只有distinct關(guān)鍵字指定的多個(gè)字段值都相同,才會(huì)被認(rèn)作是重復(fù)記錄
帶like關(guān)鍵字的查詢
like關(guān)鍵字可以判斷連個(gè)字符串是否相匹配,其語法格式如下
select *|{字段名1, 字段名2, ...}
from 表名
where 字段名 [not] like '匹配字符串' ;
說明:“匹配字符串”指定用來匹配的字符串,其值可以是一個(gè)普通字符串,也可以是包含百分號(hào)(%)和下劃線(_)的通配字符串。百分號(hào)和下劃線統(tǒng)稱為通配符。
百分號(hào)(%)通配符
百分號(hào)通配符能匹配任意長度的字符串,包括空字符串。例如,字符串“c%”匹配以字符c開始,任意長度的字符串,如“ct”、“cut”、“current”等等,字符串“w%g”匹配以字符“w”開始,以字符“g”結(jié)束,如“wang”等。
下劃線(_)通配符
下劃線通配符與百分號(hào)通配符有些不同,下劃線通配符只匹配單個(gè)字符。若要匹配多個(gè)字符,需要使用多個(gè)下劃線通配符。例如,字符串“c_”匹配以字符c開始,兩個(gè)長度的字符串,如“ct”、“cu”等等,字符串“w__g”匹配以字符“w”開始,以字符“g”結(jié)束,三個(gè)字符長度,如“wang”等。
注意:若使用多個(gè)下劃線匹配多個(gè)連續(xù)的字符,下劃線之間不能有空格
注意:若要匹配字符串中的百分號(hào)和下劃線,則使用右斜線(“”)對(duì)百分號(hào)和下劃線進(jìn)行轉(zhuǎn)義
帶and關(guān)鍵字的多條件查詢
在使用select語句中,有時(shí)為了使查詢結(jié)果更加精確,可以使用多個(gè)查詢條件,其語法格式如下
select *|{字段名1, 字段名2, ...}
from 表名
where 條件表達(dá)式1 and 條件表達(dá)式2 [... and 條件表達(dá)式n] ;
帶or關(guān)鍵字的多條件查詢
在使用or關(guān)鍵字時(shí),只要記錄滿足任意一個(gè)條件就會(huì)被查詢出來,其語法格式如下
select *|{字段名1, 字段名2, ...}
from 表名
where 條件表達(dá)式1 or 條件表達(dá)式2 [... or 條件表達(dá)式n] ;
or和and關(guān)鍵字一起使用的情況
注意:and的優(yōu)先級(jí)高于or
高級(jí)查詢
聚合函數(shù)
函數(shù)名稱
作用
函數(shù)名稱
作用count()
返回某列的行數(shù)
max()
返回某列的最大值
sum()
返回某列值的和
min()
返回某列的最小值
avg()
返回某列的平均值
以上表中的函數(shù)對(duì)一組值進(jìn)行統(tǒng)計(jì),并返回唯一值,這些函數(shù)被稱為聚合函數(shù)。
注意:count()函數(shù)實(shí)際使用時(shí),直接用count(字面量值),這樣查詢效率更高
select count (1) from student
where id<30;
對(duì)查詢結(jié)果排序
使用 order by 對(duì)查詢結(jié)果進(jìn)行排序,其語法格式如下
select 字段名1, 字段名2, ...
from 表名
order by 字段名1[asc|desc], 字段名2 [asc|desc] ...
說明:參數(shù) asc 表示按照升序進(jìn)行排序,desc表示按照降序進(jìn)行排序。默認(rèn)情況下,按照 asc 方式進(jìn)行排序。
注意:在按照指定字段進(jìn)行排序時(shí),若某條記錄的字段值為null,則這條記錄會(huì)在第一條顯示,因?yàn)?null 值被認(rèn)為是最小值
分組查詢
使用 group by 按某個(gè)字段或者多個(gè)字段中的值進(jìn)行分組,字段中值相同的為一組,其語法格式如下
select 字段名1, 字段名2, ...
from 表名
group by 字段名1, 字段名2, ... [having 條件表達(dá)式]
說明:having關(guān)鍵字指定條件表達(dá)式對(duì)分組后的內(nèi)容進(jìn)行過濾,需要注意的是,group by 一般和聚合函數(shù)一起使用。
group by 和聚合函數(shù)一起使用,可以統(tǒng)計(jì)出某個(gè)或者某些字段在一個(gè)分組中的最大值、最小值、平均值等。
例:將student表按照gender字段值進(jìn)行分組查詢,計(jì)算出每個(gè)分組中各有多少名學(xué)生。
select count(*), gender from student group by gender ;
結(jié)果說明:group by 對(duì)student表按照gender字段中的不同值進(jìn)行了分組,并通過count()函數(shù)統(tǒng)計(jì)出每個(gè)組個(gè)數(shù)。
group by 和 having關(guān)鍵字一起使用
例:將student表按照gender字段進(jìn)行分組查詢,查詢出grade字段值之和小于300的分組。
select sum(grade), gender
from student
group by gender
having sum(grade) < 300 ;
having 關(guān)鍵字和where關(guān)鍵字的異同點(diǎn)
相同點(diǎn):都用于設(shè)置條件表達(dá)式對(duì)查詢結(jié)果進(jìn)行過濾
不同點(diǎn):
having關(guān)鍵字:
having關(guān)鍵字后可以跟聚合函數(shù),通常情況下,having關(guān)鍵字都和group by 一起使用,用于對(duì)分組后的結(jié)果進(jìn)行過濾。
where關(guān)鍵字:
where關(guān)鍵字不能后跟聚合函數(shù)。
使用 limit 限制查詢結(jié)果的數(shù)量
limit關(guān)鍵字可以指定查詢結(jié)果從哪一條記錄開始以及一共查詢多少條信息,其語法格式如下
select 字段名1, 字段名2, ...
from 表名
limit [offset,]記錄數(shù)
說明:limit 后面可以跟兩個(gè)參數(shù),第一個(gè)參數(shù)“offset”表示偏移量,也就忽略掉前多少條數(shù)據(jù),若偏移量為0,則從查詢結(jié)果的第一條記錄開始;偏移量為1,則從查詢結(jié)果中的第二條記錄開始,以此類推。offset為可選值,若不指定,其默認(rèn)值為0。第二個(gè)參數(shù)“記錄數(shù)”表示返回查詢記錄的條數(shù)。常用于數(shù)據(jù)分頁。
為表和字段取別名 as 關(guān)鍵字
為表取別名的語法格式如下
select * from 表名 [as] 別名 ;
為字段取別名的語法格式如下
select 字段名 [as] 別名 [, 字段名 [as] 別名, ...] from 表名 ;
select子句順序
子句
說明
是否必須使用select
要返回的列或表示式
是
form
從中檢索數(shù)據(jù)的表
僅在從表選擇數(shù)據(jù)時(shí)使用
where
行級(jí)過濾
否
group by
分組說明
僅在按組計(jì)算聚集時(shí)使用
having
組級(jí)過濾
否
order by
輸出排序順序
否
limit
要檢索的行數(shù)
否
如圖:
總結(jié)
以上是生活随笔為你收集整理的go mysql 查询数据_MySQL常用语句之查询数据-Go语言中文社区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 对话框 位置_JAVAJOpt
- 下一篇: java jtable 监听事件_【Ja