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