Mysql深入學習 基礎篇 Ss.02 詳解四類SQL語句

我親愛的對手,亦敵亦友,但我同樣希望你能成功,與我一起,站在人生的山頂上

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——24.3.1

一、DDL 數據定義語言

1.DDL —— 數據庫操作

查詢

? ? ? ? 查詢所有數據庫

show databases;

? ? ? ? 查詢當前數據庫

select database();

創建

 create database [if not exists] 數據庫名 [default charset?字符集] [collate 排序規則];

刪除

 drop database [if exists] 數據庫名;

使用

use 數據庫名;

2.DDL —— 表操作?—— 查詢

前提是進入一個數據庫

use 數據庫名;

查詢當前數據庫所有表

show tables;

查詢表結構

desc 表名;

查詢指定表的建表語句

show create table 表名;

3.DDL —— 表操作 —— 創建?

create table 表名(字段1 字段1類型 [comment 字段1的注釋],字段2 字段2類型 [comment 字段2的注釋],字段3 字段3類型 [comment 字段3的注釋],…… ……字段n 字段n類型 [comment 字段n的注釋]
)[comment 表的注釋];

注意:[……]為可選參數,最后一個字段后面沒有逗號

例:

4.DDL —— 表操作 —— 數據類型

MySQL中的數據類型有很多,主要分為三類:數值類型、字符串類型、日期時間類型

數值類型

字符串類型

char性能好,varchar性能較差

日期時間類型

5.DDL —— 表操作 —— 修改

添加字段

alter table 表名 add 字段名 類型(長度) [comment 注釋][約束];

修改數據類型?

alter table 表名 modify 字段名 新數據類型(長度);

修改字段名和字段類型

alter table 表名 change 舊字段名 新字段名 類型(長度) [comment 注釋] [約束];

刪除字段

alter table 表名 drop 字段名;

修改表名

alter table 表名 rename to 新表名;

6.DDL —— 表操作 —— 刪除?

刪除表

drop table [if exists] 表名;

刪除指定表,并重新創建該表

truncate table 表名;

?7.DDL 數據定義語言 總結

二、DML?數據操縱語言

DML語言是數據操作語言,用來對數據庫中表的數據記錄進行增刪改操作

添加數據(insert)

修改數據(update)

刪除數據(delete)

1.DML —— 添加數據

1.給指定字段添加數據

insert into 表名 (字段名1,字段名2,……) values (值1,值2,……);

2.給全部字段添加數據,值與字段相對應起來

insert into 表名 values (值1,值2,……);

3.批量添加數據

insert into 表名 (字段名1,字段名2,……) values (值1,值2,……),(值1,值2,……),(值1,值2,……);insert into 表名 values (值1,值2,……),(值1,值2,……),(值1,值2,……);

注意:

? ? ? ? 插入數據時,指定的字段順序需要與值的順序一一對應

? ? ? ? 字符串和日期型數據應該包含在引號中

? ? ? ? 插入的數據大小,應該在字段的規定范圍之內

2.DML —— 修改數據

update 表名 set 字段名 = 值1,字段名2 = 值2,… [where 條件];

注意:修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所有數據

3.DML —— 刪除數據

delete from 表名 [where 條件]

注意:

? ? ? ? delete語句的條件可以有,也可以沒有,如果沒有條件,則會刪除整張表的所有數據

? ? ? ? delete語句不能刪除某一字段的值(可以使用update修改字符值為null)

4.DML 數據操縱語言 總結

?三、DQL 數據查詢語言

1.DQL ——?語法

?2.DQL —— 基本查詢

1.查詢多個字段

select 字段1,字段2,字段3… from 表名;
select * from 表名;

2.設置別名

select 字段1 [as 別名1],字段2[as 別名2] … from 表名;

as 可省略

3.去除重復記錄

select distinct 字段列表 from 表名;

3.DQL —— 條件查詢(where)

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

