站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        一起聊聊MySQL中blob和text數(shù)據(jù)類(lèi)型(示例詳解)

        本篇文章我們來(lái)看一下mysql中的blob和text數(shù)據(jù)類(lèi)型,blob是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器,text類(lèi)型同char、varchar 類(lèi)似,都可用于存儲(chǔ)字符串,下面我們就一起來(lái)看一下這兩個(gè)數(shù)據(jù)類(lèi)型的相關(guān)知識(shí),希望對(duì)大家有幫助。

        一起聊聊MySQL中blob和text數(shù)據(jù)類(lèi)型(示例詳解)

        1. blob 類(lèi)型

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

        一起聊聊MySQL中blob和text數(shù)據(jù)類(lèi)型(示例詳解)

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

        2. text 類(lèi)型

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

        一起聊聊MySQL中blob和text數(shù)據(jù)類(lèi)型(示例詳解)

        不過(guò)在日常場(chǎng)景中,存儲(chǔ)字符串還是盡量用 varchar ,只有要存儲(chǔ)長(zhǎng)文本數(shù)據(jù)時(shí),可以使用 text 類(lèi)型。對(duì)比 varchar ,text 類(lèi)型有以下特點(diǎn):

        • text 類(lèi)型無(wú)須指定長(zhǎng)度。

        • 若數(shù)據(jù)庫(kù)未啟用嚴(yán)格的 sqlmode ,當(dāng)插入的值超過(guò) text 列的最大長(zhǎng)度時(shí),則該值會(huì)被截?cái)嗖迦氩⑸删妗?/p>

        • text 類(lèi)型字段不能有默認(rèn)值。

        • varchar 可直接創(chuàng)建索引,text 字段創(chuàng)建索引要指定前多少個(gè)字符。

        • text 類(lèi)型檢索效率比 varchar 要低。

        下面我們來(lái)具體測(cè)試下 text 類(lèi)型的使用方法:

        # 創(chuàng)建測(cè)試表 字符集是 utf8 mysql> show create table tb_textG *************************** 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)建索引測(cè)試 發(fā)現(xiàn)text類(lèi)型必須指定前綴長(zhǎng)度 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ù)測(cè)試(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) # 插入英文字符超標(biāo) 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) # 插入中文超標(biāo) 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 類(lèi)型最多存儲(chǔ)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)

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

        總結(jié):

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

        推薦學(xué)習(xí):mysql視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 欧美肥屁VIDEOSSEX精品| 国产偷亚洲偷欧美偷精品| 国产精品视频一区二区三区经| 久久精品国产福利国产琪琪| 亚洲精品在线观看视频| 99在线精品视频观看免费| 亚洲国产精品乱码一区二区 | 亚洲精品亚洲人成人网| 精品欧美| 久久精品成人| 国内精品久久久久久不卡影院| 97精品人妻一区二区三区香蕉| 久久99国产精品久久99| 国产99久久精品一区二区| 国产精品露脸国语对白| 精品无码一区二区三区亚洲桃色| 野狼第一精品社区| 亚洲日韩精品无码专区网站| 久久久久久亚洲精品不卡 | 国产精品一区二区不卡| 国内精品久久久久久久97牛牛| 久久精品国产99久久久| 亚洲精品国产av成拍色拍| 亚洲精品中文字幕乱码三区| 中文字幕日韩精品在线| 中文字幕无码精品三级在线电影| 午夜精品久久久久久影视777| 婷婷久久精品国产| 最新国产在线精品观看| 影院无码人妻精品一区二区| 亚洲高清国产拍精品青青草原| 日韩精品一区二区三区中文字幕| 欧美日韩精品| 亚洲精品成人在线| 无码人妻精品一区二区三区东京热| 无码人妻精品一区二区三区东京热 | 色久综合网精品一区二区| 久久国产精品成人影院| freesexvideos精品老师毛多| 国产精品久久久久久| 亚洲成人精品久久|