DQL(數據查詢)

目錄

1. DQL概念

2.?DQL - 編寫順序

3. 基礎查詢

3.1?查詢多個字段

3.2 字段設置別名

3.3?去除重復記錄

3.4?案例

4. 條件查詢?

4.1 語法

4.2 條件

4.3 案例:

5. 聚合函數

5.1 常見的聚合函數:

5.2 語法

5.3 案例:

6. 分組查詢

6.1 語法

6.2 案例

7. 排序查詢

7.1 語法

7.2 排序方式

7.3 案例?

8. 分頁查詢

8.1 語法

8.2 案例

9. 執行順序

1. DQL概念

DQL英文全稱是Data Query Language(數據查詢語言),數據查詢語言,用來查詢數據庫中表的記錄。

查詢關鍵字: select

在一個正常的業務系統中,查詢操作的頻次是要遠高于增刪改的,當我們去訪問企業官網、電商網站,在這些網站中我們所看到的數據,實際都是需要從數據庫中查詢并展示的。而且在查詢的過程中,可能還會涉及到條件、排序、分頁等操作。

2.?DQL - 編寫順序

  1. select? 字段列表

  2. from? ?表名列表

  3. where? 條件列表

  4. group BY? 分組字段列表

  5. having? 分組后條件列表

  6. order?BY? 排序字段列表

  7. limit??分頁參數

3. 基礎查詢

在基本查詢的DQL語句中,不帶任何的查詢條件,查詢的語法如下:

3.1?查詢多個字段
  • select? 字段1, 字段2, 字段3 ... from 表名 ;
  • select? * from 表名 ;

注意 : * 號代表查詢所有字段,在實際開發中盡量少用(不直觀、影響效率)。

3.2 字段設置別名
  • select? 字段1 [ as?別名1 ] , 字段2 [ as?別名2 ] ... from 表名;
  • select? 字段1 [ 別名1 ] , 字段2 [ 別名2 ] ... from 表名;
3.3?去除重復記錄

select? distinct 字段列表 from 表名;

3.4?案例
-- ------------------------------------------------------------------基礎查詢
# 查詢name, workno, age
select name, workno, age from emp;# 查詢所有數據
select * from emp;# 將ID=3的名字修改為張飛
update emp set name = '張飛' where id = 3;# 查詢workaddress
select workaddress from emp;# 修改別名
select workaddress as '工作地址' from emp;
select workaddress '工作地址' from emp;# 去重
select distinct workaddress '工作地址' from emp;# 修改表中wordaddress為workaddress
alter table emp change wordaddress workaddress varchar(50) comment '工作地址';

4. 條件查詢?

4.1 語法

select 字段列表 from 表名 where 條件列表 ;

4.2 條件

常用的比較運算符如下:

比較運算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
between... and...在某個范圍之內(含最小、最大值)
in(...)在in之后的列表中的值,多選一
like占位符模糊匹配(_匹配單個字符, %匹配任意個字符)
is NULL是NULL

常用的邏輯運算符如下:

邏輯運算符功能
and 或 &&并且 (多個條件同時成立)
or 或 ||或者 (多個條件任意一個成立)
not 或 !非 , 不是
4.3 案例:
-- ------------------------------------------------------------------條件查詢
# 查詢年齡不等于18
select * from emp where age != 18;
select * from emp where age <> 18;# 查詢年齡小于40
select * from emp where age <= 40;# 查詢idcard不空值的數據
select * from emp where idcard is not null;# 查詢idcard是空值的數據
select * from emp where idcard is null;# 設置16行idcard為空值
update emp set idcard = null where id = 16;
update emp set idcard = '12345678998765432x' where id = 13;# 查詢年齡在30到50之間
select * from emp where age >= 30 && age <= 50;
select * from emp where age >= 30 and age <= 50;
select * from emp where age between 30 and 50;# between接最小值,and接最大值
select * from emp where age between 50 and 30;# 查詢性別女,且在蜀國的數據
select * from emp where gender = '女' and workaddress = '蜀國';# 查詢年齡等于18或等于30或等于40
select * from emp where age = 18 or age = 30 or age = 40;
select * from emp where age in(18, 30, 40);# 查詢名字為三個字的名字
select * from emp where name  like '___';# 查找idcard的最后一位為x
select * from emp where idcard  like '%X';