?4.條件查詢中的條件

between后跟最小值,and后跟最大值

可以用in(選項)來替代or關鍵字

下劃線匹配單個字符,%匹配任意數量字符

4.DQL —— 聚合函數(count、max、min、avg、sum)

1.介紹

? ? ? ? 將一列數據作為一個整體,進行縱向計算

2.常見聚合函數

? ? ? ? count? ? ? ? ? ? ? ? 統計數量

? ? ? ? max? ? ? ? ? ? ? ? ? 最大值

? ? ? ? min? ? ? ? ? ? ? ? ? ?最小值

? ? ? ? avg? ? ? ? ? ? ? ? ? ?平均值

? ? ? ? sum? ? ? ? ? ? ? ? ? 求和

聚合函數作用于某一列數據

3.語法

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

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

4.案例

5.DQL —— 分組查詢(group by)

1.語法

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

2.where 與 having的區別

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

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

3.案例

在分組查詢后一般查詢展示的字段是分組之后的字段和聚合函數

?6.DQL —— 排序查詢(order by)

1.語法

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

2.排序方式

????????asc:升序(默認值)

? ? ? ? desc:降序

注意:如果是多字段排序,當第一個字段值相同時,才會根據第二個字段進行排序

3.案例

7.DQL —— 分頁查詢(limit)

1.語法

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

注意:

? ? ? ? 起始索引從0開始,起始索引 = (查詢頁碼 - 1)* 每頁顯示記錄數

? ? ? ? 分頁查詢是數據庫的方言,不同數據庫有不同的實現,mysql中是limit

? ? ? ? 如果查詢的是第一頁數據,起始索引可以省略,直接簡寫為limit 10

2.案例

8.DQL —— 案例?

1.耷詢年齡為20,21,22,23歲的女性員工信息。

select * from emp where age in(20,21,22,23) and gender = '女';

2.查詢性別為 男,并且年齡在 20-40 歲(含)以內的姓名為三個字的員工。

select * from emp where age between 20 and 40 and gender = '男' and name like '___';

3.統計員工表中,年齡小于60歲的 ,男性員工和女性員工的人數。

select gender,count(*)?from emp where age < 60 group by gender;

4.查詢所有年齡小于等于35歲員工的姓名和年齡,并對査詢結果按年齡升序排序,如果年齡相同按入職時間降序排序。

select name,age from emp where age <= 35 order by age asc,entrydate desc;

5.查詢性別為男,且年齡在20-40 歲(含)以內的前5個員工信息,對査詢的結果按年齡升序排序,年齡相同按入職時間升序排序。

select * from emp where gender = '男' and age between 20 and 40 order by age asc,entrydate asc limit 5;

9.DQL —— 執行順序?

10.DQL —— 總結

四、DCL 數據控制語言

管理數據庫用戶

控制用戶對數據庫的訪問權限

1.DCL —— 管理用戶

1.查詢用戶

use mysql;select * from user;

2.創建用戶

create user '用戶名' @ '主機名' identified by ’密碼‘;

3.修改用戶密碼

alter user '用戶名' @ '主機名' identified with mysql_native_password by '新密碼';

4.刪除用戶

drop user '用戶名' @ '主機名';

?注意:

? ? ? ? 主機名可以用%通配

? ? ? ? 這類SQL開發人員操作較少,主要是由DBA(數據庫管理員)使用

2.DCL —— 權限控制

1.權限列表

2.查詢權限

show grants for '用戶名'@'主機名';

3.授予權限

grant 權限列表 on 數據庫名.表名 to '用戶名'@'主機名';

4.撤銷權限

remoke 權限列表 on 數據庫名.表名 from '用戶名'@'主機名';

5.案例

注意:

? ? ? ? 多個權限之間,使用逗號分割

? ? ? ? 授權時,數據庫名和表名可以使用* 進行通配,代表所有

3.總結

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

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

相關文章

