摘要:在本教程中,您将学习如何使用 MySQL TEXT
在数据库表中存储文本数据。
MySQL TEXT
数据类型简介
除了CHAR
和VARCHAR
字符类型之外,MySQL还为我们提供了TEXT
类型,它具有更多CHAR
和VARCHAR
无法涵盖的功能。
TEXT
对于存储 1 字节到 4 GB 的长文本字符串非常有用。我们经常会发现TEXT
数据类型用于在新闻网站中存储文章正文,在电子商务网站中存储产品描述。
与CHAR
和VARCHAR
不同,当您对列使用TEXT
类型时,无需指定存储长度。此外,MySQL 在检索或插入CHAR
和VARCHAR
等文本数据时不会删除或填充空格。
请注意, TEXT
数据不存储在数据库服务器的内存中,因此,每当您查询TEXT
数据时,MySQL 都必须从磁盘中读取它,这与CHAR
和VARCHAR
相比要慢得多。
MySQL 提供四种TEXT
类型: TINYTEXT
、 TEXT
、 MEDIUMTEXT
和LONGTEXT
。
下面显示了每种TEXT
类型的大小,假设我们使用的字符集需要 1 个字节来存储一个字符
TINYTEXT
– 255 字节(255 个字符)
TINYTEXT
可以存储的最大字符为 255(2^8 = 256,1 字节开销)。
对于需要少于 255 个字符、长度不一致且不需要排序的列(例如博客文章的摘录和文章摘要),您应该使用TINYTEXT
。
请参见以下示例:
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
summary TINYTEXT
);
Code language: SQL (Structured Query Language) (sql)
在此示例中,我们创建了一个名为articles
的新表,其中有一个数据类型为TINYTEXT
的摘要列。
TEXT
– 64KB(65,535 个字符)
TEXT
数据类型最多可容纳 64 KB,相当于 65535 (2^16 – 1) 个字符。 TEXT
也需要 2 个字节的开销。
TEXT
可以保存文章的正文。考虑以下示例:
ALTER TABLE articles
ADD COLUMN body TEXT NOT NULL
AFTER summary;
Code language: SQL (Structured Query Language) (sql)
在此示例中,我们使用ALTER TABLE
语句将具有TEXT
数据类型的body
列添加到articles
表中。
MEDIUMTEXT
– 16MB(16,777,215 个字符)
MEDIUMTEXT
最多可容纳 16MB 文本数据,相当于 16,777,215 个字符。它需要 3 个字节的开销。
MEDIUMTEXT
对于存储相当大的文本数据非常有用,例如书籍文本、白皮书等。例如:
CREATE TABLE whitepapers (
id INT AUTO_INCREMENT PRIMARY KEY,
body MEDIUMTEXT NOT NULL,
published_on DATE NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
LONGTEXT
– 4GB(4,294,967,295 个字符)
LONGTEXT
可以存储高达 4 GB 的文本数据,这已经很大了。它需要 4 个字节的开销。
在本教程中,您学习了如何使用各种 MySQL TEXT
数据类型在数据库表中存储文本。