站長資訊網
最全最豐富的資訊網站

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

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 語句完成:

revoke all privideges on test.* from 'test'@'%'; flush privileges;

這里操作的都是所有權限,也可以指定特定的權限:

// 授予權限 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 回滾事務,效果也是一樣的:

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;

而如果在最后加上 COMMIT 語句,則可以順利提交修改:

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

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

關于常見的 SQL 語句和 phpMyAdmin 中的可視化演示,就簡單介紹到這里,

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
91精品福利视频| 久久亚洲精品成人| 日韩人妻无码一区二区三区综合部| 国产精品一国产AV麻豆| 69久久夜色精品国产69小说| 国产suv精品一区二区33| assbbwbbwbbwbbwbw精品| 中文精品久久久久国产网站| 亚洲精品国产va在线观看蜜芽| 亚洲av日韩aⅴ无码色老头| 四虎影视精品永久免费| 国产视频精品免费| 在线播放精品一区二区啪视频| 中文人妻熟妇乱又伦精品| 最新在线精品国自产拍网站| 精品成人A区在线观看| 2021精品国产品免费观看| 99精品久久99久久久久| 久久av老司机精品网站导航| 久久99精品一区二区三区| 日韩一级精品视频在线观看| 久久se精品一区二区| 亚洲精品V欧洲精品V日韩精品| 99精品国产综合久久久久五月天| 91精品国产高清久久久久久io| 久久久无码精品亚洲日韩软件| 精品亚洲一区二区三区在线观看 | 国产成人无码精品一区在线观看 | 亚洲精品无码日韩国产不卡?V| 日韩精品一区二三区中文| 日韩高清在线不卡| 四虎永久在线精品免费一区二区| 三级高清精品国产| 国产精品乱码一区二区三区| 久久精品免费网站网| 国产综合精品久久亚洲 | 91麻豆精品国产| 亚洲精品无码MV在线观看| 久久精品国产精品青草| 亚洲AV乱码久久精品蜜桃| 日韩精品久久无码中文字幕|