【簡說八股】Nginx、GateWay、Ribbon有什么區別?

前言 在現代的微服務架構中&#xff0c;Nginx、Gateway 和 Ribbon 都是處理網絡請求和服務的組件&#xff0c;但它們各自扮演的角色和提供的功能有所不同。下面我將詳細解釋它們之間的區別&#xff1a; Nginx Nginx 是一個高性能的 HTTP 和反向代理服務器&#xff0c;它也可…

Golang Vs Java:為您的下一個項目選擇正確的工具

Java 首次出現在 1995 年&#xff0c;由 James Gosling 和 Sun Microsystems 的其他人開發的一種新編程語言。從那時起&#xff0c;Java 已成為世界上最受歡迎和廣泛使用的編程語言之一。Java 的主要特點包括其面向對象的設計、健壯性、平臺獨立性、自動內存管理以及廣泛的內置…

MSMFN

CDFI是彩色多普勒血流成像 輔助信息 作者未提供數據

Codeforces Round 930 (Div. 2)

substr時間復雜度O&#xff08;N&#xff09;&#xff0c;不能一遍遍找&#xff0c;會超時 #include<iostream> #include<algorithm> #include<vector> #include<map> using namespace std; const int N5e510; map<string,int>mp; vector<…

[C++]AVL樹怎么轉

AVL樹是啥 一提到AVL樹&#xff0c;腦子里不是旋了&#xff0c;就是懸了。 AVL樹之所以難&#xff0c;并不是因為結構難以理解&#xff0c;而是因為他的旋轉。 AVL樹定義 平衡因子&#xff1a;對于一顆二叉樹&#xff0c;某節點的左右子樹高度之差&#xff0c;就是該節點的…

5、云原生安全之falco的規則解讀(部分)(上)

文章目錄 1、自定義規則測試1.1、自定義檢測定時任務的規則2、自帶規則詳解部分2.1、意外的出站連接源(類似的還有入站連接)2.2、檢測目錄穿越攻擊2.3、rpm數據庫被修改2.4、數據庫派生新的進程2.5、特權容器啟動2.6、啟動容器掛載到敏感路徑2.7、匹配所有在pod內啟動、并連接…

音視頻數字化(數字與模擬-照相機)

目錄 1、模擬/數字 2、第一臺照相機 3、照相機原理 4、取景方式 5、底片 6、數碼相機 7、數碼相機指標 8、數碼相機分類 (1)單反相機 (2)單電相機 (3)無反相機

2024.03.02藍橋云課筆記

1.scanf與printf取消分隔符的限制方法 示例代碼&#xff1a; int main() { char s[10];scanf("%d[^\n]",s);printf("%s",s);return 0; } 運行&#xff1a; 輸入&#xff1a;Hello World 輸出&#xff1a;Hello World 注&#xff1a;其中[]中是一個正則…

(UE4升級UE5)Selected Level Actor節點升級到UE5

本問所用工具為&#xff1a;AssetDeveTool虛幻開發常用工具https://gf.bilibili.com/item/detail/1104960041 在UE4中 編輯器藍圖有個節點為 Get Selected Level Actors 但在UE5中&#xff0c;藍圖直接升級后&#xff0c;節點失效&#xff0c;如圖&#xff1a; 因為在UE5中&am…

Vue3中Vuex狀態管理庫學習筆記

1.什么是狀態管理 在開發中&#xff0c;我們會的應用程序需要處理各種各樣的數據&#xff0c;這些數據需要保存在我們應用程序的某個位置&#xff0c;對于這些數據的管理我們就稱之為狀態管理。 在之前我們如何管理自己的狀態呢&#xff1f; 在Vue開發中&#xff0c;我們使用…

大廠面試經驗:如何對加密后的數據進行模糊查詢操作