5. 聚合函數

介紹:將一列數據作為一個整體,進行縱向計算 。

5.1 常見的聚合函數:
函數功能
count統計數量
max最大值
min最小值
avg平均值
sum求和
5.2 語法

select? 聚合函數(字段列表)? from 表名 ;

注意 : NULL值是不參與所有聚合函數運算的。

5.3 案例:
-- ------------------------------------------------------------------聚合函數
# 統計所有數量
select count(*) from emp;
select count(id)  from emp;# 統計所有人平均年齡
select avg(age) from emp;# 統計最大年齡
select max(age) from emp;# 統計最小年齡
select min(age) from emp;# 統計蜀國將領人員的年齡之和
select sum(age) from emp where workaddress = '蜀國';

6. 分組查詢

6.1 語法

select 字段列表 from 表名 [ where 條件 ] group by 分組字段名 [ having 分組后過濾條件 ];

where與having區別:

執行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組;而having是分組之后對結果進行過濾。

判斷條件不同:where不能對聚合函數進行判斷,而having可以。

6.2 案例
-- ------------------------------------------------------------------分組查詢
# 根據性別分組,統計男性和女性的分組
select gender, count(*) from emp group by gender;# 根據性別分組,統計男性員工和女性員工的平均年齡
select gender, avg(age) from emp group by gender;# 查詢年齡小于45的人員數量,并且根據工作地址分組,獲取人員數量大于等于3的工作地址
select workaddress, count(*) from emp where age < 45 group by workaddress having count(*) >= 3;
# 起別名
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

注意事項:

  • 分組之后,查詢的字段一般為聚合函數和分組字段,查詢其他字段無任何意義。
  • 執行順序: where > 聚合函數 > having 。
  • 支持多字段分組, 具體語法為 : group by columnA,columnB

7. 排序查詢

7.1 語法

select 字段列表 from 表名 order by 字段1 排序方式1 , 字段2 排序方式2 ;

7.2 排序方式
  1. ASC : 升序(默認值)
  2. DESC: 降序
7.3 案例?
-- ------------------------------------------------------------------排序查詢
# 根據年齡升序排序
select * from emp order by age asc;
# asc可省略
select * from emp order by age;# 根據年齡升序降序
select * from emp order by age desc;# 修改入職時間
update emp set entrydate = '1990-02-03' where id = 4;
update emp set entrydate = '1993-12-03' where id = 6;
update emp set entrydate = '1993-05-03' where id = 8;
update emp set entrydate = '1909-02-03' where id = 11;# 根據入職時間做降序排序
select * from emp order by entrydate desc;# 根據年齡升序,年齡相同再按照入職時間降序排序
select * from emp order by age, entrydate desc;

注意事項:

  • 如果是升序, 可以不指定排序方式ASC ;
  • 如果是多字段排序,當第一個字段值相同時,才會根據第二個字段進行排序 ;

8. 分頁查詢

8.1 語法

select??字段列表 from 表名 limit?起始索引, 查詢記錄數 ;

8.2 案例
-- ------------------------------------------------------------------分頁查詢
# 查詢第1頁人員數據,根據展示5條記錄
select * from emp limit 0, 5;
# 查詢首頁0可以省略
select * from emp limit 5;# 查詢第3頁人員數據,根據展示5條記錄(頁碼-1*頁碼展示記錄數)
select * from emp limit 10,5;

注意事項:

  • 起始索引從0開始,起始索引 = (查詢頁碼 - 1)* 每頁顯示記錄數。
  • 分頁查詢是數據庫的方言,不同的數據庫有不同的實現,MySQL中是limit。
  • 如果查詢的是第一頁數據,起始索引可以省略,直接簡寫為 limit 10。

9. 執行順序

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15155.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15155.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15155.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VScode SSH連接遠程服務器報錯

