一、DQL介紹 DQL全稱:Data Query Language(數據查詢語言),用來查詢資料庫中表的記錄。 關鍵字:select 二、DQL語法 select 欄位列表 from 表名列表 where 條件列表 group by 分組欄位列表 having 分組後條件列表 order by 排序 ...
一、DQL介紹
DQL全稱:Data Query Language(數據查詢語言),用來查詢資料庫中表的記錄。
關鍵字:select
二、DQL語法
select 欄位列表 from 表名列表 where 條件列表 group by 分組欄位列表 having 分組後條件列表 order by 排序欄位列表 limit 分頁參數
註意:本章節只涉及到單表查詢,多表查詢會在後面的文章中介紹
三、基本查詢
1、原始表數據
2、查詢多個欄位
語法:select 欄位1,欄位2,... from 表名 或者 select * from 表名(查詢所有數據)
查詢指定欄位
3、設置別名
語法:select 欄位1 [as 別名1], 欄位2 [as 別名2] ... from 表名;
對查詢結果設置別名
4、去重查詢
語法:select distinct 欄位列表 from 表名;
四、條件查詢
語法:select 欄位列表 from 表名 where 條件列表
運算符 | 功能 |
> | 大於 |
>= | 大於等於 |
< | 小於 |
<= | 小於等於 |
<> 或 != | 不等於 |
between ... and ... | 在某個範圍之間(包含最大值和最小值) |
in(...) | 在in之後的列表中的值,多選一 |
like 占位符 | 模糊匹配( "_" 匹配單個字元,"%"匹配任何字元) |
is null | 是null |
and 或者 && | 並且 |
or 或者 || | 或者 |
not 或者 ! | 非 |
1、查詢年齡等於18的所有人的姓名
2、查詢年齡小於21的人的姓名
3、查詢年齡大於18,小於20的
4、查詢地址不為空的人的姓名和地址信息
5、查詢年齡小於20並且地址在西安的人的姓名和地址
6、查詢地址在列表["北京","上海","廣州","深圳"]中的人的姓名和地址
五、聚合函數
1、介紹將一列數據作為一個整體,進行縱向計算
2、常見聚合函數
count:統計數量
max: 最大值
min:最小值
avg:平均值
sum:求和
3、語法
select 聚合函數(欄位列表) from 表名;
4、示例
4.1 統計table_test表中一共有多少數據
4.2 統計table_test表中年齡最大的數據
4.3 統計table_test表中年齡最小的數據
4.4 統計table_test表中年齡的平均值
4.5 統計table_test表中所有人的年齡之和
4.6 統計北京地區所有員工的年齡之和
註意:在使用聚合函數的時候,所有的null值是不參與運算的,雖然table_test表中有6個數據,但是address列有一個是null,所以統計address欄位時是5
六、分組查詢
1、語法:
select 欄位列表 from 表名 [where 條件] group by 分組欄位名 [having 分組後過濾條件]
2、where與having區別
執行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組,而having是分組之後對結果進行過濾
判斷條件不同:where不能對聚合函數進行判斷,而having可以
3、示例
3.1 統計不同地區的平均年齡,需要根據address做分組
3.2 統計各個地區的平均年齡(不統計空地區的),先使用where做條件篩選,然後再分組
3.3 統計各個地區的平均年齡(不統計空地區),並且顯示平均年齡要大於19歲的
註意:
1、執行順序:where > 聚合函數 > having
2、分組之後,查詢的欄位一般為聚合函數和分組欄位,查詢其他欄位沒有意義
七、排序查詢
1、語法:
select 欄位列表 from 表名 order by 欄位1 排序方式1, 欄位2 排序方式2;
2、排序方式
ASC:升序(預設)
DESC:降序
3、示例
3.1 table_test表中數據按照年齡升序排列
3.2 table_test 表中數據按照年齡降序排列
3.3 table_test 表中數據按照年齡降序排列,年齡一樣的,在繼續按照id降序排列
八、分頁查詢
1、語法
select 欄位列表 from 表名 limit 起始索引,查詢記錄數;
2、註意
* 其實索引從0開始,其實索引等於(查詢頁碼-1)* 每頁顯示的記錄數
* 分頁查詢是資料庫的方言,不同的資料庫有不同的實現,mysql中是limit
* 如果查詢的是第一頁,起始索引可以省略,直接寫為limit 數量
3、示例
3.1 查詢第一頁數據,每頁展示5條數據
3.2 查詢第二頁數據,每頁展示5條數據,因為每頁的數據是5條,所以第二頁的索引其實位置是(2-1)*5 = 5,第三頁的起始位置是(3-1)*5=10
又因為一共只有6條數據,所以第二頁只有一條數據可以展示
九、DQL執行順序

侯哥語錄:我曾經是一個職業教育者,現在是一個自由開發者。我希望我的分享可以和更多人一起進步。分享一段我喜歡的話給大家:"我所理解的自由不是想乾什麼就乾什麼,而是想不幹什麼就不幹什麼。當你還沒有能力說不得時候,就努力讓自己變得強大,擁有說不得權利。"