加密后的數據對模糊查詢不是很友好&#xff0c;本篇就針對加密數據模糊查詢這個問題來展開講一講實現的思路。 為了數據安全我們在開發過程中經常會對重要的數據進行加密存儲&#xff0c;常見的有&#xff1a;密碼、手機號、電話號碼、詳細地址、銀行卡號、信用卡驗證碼等信息…

YoloV5改進策略:主干網絡改進|MogaNet——高效的多階門控聚合網絡

文章目錄 摘要論文:《MogaNet——高效的多階門控聚合網絡》1、簡介2、相關工作2.1、視覺Transformers2.2、ViT時代的卷積網絡3、從多階博弈論交互的角度看表示瓶頸4、方法論4.1、MogaNet概述4.2、多階門控聚合4.3、通過通道聚合進行多階特征重新分配4.4、實現細節5、實驗5.1、…

Vue 3 中的 setup 函數是如何工作的?

Vue 3 中的 setup 函數是一個新的組件選項&#xff0c;用于使用組合式 API 定義組件的邏輯。這個函數的引入是為了解決 Vue 2 中隨著組件復雜度的增長&#xff0c;選項式的 API 可能導致代碼難以維護和理解的問題。通過 setup 函數&#xff0c;開發者可以更加靈活地組織和共享代…

Python光速入門 - Flask輕量級框架

FlASK是一個輕量級的WSGI Web應用程序框架&#xff0c;Flask的核心包括Werkzeug工具箱和Jinja2模板引擎&#xff0c;它沒有默認使用的數據庫或窗體驗證工具&#xff0c;這意味著用戶可以根據自己的需求選擇不同的數據庫和驗證工具。Flask的設計理念是保持核心簡單&#xff0c…

布隆過濾器實戰

一、背景 本篇文章以解決實際需求的問題的角度進行切入&#xff0c;探討了如果使用布隆過濾器快速丟棄無效請求&#xff0c;降低了系統的負載以及不必要的流量。 我們都知道布隆過濾器是以占用內存小&#xff0c;同時也能夠實現快速的過濾從而滿足我們的需求&#xff0c;本篇…

Matlab偏微分方程擬合 | 源碼分享 | 視頻教程

專欄導讀 作者簡介&#xff1a;工學博士&#xff0c;高級工程師&#xff0c;專注于工業軟件算法研究本文已收錄于專欄&#xff1a;《復雜函數擬合案例分享》本專欄旨在提供 1.以案例的形式講解各類復雜函數擬合的程序實現方法&#xff0c;并提供所有案例完整源碼&#xff1b;2.…

反編譯代碼格式處理

反編譯代碼格式處理 背景解決方案程序跑之后idea格式化 總結 背景 想看看公司里一個工具的代碼實現&#xff0c;手里只有一個jar包&#xff0c;只能通過jd-gui反編譯代碼。但是呢&#xff0c;源碼是有了&#xff0c;但是看的很難受。 解決方案 /*** 替換 {code searchDir}中…

LeetCode 100231.超過閾值的最少操作數 I

給你一個下標從 0 開始的整數數組 nums 和一個整數 k 。 一次操作中&#xff0c;你可以刪除 nums 中的最小元素。 你需要使數組中的所有元素都大于或等于 k &#xff0c;請你返回需要的 最少 操作次數。 示例 1&#xff1a; 輸入&#xff1a;nums [2,11,10,1,3], k 10 輸…

Linux課程四課---Linux開發環境的使用(自動化構建工具-make/Makefile的相關)

作者前言 &#x1f382; ??????&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ?&#x1f382; 作者介紹&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

用Java語言創建的Spring Boot項目中,如何傳遞數組呢??

問題&#xff1a; 用Java語言創建的Spring Boot項目中&#xff0c;如何傳遞數組呢&#xff1f;&#xff1f; 在這個思路中&#xff0c;其實&#xff0c;Java作為一個后端開發的語言&#xff0c;沒必要著重于如何傳入&#xff0c;我們主要做的便是對傳入的數組數據進行處理即可…