第一章 簡單查詢
1.1、select陳述句
mysql 中查詢資料的基本陳述句是select陳述句,
語法:
select [distinct] 欄位1,欄位2,欄位3.....
from 表名
[where 條件運算式]
[group by 欄位名]
[having 條件運算式]
[order by 欄位名 [asc|desc]]
[limit 偏移量]
distinct:剔除重復資料
[]:可選項
[where 條件運算式] :用于條件判斷
[group by 欄位名] : 用于分組
[having 條件運算式] : 與 group by 連用,用于判斷
[order by 欄位名 [asc|desc]] : 排序,asc:默認的,升序;desc:降序
[limit ] : 分頁
順序按照上述語法執行,
1.2、查詢所有欄位
查詢所有欄位有兩種方式:
-
通過 列出所有欄位名
-
例如現在需要查詢 book 表中資料
-
select bid,bname,author from book;

-
-
通過 *
-
同樣查詢 book 表中資料
-
select * from book;
-
一般情況下,除非需要使用表中的所有欄位的資料,否則最好不要使用 * ,雖然可以節省輸入查詢陳述句的時間,但是由于獲取的資料多,會導致降低查詢效率
1.3、查詢指定欄位
語法:
select 需要的欄位名 from 表名;
例查詢 book 表中的書名 與 作者:
select author,bname from book;

第二章 條件查詢
由于資料庫中有大量的資料,很多時候需要根據需求來獲取指定的資料,或者對查詢的資料重新進行排列組合,這時就需要在查詢陳述句中添加條件來篩選,
語法:
select 欄位名.....
from 表名
where 條件判斷
where 中的條件判斷是指 select 陳述句中的查詢條件,查詢條件可以為如下示:
2.1、關系運算子
mysql 中常見的關系運算子如下:
| 關系運算子 | 說明 | 關系運算子 | 說明 |
|---|---|---|---|
| = | 等于 | <= | 小于等于 |
| <> | 不等于 | >= | 大于等于 |
| != | 不等于 | > | 大于 |
| < | 小于 |
其中 <> 與 != 是等價的.
案例操作:
#查詢 sid 為 4 的學生姓名
select sname from score where sid=4;

其余操作類似,
2.2、in關鍵字
用于判斷某個欄位的值是否在指定集合中
語法:
select 欄位 from 表名 where 欄位名 [not] In (值1,值2,值3.....)
[not] :可選引數,表示不在
案例操作:查詢 sid 為 1,2,4 的學生姓名
select sid,sname from score where sid in (1,2,4);

2.3、between and
between and 用于判斷某個欄位是否在指定范圍內
語法:
select *|欄位
from 表
where 欄位名 [not] between 值1 and 值2
值1:起始值
值2:結束值
相當于:[值1,值2]
案例操作:查詢 sid 在[2,5]的學生資訊
select sid,sname from score where sid between 2 and 5;

2.4、空值查詢
在資料庫中,有些列可能為空值,空值不是0,也不是空字串,在 mysql 使用 is null 來判斷欄位是否為空
語法:
select *|欄位
from 表
where 欄位名 is [not] null;
2.5、distinct
用于剔除查詢結果中重復資料
語法:
select distinct 欄位
from
where
當 distinct 后面欄位有多個時,只有欄位值相同,才會被認為是重復的記錄,也就是說在多欄位下,欄位中需要有重復值,disinct才會生效,
2.6、like
模糊查詢,
當需要對字串進行不確定查詢使用
語法:
select *|欄位
from 表
where 欄位名 [not] like '匹配字串';
匹配字串可通過通配符來使用:
%:可以匹配任意多個字符
_ :只能匹配一個字符
例如:查詢姓名含有 a 的員工資訊
select * from emp where name like '%a%';
查詢姓名第二個為 a 的員工
select * from emp where name like '%_a%';
2.7、and 多條件查詢
用于連接兩個查詢條件
語法:
select *|欄位
from 表
where 條件運算式 1 and 條件運算式2 [and ...];
例如:查詢 sid 小于 4 且 成績為 大于 60的學生
select sname
from score
where sid < 4 and grade > 60;
2.8、or 多條件查詢
作用與 and 差不多,只不過條件滿足其一即可
語法:
select *|欄位
from 表
where 條件運算式 1 or 條件運算式2 [or ...];
例如:查詢學生表中名字以 h 開頭,或者性別為 女 或者 成績為 100 的學生
select id,name,grade,gender
from student
where name like 'h%' or gender = '女' or grade=100;
當 or 與 and 一起連用時,因為 and 優先級大于 or,所以會先 and 再 or
第三章 高級查詢
3.1、聚合函式
常見聚集函式有:
| 函式名稱 | 作用 | 函式名稱 | 作用 |
|---|---|---|---|
| COUNT() | 回傳總行數 | MAX() | 回傳某列的最大值 |
| SUM() | 回傳某列的和 | MIN() | 回傳某列的最小值 |
| AVG() | 回傳某列的平均值 |
可與 select 查詢結合使用
3.1.1、count()
可用來統計記錄的條數
語法:
select count( * | 某列) from 表名;
對于列我們可以通過 * 來代替所有列,
3.1.2、SUM()
求出表中某欄位所有值的總和,
語法:
select sum(欄位名) from 表名;
其余操作與上述相同,
3.2、排序
當對表中的資料查詢后結果可能是無序的或排序不是需求的理想結果,這時可使用 order by 來進行查詢結果排序,
語法:
select 欄位名1,欄位名2.........
from 表名
order by 欄位1 [ASC|DESC],欄位2 [asc|desc].......
asc:默認的,升序
desc:降序
3.3、分組查詢
在對表進行統計時,需要按照一定的類別來進行統計,這時可通過 group by 來進行分組.
語法:
select 欄位名1,欄位名2.........
from 表名
group by 欄位1 ,欄位2 .......
[having 條件判斷]
having:對分組后的內容進行過濾,常與 group by 一起使用
如果 查詢欄位出現在 group by 后,卻沒有包含在聚合函式中,該欄位顯示的是分組后的第一條記錄的值,這樣可能導致查詢結果不符合預期,
3.4、limit
查詢資料時,可能會回傳多條記錄,而用戶需求可能只有其中部分,比如分頁功能,每頁顯示 10 條資訊,每次查詢就只需查詢出 10條記錄即可,
這時可使用 limit 來實作上述功能.
語法:
select 欄位名1,欄位名2.........
from 表名
limit 偏移量 記錄數;
偏移量:可選項,不指定,則默認為 0,當其值為 0 時:表示從查詢結果中的第一條記錄開始,當其值為 1 :表示從查詢結果中第二條開始,以此類推,
記錄數:表示回傳查詢的條數
第四章 別名
4.1、表別名
語法:
select 欄位名 from 表名 [as] 別名;
4.2、欄位別名
語法:
select 欄位名 [as] 別名 from 表名 [as] 別名;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/552638.html
標籤:其他
上一篇:PostgreSQL一站式插件推薦 -- pg_enterprise_views
下一篇:返回列表
