亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL 中 blob 和 text 數(shù)據(jù)類型詳解

 更新時間:2022年02月08日 10:02:10   作者:K_un  
本文主要介紹了MySQL中blob和text數(shù)據(jù)類型詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

前面文章我們介紹過一些常用數(shù)據(jù)類型的用法,比如 int、char、varchar 等。一直沒詳細介紹過 blob 及 text 類型,雖然這兩類數(shù)據(jù)類型不太常用,但在某些場景下還是會用到的。本篇文章將主要介紹 blob 及 text 數(shù)據(jù)類型的相關(guān)知識。

1. blob 類型

blob(binary large object) 是一個可以存儲二進制文件的容器,主要用于存儲二進制大對象,例如可以存儲圖片,音視頻等文件。按照可存儲容量大小不同來分類,blob 類型可分為以下四種:

類型可存儲大小用途
TINYBLOB0 - 255字節(jié)短文本二進制字符串
BLOB0 - 65KB二進制字符串
MEDIUMBLOB0 - 16MB二進制形式的長文本數(shù)據(jù)
LONGBLOB0 - 4GB二進制形式的極大文本數(shù)據(jù)

其中最常用的就是 blob 字段類型了,最多可存儲 65KB 大小的數(shù)據(jù),一般可用于存儲圖標或 logo 圖片。不過數(shù)據(jù)庫并不適合直接存儲圖片,如果有大量存儲圖片的需求,請使用對象存儲或文件存儲,數(shù)據(jù)庫中可以存儲圖片路徑來調(diào)用。

2. text 類型

text 類型同 char、varchar 類似,都可用于存儲字符串,一般情況下,遇到存儲長文本字符串的需求時可以考慮使用 text 類型。按照可存儲大小區(qū)分,text 類型同樣可分為以下四種:

類型可存儲大小用途
TINYTEXT0 - 255字節(jié)一般文本字符串
TEXT0 - 65 535字節(jié)長文本字符串
MEDIUMTEXT0 - 16 772 150字節(jié)較大文本數(shù)據(jù)
LONGTEXT0 - 4 294 967 295字節(jié)極大文本數(shù)據(jù)

不過在日常場景中,存儲字符串還是盡量用 varchar ,只有要存儲長文本數(shù)據(jù)時,可以使用 text 類型。對比 varchar ,text 類型有以下特點:

  • text 類型無須指定長度。
  • 若數(shù)據(jù)庫未啟用嚴格的 sqlmode ,當插入的值超過 text 列的最大長度時,則該值會被截斷插入并生成警告。
  • text 類型字段不能有默認值。
  • varchar 可直接創(chuàng)建索引,text 字段創(chuàng)建索引要指定前多少個字符。
  • text 類型檢索效率比 varchar 要低。

下面我們來具體測試下 text 類型的使用方法:

# 創(chuàng)建測試表 字符集是 utf8
mysql> show create table tb_text\G
*************************** 1. row ***************************
       Table: tb_text
Create Table: CREATE TABLE `tb_text` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `a` tinytext,
  `b` text,
  `c` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

# 創(chuàng)建索引測試 發(fā)現(xiàn)text類型必須指定前綴長度
mysql> alter table tb_text add index idx_a (a);
ERROR 1170 (42000): BLOB/TEXT column 'a' used in key specification without a key length
mysql> alter table tb_text add index idx_b (b); 
ERROR 1170 (42000): BLOB/TEXT column 'b' used in key specification without a key length
mysql> alter table tb_text add index idx_c (c);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> alter table tb_text add index idx_b (b(10));
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

