• 首页
  • 国产小呦泬泬99精品
  • 最近2019中文字幕在线高清
  • 免费看少妇作爱视频
  • 曰批全过程免费视频在线观看网站
  • 国色天香在线观看全集免费播放
  • 婆岳同床双飞呻吟
  • 最近2019中文字幕在线高清你的位置:三级小说 > 最近2019中文字幕在线高清 > MySQL 中 Blob 和 Text 数据类型详解

    MySQL 中 Blob 和 Text 数据类型详解

    发布日期:2022-06-18 17:11    点击次数:117

    MySQL 中 Blob 和 Text 数据类型详解

      绪论:

    前边著述咱们先容过一些常用数据类型的用法,比如 int、char、varchar 等。一直没详备先容过 blob 及 text 类型,诚然这两类数据类型不太常用,但在某些场景下仍是会用到的。本篇著述将主要先容 blob 及 text 数据类型的相关常识。

    1. blob 类型

    blob(binary large object) 是一个不错存储二进制文献的容器,主要用于存储二进制大对象,举例不错存储图片,音视频等文献。按照可存储容量大小不同来分类,blob 类型可分为以下四种:

    类型

    可存储大小

    用途

    TINYBLOB

    0 - 255字节

    随笔本二进制字符串

    BLOB

    0 - 65KB

    二进制字符串

    MEDIUMBLOB

    0 - 16MB

    二进制体式的长文本数据

    LONGBLOB

    0 - 4GB

    二进制体式的极大文本数据

     

    其中最常用的便是 blob 字段类型了,最多可存储 65KB 大小的数据,一般可用于存储图标或 logo 图片。不外数据库并不符合平直存储图片,若是有渊博存储图片的需求,请使用对象存储或文献存储,数据库中不错存储图片旅途来调用。

    2. text 类型

    text 类型同 char、varchar 雷同,都可用于存储字符串,一般情况下,遭遇存储长文本字符串的需求时不错推敲使用 text 类型。按照可存储大小分别,text 类型相通可分为以下四种:

    类型

    可存储大小

    用途

    TINYTEXT

    0 - 255字节

    一般文本字符串

    TEXT

    0 - 65 535字节

    长文本字符串

    MEDIUMTEXT

    0 - 16 772 150字节

    较大文本数据

    LONGTEXT

    0 - 4 294 967 295字节

    极大文本数据

    不外在日常场景中,存储字符串仍是尽量用 varchar ,惟有要存储长文本数据时, 97视频不错使用 text 类型。对比 varchar ,text 类型有以下特色:

    text 类型毋庸指定长度。 若数据库未启用严格的 sqlmode ,当插入的值当先 text 列的最大长度时,则该值会被截断插入并生成警告。 text 类型字段不行有默许值。 varchar 可平直创建索引,text 字段创建索引要指定前些许个字符。 text 类型检索后果比 varchar 要低。

    底下咱们来具体测试下 text 类型的使用按次:

    # 创建测试表 字符集是 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  # 创建索引测试 发现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,最近2019中文字幕在线高清 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  # 插入数据测试(repeat函数用于生成重叠数据) # 平时插入 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) # 稽查数据 发现数据有所截取 tinytext 类型最多存储255字节数据 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 类型可存储容量所以字节为单元而不是字符。举例 tinytext 最多存储 255 个字节而不是 255 个字符,在 utf8 字符集下,一个英翰墨母或数字占用一个字节,而一个华文汉字占用三个字节。也便是说 tinytext 最多存储 255/3=85 个汉字,text 最多存储 65535/3=21845 个汉字。而 varchar(M) 中的 M 指的是字符数,一个英文、数字、汉字都是占用一个字符,即 tinytext 可存储的大小并不比 varchar(255) 多。

    归来:

    本篇著述先容了 blob 及 text 字段类型相关常识。诚然数据库程序中一般不保举使用 blob 及 text 类型,但由于一些历史留传问题或是某些场景下,仍是会用到这两类数据类型的。这篇著述仅当做个纪录了,使用到的时期不错参考下。



    Powered by 三级小说 @2013-2022 RSS地图 HTML地图