首頁  >  文章  >  專題  >  MySQL基本使用(二)之DCL語句與聚合函數

MySQL基本使用(二)之DCL語句與聚合函數

coldplay.xixi
coldplay.xixi轉載
2020-09-05 17:14:162395瀏覽

MySQL基本使用(二)之DCL語句與聚合函數

【相關學習推薦:#mysql教學##(影片)】

DCL

DCL 比較簡單,主要用於授予或收回存取資料庫的權限,以及資料庫事務的提交和回滾。

授予/收回權限

以授予權限為例,我們新建一個資料庫後,想要授予特定使用者該資料庫的存取和操作權限(一般在生產環境為了安全起見,不會透過root 用戶操作資料庫),為此我們先要建立一個特定用戶,例如

test,DCL 這種控制級的SQL 語句一般在命令列執行,我們進入MySQL Docker 容器,連接到資料庫,透過CREATE USER 語句新建一個test 用戶,同時將密碼設定為test

MySQL基本使用(二)之DCL語句與聚合函數

建立完成後,就可以在

mysql.user 資料表中看到這個使用者了:

MySQL基本使用(二)之DCL語句與聚合函數

Host 欄位為% 表示test 使用者可以從任何主機連接到MySQL 伺服器。

或透過命令列查看(這裡用到了SQL 查詢語句):

MySQL基本使用(二)之DCL語句與聚合函數

#然後我們就可以執行

GRANT 語句授予test 使用者對test 資料庫的所有操作權限了:

MySQL基本使用(二)之DCL語句與聚合函數

授權後,需要執行

flush privileges; 刷新權限,這樣就可以在test 資料庫的權限清單中看到這個使用者了:

MySQL基本使用(二)之DCL語句與聚合函數权限

如果我們退出目前登入狀態,以

test 使用者登錄,就只能看到test 資料庫,因為它對其他資料庫沒有操作權限:

MySQL基本使用(二)之DCL語句與聚合函數##要撤回權限,需要以root 身分進行,在權限清單刪除這個用戶,或是在命令列透過

REVOKE

語句完成:<pre class="brush:php;toolbar:false">revoke all privideges on test.* from 'test'@'%'; flush privileges;</pre>這裡操作的都是所有權限,也可以指定特定的權限:

// 授予权限
grant select on test.* to 'user1'@'localhost';  /*给予查询权限*/
grant insert on test.* to 'user1'@'localhost'; /*添加插入权限*/
grant delete on test.* to 'user1'@'localhost'; /*添加删除权限*/
grant update on test.* to 'user1'@'localhost'; /*添加权限*/

// 收回权限
revoke select on test.* from 'jack'@'localhost';
revoke insert on test.* from 'jack'@'localhost';
revoke delete on test.* from 'jack'@'localhost';
revoke update on test.* from 'jack'@'localhost';

交易提交/回溯

資料庫事務(Database Transaction)是指作為單一邏輯工作單元執行的一系列操作(對資料庫的相關增刪改查的操作,包含一條或多條SQL 語句),要麼完全執行,要麼完全不執行。

對於單一 SQL 語句,資料庫系統自動將其作為一個事務執行,這種事務稱為

隱含交易

要手動把多條SQL 語句當作一個事務執行,可以使用

BEGIN

開啟一個事務,使用COMMIT 提交一個事務,這種事務稱為明確交易,如果在交易執行過程中出現錯誤或異常,可以透過ROLLBACK 語句回滾交易。 我們在命令列中簡單示範下資料庫事務的操作:

MySQL基本使用(二)之DCL語句與聚合函數#我們透過

BEGIN

語句開啟事務,但在執行多條語句後,沒有透過COMMIT 提交事務,測試執行這幾個SQL 語句,進入「瀏覽」面板查看,發現並沒有插入新的記錄:

MySQL基本使用(二)之DCL語句與聚合函數如果在上述SQL 序列後面加上

ROLLBACK

回滾事務,效果也是一樣的:<pre class="brush:php;toolbar:false">BEGIN; INSERT INTO post (`title`, `content, `created_at`) VALUES ('这是一篇测试文章2', '测试内容哈哈哈', '2020-05-26 13:00:00'); INSERT INTO post (`title`, `content, `created_at`) VALUES ('这是一篇测试文章3', '测试内容哈哈哈', '2020-05-26 13:30:00'); ROLLBACK;</pre>而如果在最後加上

