
- MySQL 基礎
- MySQL - 首頁
- MySQL - 簡介
- MySQL - 特性
- MySQL - 版本
- MySQL - 變數
- MySQL - 安裝
- MySQL - 管理
- MySQL - PHP 語法
- MySQL - Node.js 語法
- MySQL - Java 語法
- MySQL - Python 語法
- MySQL - 連線
- MySQL - Workbench
- MySQL 資料庫
- MySQL - 建立資料庫
- MySQL - 刪除資料庫
- MySQL - 選擇資料庫
- MySQL - 顯示資料庫
- MySQL - 複製資料庫
- MySQL - 資料庫匯出
- MySQL - 資料庫匯入
- MySQL - 資料庫資訊
- MySQL 使用者
- MySQL - 建立使用者
- MySQL - 刪除使用者
- MySQL - 顯示使用者
- MySQL - 修改密碼
- MySQL - 授予許可權
- MySQL - 顯示許可權
- MySQL - 收回許可權
- MySQL - 鎖定使用者賬戶
- MySQL - 解鎖使用者賬戶
- MySQL 表
- MySQL - 建立表
- MySQL - 顯示錶
- MySQL - 修改表
- MySQL - 重命名錶
- MySQL - 克隆表
- MySQL - 截斷表
- MySQL - 臨時表
- MySQL - 修復表
- MySQL - 描述表
- MySQL - 新增/刪除列
- MySQL - 顯示列
- MySQL - 重新命名列
- MySQL - 表鎖定
- MySQL - 刪除表
- MySQL - 派生表
- MySQL 查詢
- MySQL - 查詢
- MySQL - 約束
- MySQL - 插入查詢
- MySQL - 選擇查詢
- MySQL - 更新查詢
- MySQL - 刪除查詢
- MySQL - 替換查詢
- MySQL - 插入忽略
- MySQL - 插入重複鍵更新
- MySQL - 插入到選擇
- MySQL 運算子和子句
- MySQL - Where 子句
- MySQL - Limit 子句
- MySQL - Distinct 子句
- MySQL - Order By 子句
- MySQL - Group By 子句
- MySQL - Having 子句
- MySQL - AND 運算子
- MySQL - OR 運算子
- MySQL - Like 運算子
- MySQL - IN 運算子
- MySQL - ANY 運算子
- MySQL - EXISTS 運算子
- MySQL - NOT 運算子
- MySQL - 不等於運算子
- MySQL - IS NULL 運算子
- MySQL - IS NOT NULL 運算子
- MySQL - Between 運算子
- MySQL - UNION 運算子
- MySQL - UNION 與 UNION ALL
- MySQL - MINUS 運算子
- MySQL - INTERSECT 運算子
- MySQL - INTERVAL 運算子
- MySQL 連線
- MySQL - 使用連線
- MySQL - 內連線
- MySQL - 左連線
- MySQL - 右連線
- MySQL - 交叉連線
- MySQL - 全連線
- MySQL - 自連線
- MySQL - 刪除連線
- MySQL - 更新連線
- MySQL - Union 與 Join
- MySQL 觸發器
- MySQL - 觸發器
- MySQL - 建立觸發器
- MySQL - 顯示觸發器
- MySQL - 刪除觸發器
- MySQL - 插入前觸發器
- MySQL - 插入後觸發器
- MySQL - 更新前觸發器
- MySQL - 更新後觸發器
- MySQL - 刪除前觸發器
- MySQL - 刪除後觸發器
- MySQL 資料型別
- MySQL - 資料型別
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正則表示式
- MySQL - 正則表示式
- MySQL - RLIKE 運算子
- MySQL - NOT LIKE 運算子
- MySQL - NOT REGEXP 運算子
- MySQL - regexp_instr() 函式
- MySQL - regexp_like() 函式
- MySQL - regexp_replace() 函式
- MySQL - regexp_substr() 函式
- MySQL 函式與運算子
- MySQL - 日期和時間函式
- MySQL - 算術運算子
- MySQL - 數值函式
- MySQL - 字串函式
- MySQL - 聚合函式
- MySQL 雜項概念
- MySQL - NULL 值
- MySQL - 事務
- MySQL - 使用序列
- MySQL - 處理重複項
- MySQL - SQL 注入
- MySQL - 子查詢
- MySQL - 註釋
- MySQL - 檢查約束
- MySQL - 儲存引擎
- MySQL - 將表匯出到 CSV 檔案
- MySQL - 將 CSV 檔案匯入資料庫
- MySQL - UUID
- MySQL - 公共表表達式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分割槽
- MySQL - 垂直分割槽
- MySQL - 遊標
- MySQL - 儲存函式
- MySQL - Signal
- MySQL - Resignal
- MySQL - 字元集
- MySQL - 校對
- MySQL - 萬用字元
- MySQL - 別名
- MySQL - ROLLUP
- MySQL - 當天日期
- MySQL - 字面量
- MySQL - 儲存過程
- MySQL - Explain
- MySQL - JSON
- MySQL - 標準差
- MySQL - 查詢重複記錄
- MySQL - 刪除重複記錄
- MySQL - 選擇隨機記錄
- MySQL - 顯示 Processlist
- MySQL - 更改列型別
- MySQL - 重置自動遞增
- MySQL - Coalesce() 函式
- MySQL 有用資源
- MySQL - 有用函式
- MySQL - 語句參考
- MySQL - 快速指南
- MySQL - 有用資源
- MySQL - 討論
MySQL - BLOB
許多使用者應用程式需要儲存不同型別的資料,包括文字、影像、檔案等等。在 MySQL 資料庫中使用 BLOB 允許您將所有這些型別的資料儲存在同一個資料庫中,從而無需使用單獨的檔案系統。
MySQL BLOB 資料型別
MySQL BLOB(二進位制大型物件)資料型別用於儲存二進位制資料,例如影像、音訊、影片或任何其他型別的二進位制檔案。BLOB 列可以儲存可變長度的二進位制資料,使其適用於處理各種大小的檔案。
考慮一個透過表單收集使用者資訊的應用程式。此資訊可能包括個人詳細資訊,例如姓名和地址,以及影像證明,例如 PAN 卡或 Aadhaar 卡。您可以將這些檔案作為 BLOB 儲存在 MySQL 資料庫中,而不是在檔案系統中單獨管理它們。
語法
以下是為表字段分配 BLOB 資料型別的基本語法:
CREATE TABLE table_name (column_name BLOB,...)
示例
讓我們考慮一個基本示例來展示如何為表字段分配 BLOB 資料型別。在這裡,我們建立一個名為“demo_table”的表,其中包含兩個欄位“ID”和“DEMO_FILE”:
CREATE TABLE demo_table ( ID INT NOT NULL, DEMO_FILE BLOB );
獲得以下輸出:
Query OK, 0 rows affected (0.01 sec)
您可以使用以下命令查看錶結構:
DESC demo_table;
獲得的表如下:
欄位 | 型別 | 空 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int | 否 | NULL | ||
DEMO_FILE | blob | 是 | NULL |
將資料插入 BLOB 欄位
您可以透過使用 LOAD_FILE() 函式將檔案載入到 BLOB 欄位,將一些值插入到資料庫表中。但是,在執行此操作之前,請確保滿足以下條件:
檔案存在 - 您要插入的檔案必須存在於 MySQL 伺服器主機位置。要確定所需的位置,您可以使用以下命令中的 secure_file_priv 變數。如果此命令的結果不為空,則要載入的檔案必須位於該特定目錄中。
SHOW VARIABLES LIKE secure_file_priv;
指定完整的檔案路徑 - 使用 LOAD_FILE() 函式時,必須將檔案的完整路徑作為引數傳遞,例如“/users/tutorialspoint/file_name.txt”。對於 Windows 使用者,請記住在路徑中使用雙反斜槓作為跳脫字元(“//users//tutorialspoint//file_name.txt”)。
檢查“max_allowed_packet”值 - MySQL 伺服器具有一個 max_allowed_packet 變數,該變數確定載入的最大允許檔案大小。要檢查此變數的值,可以使用以下命令:
SHOW VARIABLES LIKE max_allowed_packet;
確保檔案大小不超過此變數中指定的值。
授予 FILE 許可權 - 確保 MySQL 使用者帳戶已授予 FILE 許可權。要向用戶授予檔案許可權,可以使用以下命令(通常由具有管理員許可權的使用者執行,例如“root”):
GRANT FILE ON *.* TO 'username'@'hostname'; FLUSH PRIVILEGES;
檔案可讀性 - 最後,確保 MySQL 伺服器可以讀取該檔案。
示例
要將值插入先前建立的表“demo_table”,可以使用以下 INSERT 查詢:
INSERT INTO demo_table VALUES(1, LOAD_FILE("C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\sample.txt"));
要驗證插入,可以使用以下查詢從“demo_table”檢索資料:
SELECT * FROM demo_table;
我們可以在下面的輸出中看到,該表包含“sample.txt”檔案中內容的十六進位制字串。您可以將任何型別的檔案載入到 MySQL 中,例如影像、多媒體檔案、PDF 文件等:
ID | DEMO_FILE |
---|---|
1 | 0x5468697320697320612073616D706C652066696C65 |
BLOB 資料型別的型別
MySQL 提供四種類型的 BLOB 資料型別,每種資料型別具有不同的最大儲存容量。雖然它們都用於儲存二進位制資料(例如影像或檔案),但它們在可以容納的物件的最大大小方面有所不同。以下是四種 BLOB 資料型別:
TINYBLOB - 它最多可以儲存 255 個位元組或 255 個字元。
BLOB - 它最多可以儲存 65,535(216 - 1)個位元組,相當於 64KB 的資料。
MEDIUMBLOB - 它最多可以儲存 16,777,215(224 - 1)個位元組,或 4GB。
LONGBLOB - 它是這些資料型別中最大的,可以儲存高達 4,294,967,295 個位元組(232 - 1)的物件,或 4GB。
讓我們嘗試建立具有上述所有型別 BLOB 資料型別的表。
使用 TINYBLOB 資料型別建立表
在此示例中,我們使用 TINYBLOB 資料型別在欄位上建立一個名為“demo_tinyblob”的表:
CREATE TABLE demo_tinyblob (ID INT, DEMO_FIELD TINYBLOB);
輸出
獲得以下輸出:
Query OK, 0 rows affected (0.02 sec)
驗證
您可以使用以下命令查看錶結構:
DESC demo_tinyblob;
獲得的表如下:
欄位 | 型別 | 空 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int | 是 | NULL | ||
DEMO_FIELD | tinyblob | 是 | NULL |
使用 MEDIUMBLOB 資料型別建立表
在這裡,我們使用以下查詢建立一個名為“demo_mediumblob”的表,該表具有 MEDIUMBLOB 型別的欄位:
CREATE TABLE demo_mediumblob (ID INT, DEMO_FIELD MEDIUMBLOB);
輸出
以上程式碼的輸出如下:
Query OK, 0 rows affected (0.02 sec)
驗證
您可以使用以下命令查看錶結構:
DESC demo_mediumblob;
以下是獲得的表格:
欄位 | 型別 | 空 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int | 是 | NULL | ||
DEMO_FIELD | mediumblob | 是 | NULL |
建立帶有 LONGBLOB 資料型別的表
在本例中,我們正在建立一個名為“demo_longblob”的表,其中包含一個 LONGBLOB 型別的欄位:
CREATE TABLE demo_longblob (ID INT, DEMO_FIELD LONGBLOB);
輸出
以下是生成的輸出:
Query OK, 0 rows affected (0.02 sec)
驗證
您可以使用以下命令查看錶結構:
DESC demo_longblob;
生成的表如下所示:
欄位 | 型別 | 空 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int | 是 | NULL | ||
DEMO_FIELD | longblob | 是 | NULL |