一、報錯 通過VScode SSH插件遠程連接服務器&#xff0c;輸入密碼后沒有連接成功&#xff0c;一直跳出輸入密碼界面&#xff0c;在輸出界面里&#xff0c;一直是Waiting for server log或者是顯示Cannot not find minimist 二、處理 &#x1f431;&#xff1a; 這個時候應該…

力扣每日一題 5/25

題目&#xff1a; 給你一個下標從 0 開始、長度為 n 的整數數組 nums &#xff0c;以及整數 indexDifference 和整數 valueDifference 。 你的任務是從范圍 [0, n - 1] 內找出 2 個滿足下述所有條件的下標 i 和 j &#xff1a; abs(i - j) > indexDifference 且abs(nums…

CTF網絡安全大賽web題目:字符?正則?

題目來源于&#xff1a;bugku 題目難度&#xff1a;難 題目描  述: 字符&#xff1f;正則&#xff1f; 題目htmnl源代碼&#xff1a; <code><span style"color: #000000"> <span style"color: #0000BB"><?php <br />highl…

C-數據結構-鏈式存儲棧(二次封裝)

/* 二次封裝 借用已經實現雙向鏈表結構來實現 棧 出棧入棧操作類似于 從頭節點開始的插入和刪除 */ llist.h #ifndef LLIST_H__ #define LLSIT_H__ #define LLIST_FORWARD 1 #definr LLIST_BACKWARD 2 typedef void llist_op(const void *);//回調函數 typedef int llist_cmp…

分組排序取最大sql理解

分組排序取最大sql理解 --用戶過濾&#xff08;只能看到當前用戶對應部門用戶權限表中的部門&#xff09; select h.pk_tbdept from jygyl_bmyhqxb h left join jygyl_bmyhqxb_b b on h.pk_bmyhqx b.pk_bmyhqx where isnull(h.dr,0) 0 and isnull(b.dr,0) 0 and b.pk…

類圖的六大關系

類圖中的六大關系包括&#xff1a;繼承關系、實現關系、關聯關系、聚合關系、組合關系和依賴關系。 1. 繼承關系 繼承是一種類與類之間的關系&#xff0c;表示一種泛化和特化的關系。子類繼承父類的特性和行為。 class Animal {void eat() {System.out.println("This an…

TensorFlow.js

什么是 TensorFlow.js&#xff1f; TensorFlow.js 是一個基于 JavaScript 的機器學習庫&#xff0c;它是 Google 開發的 TensorFlow 的 JavaScript 版本。它使得開發者能夠在瀏覽器中直接運行機器學習模型&#xff0c;而不需要依賴于后端服務器或云服務。TensorFlow.js 的主要…

【JavaEE 初階(十)】JVM

?博主主頁: 33的博客? ??文章專欄分類:JavaEE?? &#x1f69a;我的代碼倉庫: 33的代碼倉庫&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;關注我帶你了解更多進階知識 目錄 1.前言2.JVM內存區域劃分3.類加載3.1雙親委派模型 4.垃圾回收&#xff08;GC&#xff0…

【智能優化算法】粒子群優化算法(PSO)【附python實現代碼】

寫在前面&#xff1a; 首先感謝兄弟們的訂閱&#xff0c;讓我有創作的動力&#xff0c;在創作過程我會盡最大能力&#xff0c;保證作品的質量&#xff0c;如果有問題&#xff0c;可以私信我&#xff0c;讓我們攜手共進&#xff0c;共創輝煌。 路雖遠&#xff0c;行則將至&#…

【軟件設計師】下午題總結-數據流圖、數據庫、統一建模語言

下午題總結 1 試題一1.1 結構化語言 2 試題二弱實體增加權限增加實體間聯系和聯系的類型 3 試題三3.1 UML關系例子 3.2 例子&#xff08;2016上半年&#xff09;3.3 設計類分類3.3.1 接口類3.3.2 控制類3.3.3 實體類 3.4 簡答題3.4.1 簡要說明選擇候選類的原則3.4.2 某個類必須…