COMMIT

語句,則可以順利提交修改:

MySQL基本使用(二)之DCL語句與聚合函數

MySQL基本使用(二)之DCL語句與聚合函數#關於常見的SQL 語句和phpMyAdmin 中的視覺化演示,就簡單介紹到這裡,更多細節,需要大家結合網路上的SQL 教學自己去探索,這不是本系列教學的重點,這裡就不詳細展開了。

聚合函數

除了常見的 SQL 查詢和操作語句之外,SQL 還內建了一些聚合函數,方便在資料查詢時對結果進行簡單便捷的統計。這裡我們介紹幾個常見的函數:countsumavgmaxmin

COUNT

count 函數可用來統計查詢結果總共有多少條,通常在進行分頁查詢時需要用到這個函數。為了方便直接看到結果,我們在命令列中進行示範:

MySQL基本使用(二)之DCL語句與聚合函數

在查詢欄位時為了提高可讀性,可以透過as 指定欄位別名,這裡post 表總共有三筆記錄,所以查詢結果是3

SUM

sum 可用於統計查詢結果中某個字段的求和,因此只能用於數字類型字段,這裡我們為post 表格新增一個欄位views,用於儲存對應文章記錄的瀏覽次數。在post 表結構中,選擇在content 字段後新增一個字段並點擊“執行”:

MySQL基本使用(二)之DCL語句與聚合函數

將字段名設定為views,並將其類型設為UNSIGNED INT,表示非負整數,同時設定預設值為0,對應的SQL 語句可以通過預覽功能檢視:

MySQL基本使用(二)之DCL語句與聚合函數

點擊「儲存」以建立這個字段,就可以在表格結構中看到它了:

MySQL基本使用(二)之DCL語句與聚合函數

由於views 有預設值,所以目前所有記錄的views 值都是0:

MySQL基本使用(二)之DCL語句與聚合函數默认值

可以透過“編輯」功能將其設定為對應的模擬值:

MySQL基本使用(二)之DCL語句與聚合函數

接下來,我們就可以透過sum 函數對結果進行求和統計了:

MySQL基本使用(二)之DCL語句與聚合函數

AVG

avg 可用來統計查詢結果中某個欄位的平均值,而sum一樣,也是作用於數字類型字段,例如我們可以透過它來統計所有文章的平均瀏覽數:

MySQL基本使用(二)之DCL語句與聚合函數

如果是一個不能被整除的數字,平均數會精確到小數點後四位。

MAX

max 可用來取得查詢結果中某個數字類型欄位的最大值,例如要取得瀏覽數最高的文章資訊可以這麼做:

MySQL基本使用(二)之DCL語句與聚合函數

MySQL 命令列預設中文亂碼,我們可以透過set names utf8mb4; 將編碼類型設定為utf8mb4,這樣就可以正常顯示中文和Emoji 表情符號了。

另外,這裡還用到了子查詢的概念,就是將一個查詢的結果作為另一個查詢的條件,這裡我們將最大瀏覽數作為子查詢的結果傳遞給父查詢作為查詢條件,取得對應的文章資訊。

MIN

max 相對,min 函數用於取得查詢結果中某個數字類型欄位的最小值,例如要取得瀏覽數最低的文章資訊可以這麼做:

MySQL基本使用(二)之DCL語句與聚合函數

小結

好了,關於MySQL 資料庫的基本查詢、操作和統計,我們就簡單介紹到這裡,相信你已經對MySQL 及其操作有了基本的認知。下篇教學,將介紹如何在PHP 中連接MySQL 資料庫並執行增刪改查操作,關於一些更複雜的操作,例如分頁、分組、連接查詢、關聯關係、索引設定和應用,我們將在後續教程中結合具體實例進行示範。

本文來自於https://xueyuanjun.com/post/21656

想了解更多相關文章,請關注php mysql 欄位!

#

以上是MySQL基本使用(二)之DCL語句與聚合函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:xueyuanjun.com。如有侵權,請聯絡admin@php.cn刪除

相關文章

看更多