【相關學習推薦:#mysql教學##(影片)】
DCLDCL 比較簡單,主要用於授予或收回存取資料庫的權限,以及資料庫事務的提交和回滾。 授予/收回權限以授予權限為例,我們新建一個資料庫後,想要授予特定使用者該資料庫的存取和操作權限(一般在生產環境為了安全起見,不會透過root 用戶操作資料庫),為此我們先要建立一個特定用戶,例如test,DCL 這種控制級的SQL 語句一般在命令列執行,我們進入MySQL Docker 容器,連接到資料庫,透過
CREATE USER 語句新建一個
test 用戶,同時將密碼設定為
test:
mysql.user 資料表中看到這個使用者了:
Host 欄位為
% 表示
test 使用者可以從任何主機連接到MySQL 伺服器。
GRANT 語句授予
test 使用者對
test 資料庫的所有操作權限了:
flush privileges; 刷新權限,這樣就可以在
test 資料庫的權限清單中看到這個使用者了:
test 使用者登錄,就只能看到
test 資料庫,因為它對其他資料庫沒有操作權限:
##要撤回權限,需要以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';
交易提交/回溯
對於單一 SQL 語句,資料庫系統自動將其作為一個事務執行,這種事務稱為
隱含交易。 要手動把多條SQL 語句當作一個事務執行,可以使用
BEGIN 開啟一個事務,使用COMMIT
提交一個事務,這種事務稱為明確交易
,如果在交易執行過程中出現錯誤或異常,可以透過ROLLBACK 語句回滾交易。 我們在命令列中簡單示範下資料庫事務的操作:
#我們透過
BEGIN 語句開啟事務,但在執行多條語句後,沒有透過COMMIT
提交事務,測試執行這幾個SQL 語句,進入「瀏覽」面板查看,發現並沒有插入新的記錄:
如果在上述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>
而如果在最後加上
語句,則可以順利提交修改:
#關於常見的SQL 語句和phpMyAdmin 中的視覺化演示,就簡單介紹到這裡,更多細節,需要大家結合網路上的SQL 教學自己去探索,這不是本系列教學的重點,這裡就不詳細展開了。
除了常見的 SQL 查詢和操作語句之外,SQL 還內建了一些聚合函數,方便在資料查詢時對結果進行簡單便捷的統計。這裡我們介紹幾個常見的函數:count
、sum
、avg
、max
和 min
。
count
函數可用來統計查詢結果總共有多少條,通常在進行分頁查詢時需要用到這個函數。為了方便直接看到結果,我們在命令列中進行示範:
在查詢欄位時為了提高可讀性,可以透過as
指定欄位別名,這裡post
表總共有三筆記錄,所以查詢結果是3
。
sum
可用於統計查詢結果中某個字段的求和,因此只能用於數字類型字段,這裡我們為post
表格新增一個欄位views
,用於儲存對應文章記錄的瀏覽次數。在post
表結構中,選擇在content
字段後新增一個字段並點擊“執行”:
將字段名設定為views
,並將其類型設為UNSIGNED INT
,表示非負整數,同時設定預設值為0
,對應的SQL 語句可以通過預覽功能檢視:
點擊「儲存」以建立這個字段,就可以在表格結構中看到它了:
由於views
有預設值,所以目前所有記錄的views
值都是0:
可以透過“編輯」功能將其設定為對應的模擬值:
接下來,我們就可以透過sum
函數對結果進行求和統計了:
avg
可用來統計查詢結果中某個欄位的平均值,而sum
一樣,也是作用於數字類型字段,例如我們可以透過它來統計所有文章的平均瀏覽數:
如果是一個不能被整除的數字,平均數會精確到小數點後四位。
max
可用來取得查詢結果中某個數字類型欄位的最大值,例如要取得瀏覽數最高的文章資訊可以這麼做:
MySQL 命令列預設中文亂碼,我們可以透過set names utf8mb4;
將編碼類型設定為utf8mb4
,這樣就可以正常顯示中文和Emoji 表情符號了。
另外,這裡還用到了子查詢的概念,就是將一個查詢的結果作為另一個查詢的條件,這裡我們將最大瀏覽數作為子查詢的結果傳遞給父查詢作為查詢條件,取得對應的文章資訊。
與max
相對,min
函數用於取得查詢結果中某個數字類型欄位的最小值,例如要取得瀏覽數最低的文章資訊可以這麼做:
好了,關於MySQL 資料庫的基本查詢、操作和統計,我們就簡單介紹到這裡,相信你已經對MySQL 及其操作有了基本的認知。下篇教學,將介紹如何在PHP 中連接MySQL 資料庫並執行增刪改查操作,關於一些更複雜的操作,例如分頁、分組、連接查詢、關聯關係、索引設定和應用,我們將在後續教程中結合具體實例進行示範。
本文來自於https://xueyuanjun.com/post/21656
#想了解更多相關文章,請關注php mysql 欄位!
以上是MySQL基本使用(二)之DCL語句與聚合函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!