MySQL基本使用(二)之DCL語句與聚合函數
【相關學習推薦:#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 身分進行,在權限清單刪除這個用戶,或是在命令列透過
語句完成:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">revoke all privideges on test.* from 'test'@'%';
flush privileges;</pre><div class="contentsignin">登入後複製</div></div>
這裡操作的都是所有權限,也可以指定特定的權限:
// 授予权限 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 語句回滾交易。 我們在命令列中簡單示範下資料庫事務的操作:
#我們透過
語句開啟事務,但在執行多條語句後,沒有透過COMMIT
提交事務,測試執行這幾個SQL 語句,進入「瀏覽」面板查看,發現並沒有插入新的記錄:
如果在上述SQL 序列後面加上
回滾事務,效果也是一樣的:<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div>
而如果在最後加上
語句,則可以順利提交修改:
#關於常見的SQL 語句和phpMyAdmin 中的視覺化演示,就簡單介紹到這裡,更多細節,需要大家結合網路上的SQL 教學自己去探索,這不是本系列教學的重點,這裡就不詳細展開了。
聚合函數
除了常見的 SQL 查詢和操作語句之外,SQL 還內建了一些聚合函數,方便在資料查詢時對結果進行簡單便捷的統計。這裡我們介紹幾個常見的函數:count
、sum
、avg
、max
和 min
。
COUNT
count
函數可用來統計查詢結果總共有多少條,通常在進行分頁查詢時需要用到這個函數。為了方便直接看到結果,我們在命令列中進行示範:
在查詢欄位時為了提高可讀性,可以透過as
指定欄位別名,這裡post
表總共有三筆記錄,所以查詢結果是3
。
SUM
sum
可用於統計查詢結果中某個字段的求和,因此只能用於數字類型字段,這裡我們為post
表格新增一個欄位views
,用於儲存對應文章記錄的瀏覽次數。在post
表結構中,選擇在content
字段後新增一個字段並點擊“執行”:
將字段名設定為views
,並將其類型設為UNSIGNED INT
,表示非負整數,同時設定預設值為0
,對應的SQL 語句可以通過預覽功能檢視:
點擊「儲存」以建立這個字段,就可以在表格結構中看到它了:
由於views
有預設值,所以目前所有記錄的views
值都是0:
可以透過“編輯」功能將其設定為對應的模擬值:
接下來,我們就可以透過sum
函數對結果進行求和統計了:
AVG
avg
可用來統計查詢結果中某個欄位的平均值,而sum
一樣,也是作用於數字類型字段,例如我們可以透過它來統計所有文章的平均瀏覽數:
如果是一個不能被整除的數字,平均數會精確到小數點後四位。
MAX
max
可用來取得查詢結果中某個數字類型欄位的最大值,例如要取得瀏覽數最高的文章資訊可以這麼做:
MySQL 命令列預設中文亂碼,我們可以透過set names utf8mb4;
將編碼類型設定為utf8mb4
,這樣就可以正常顯示中文和Emoji 表情符號了。
另外,這裡還用到了子查詢的概念,就是將一個查詢的結果作為另一個查詢的條件,這裡我們將最大瀏覽數作為子查詢的結果傳遞給父查詢作為查詢條件,取得對應的文章資訊。
MIN
與max
相對,min
函數用於取得查詢結果中某個數字類型欄位的最小值,例如要取得瀏覽數最低的文章資訊可以這麼做:
小結
好了,關於MySQL 資料庫的基本查詢、操作和統計,我們就簡單介紹到這裡,相信你已經對MySQL 及其操作有了基本的認知。下篇教學,將介紹如何在PHP 中連接MySQL 資料庫並執行增刪改查操作,關於一些更複雜的操作,例如分頁、分組、連接查詢、關聯關係、索引設定和應用,我們將在後續教程中結合具體實例進行示範。
本文來自於https://xueyuanjun.com/post/21656
#想了解更多相關文章,請關注php mysql 欄位!
以上是MySQL基本使用(二)之DCL語句與聚合函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

Apache 連接數據庫需要以下步驟:安裝數據庫驅動程序。配置 web.xml 文件以創建連接池。創建 JDBC 數據源,指定連接設置。從 Java 代碼中使用 JDBC API 訪問數據庫,包括獲取連接、創建語句、綁定參數、執行查詢或更新以及處理結果。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

在開發一個小型應用時,我遇到了一個棘手的問題:需要快速集成一個輕量級的數據庫操作庫。嘗試了多個庫後,我發現它們要么功能過多,要么兼容性不佳。最終,我找到了minii/db,這是一個基於Yii2的簡化版本,完美地解決了我的問題。