Kafka SSL認證

證書生成 在kafka安裝目錄下/certificates生成keystore和trust文件&#xff0c;在其中一臺機器聲生成證書&#xff0c;然后將 生成的server.keystore.jks和server.truststore.jks文件拷貝其他broker節點上去即可 1.生成keystore [rootm1 certificates]# keytool -keystore se…

Mantine UI:簡潔、靈活的 React UI 庫

介紹 Mantine UI Mantine UI 是一個由 React 驅動的現代 UI 庫&#xff0c;旨在簡化開發人員構建用戶界面的過程。它提供了一系列經過優化和可訪問的組件&#xff0c;適用于各種項目&#xff0c;從簡單的網站到復雜的應用程序。Mantine UI 的特點包括&#xff1a; 可定制性&a…

Android-okhttp調接口傳參簡單舉例

步驟1&#xff1a;在主線程中創建thread調接口 new Thread(new Runnable() {Overridepublic void run() {getServiceList();}}).start();步驟2&#xff1a;okhttp調接口 private void getServiceList(){Message msg new Message();try{OkHttpClient okHttpClient new OkHttp…

【網絡安全】網絡安全協議的重要性

一.網絡安全 1.什么是網絡安全 網絡安全&#xff08;Cyber Security&#xff09;是指網絡系統的硬件、軟件及其系統中的數據受到保護&#xff0c;不因偶然的或者惡意的原因而遭受到破壞、更改、泄露&#xff0c;系統連續可靠正常地運行&#xff0c;網絡服務不中斷。 2.網絡安…

WPF密碼輸入框明文掩碼切換

1&#xff0c;效果 2&#xff0c;代碼&#xff1a; WPF的PasswordBox不能像Winform中的PasswordBox那樣&#xff0c;通過PasswordBox.PasswordChar(char)0顯示明文。所以這里使用無外觀控件構筑掩碼明文切換。 無外觀控件遵守Themes/Generic.xaml文件配置. <ResourceDicti…

視覺檢測實戰項目——九點標定

本文介紹九點標定方法 已知 9 個點的圖像坐標和對應的機械坐標,直接計算轉換矩陣,核心原理即最小二乘擬合 {??′=????+????+????′=??′??+??′??+??′ [??1??11??2??21?????9??91][????′????′????′]=[??1′??…

[Linux]磁盤管理

一.Linux磁盤管理的原理 磁盤分區與Linux的目錄是借助"掛載機制"鏈接的&#xff0c;將一個分區與一個目錄連接起來。訪問目錄&#xff0c;相當于訪問某塊分區 lsblk命令: lsblk命令可以查看磁盤分區&#xff0c;以及每個分區所掛載的目錄 lsblk -f 可以查看更細節的…

山東大學軟件學院項目實訓-創新實訓-基于大模型的旅游平臺(十九)- JUC(5)

synchronized優化原理 輕量級鎖 如果一個對象有多個線程訪問&#xff0c;但多線程訪問的時間是錯開的&#xff08;沒有競爭&#xff09;&#xff0c;可以用輕量級鎖優化 Slf4j(topic "c.ExerciseTransfer")public class Test {?static final Object obj new Obj…

關于陽光雨露外派聯想的面試感想

最近在找工作&#xff0c;接到了一個陽光雨露外派聯想的面試邀請。說實在的一開始就有不對勁的感覺。想必這就是大廠的自信吧&#xff0c;上就問能不能現場面試&#xff0c;然后直接發面試邀請。這時候我倒是沒覺得有啥問題。 然后今天就去面試去了&#xff0c;住的比較偏&…

【研發日記】【策劃向】(一)游戲策劃其實就是一道加減法題

文章目錄 序設計的過程其實是控制自己欲望的過程我海納百川&#xff0c;你要不要看看&#xff1f;我跟別人不一樣&#xff01;我的人設就是沒有人設&#xff0c;或者說任何人設都是我的人設 記 序 不知不覺進入這個行業幾年了&#xff0c;也經歷了獨立開發和團隊開發的過程。在…