# 插入數(shù)據(jù)測試(repeat函數(shù)用于生成重復(fù)數(shù)據(jù))
# 正常插入
mysql> insert into tb_text  (a,b,c) values (repeat('hello',3),repeat('hello',3),repeat('hello',3));
Query OK, 1 row affected (0.01 sec)
# 插入英文字符超標
mysql> insert into tb_text  (a) values (repeat('hello',52));
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
# 插入中文超標
mysql>  insert into tb_text  (a) values (repeat('你好',100));
Query OK, 1 row affected, 1 warning (0.02 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
# 查看數(shù)據(jù) 發(fā)現(xiàn)數(shù)據(jù)有所截取 tinytext 類型最多存儲255字節(jié)數(shù)據(jù)
mysql> select * from tb_text;
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------+
| id | a                                                                                                                                                                                                                                                               | b               | c               |
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------+
|  1 | hellohellohello                                                                                                                                                                                                                                                 | hellohellohello | hellohellohello |
|  2 | hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello | NULL            | NULL            |
|  3 | 你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你                                                                                      | NULL            | NULL            |
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------+
3 rows in set (0.00 sec)

通過以上測試,我們注意到,text 類型可存儲容量是以字節(jié)為單位而不是字符。例如 tinytext 最多存儲 255 個字節(jié)而不是 255 個字符,在 utf8 字符集下,一個英文字母或數(shù)字占用一個字節(jié),而一個中文漢字占用三個字節(jié)。也就是說 tinytext 最多存儲 255/3=85 個漢字,text 最多存儲 65535/3=21845 個漢字。而 varchar(M) 中的 M 指的是字符數(shù),一個英文、數(shù)字、漢字都是占用一個字符,即 tinytext 可存儲的大小并不比 varchar(255) 多。

總結(jié)

本篇文章介紹了 blob 及 text 字段類型相關(guān)知識。雖然數(shù)據(jù)庫規(guī)范中一般不推薦使用 blob 及 text 類型,但由于一些歷史遺留問題或是某些場景下,還是會用到這兩類數(shù)據(jù)類型的。這篇文章僅當做個記錄了,使用到的時候可以參考下。

到此這篇關(guān)于MySQL 中 blob 和 text 數(shù)據(jù)類型詳解的文章就介紹到這了,更多相關(guān)MySQL  blob和text 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql通過Adjacency List(鄰接表)存儲樹形結(jié)構(gòu)

    Mysql通過Adjacency List(鄰接表)存儲樹形結(jié)構(gòu)

    本片介紹MYSQL存儲樹形結(jié)構(gòu)的一種方法,通過Adjacency List來實現(xiàn),一起來學(xué)習(xí)下。
    2017-12-12
  • MySql官方手冊學(xué)習(xí)筆記1 MySql簡單上手

    MySql官方手冊學(xué)習(xí)筆記1 MySql簡單上手

    這是我學(xué)習(xí)MySql 5.1時做的一些整理與筆記,希望能理一理自己學(xué)到的東西,如果能有助于各位同道學(xué)習(xí)MySql那就更是意外之喜了,呵呵
    2012-10-10
  • MySQL鎖情況查看命令

    MySQL鎖情況查看命令

    本文主要介紹了MySQL鎖情況查看命令,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MySql8.0以上版本正確修改ROOT密碼的方法

    MySql8.0以上版本正確修改ROOT密碼的方法

    這篇文章主要介紹了MySql8.0以上版本正確修改ROOT密碼的方法,文中給大家提到了成功部署完畢后出現(xiàn)故障情況,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • SQL如何獲取目標時間點或日期的方法實例

    SQL如何獲取目標時間點或日期的方法實例

    日期獲取在我們?nèi)粘i_發(fā)中經(jīng)常會遇到,這篇文章主要給大家介紹了關(guān)于SQL如何獲取目標時間點或日期的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • MySQL中實現(xiàn)分頁操作的實戰(zhàn)指南

    MySQL中實現(xiàn)分頁操作的實戰(zhàn)指南

    MySQL的分頁似乎一直是個問題,下面這篇文章主要給大家介紹了關(guān)于MySQL中實現(xiàn)分頁操作的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Linux連接mysql報錯:Access denied for user ‘root’@‘localhost’(using password: YES)的解決方法

    Linux連接mysql報錯:Access denied for user ‘root’@‘localhost’(usi

    這篇文章主要給大家介紹了關(guān)于Linux連接mysql數(shù)據(jù)庫報錯:Access denied for user ’root‘@’localhost‘(using password: YES)的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • mysql獲取指定時間段中所有日期或月份的語句(不設(shè)存儲過程,不加表)

    mysql獲取指定時間段中所有日期或月份的語句(不設(shè)存儲過程,不加表)

    最近需要用mysql獲取一個時間段中的所有月份,網(wǎng)上查都是要設(shè)置存儲過程或者加一個日期表的,不滿足我的需求,翻墻找資料加上自己試驗,如下代碼分享給大家
    2021-06-06
  • Mysql存儲過程和函數(shù)區(qū)別介紹

    Mysql存儲過程和函數(shù)區(qū)別介紹

    這篇文章主要介紹了Mysql存儲過程和函數(shù)的區(qū)別,需要的朋友可以參考下
    2014-03-03
  • mysql表物理文件被誤刪的解決方法

    mysql表物理文件被誤刪的解決方法

    最近因為失誤不小心誤刪了mysql表的物理文件,這個時候該怎么辦呢?然后抓緊從網(wǎng)上找解決的方法,終于解決了,現(xiàn)在將解決的方法及過程分享給大家,有需要的朋友們可以參考借鑒,感興趣的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11

最新評論