我正在尝试为我的 CIS 课程完成一项作业,我需要包含一个名为 ENUM 的数据类型。我知道这代表枚举列表,但我不确定何时是使用 ENUM 的合适时机。我正在使用的书中给出的几个例子就像一个大陆列表。我可以用它来描述工作场所的部门列表吗?
ENUM 数据类型可以被视为“人类可读”的数值,通常用于便利性和数据存储效率。
让我们以一个列出国家及其各自大陆的表格为例。
CREATE TABLE country_continent (
country VARCHAR(100),
continent VARCHAR(100)
);
INSERT INTO country_continent VALUES ('Kenya', 'Africa');
INSERT INTO country_continent VALUES ('New-York', 'America');
INSERT INTO country_continent VALUES ('Paris', 'Europe');
Run Code Online (Sandbox Code Playgroud)
为了获得更好的存储效率,大陆字段最好使用 SMALLINT(2 个字节)而不是 VARCHAR(通常为 1 个字节 + 字符串的长度):
CREATE TABLE continents (
id SMALLINT,
label VARCHAR(100)
);
INSERT INTO continents VALUES (1, 'Africa');
INSERT INTO continents VALUES (2, 'America');
INSERT INTO continents VALUES (3, 'Europe');
CREATE TABLE country_continent (
country VARCHAR(100),
continent_id SMALLINT
);
INSERT INTO country_continent VALUES ('Kenya', 1);
INSERT INTO country_continent VALUES ('New-York', 2);
INSERT INTO country_continent VALUES ('Paris', 3);
Run Code Online (Sandbox Code Playgroud)
这就是 ENUM 的意义所在:
CREATE TABLE country_continent (
country VARCHAR(100),
continent ENUM('Africa', 'America', 'Antarctica', 'Asia', 'Europe', 'Oceania')
);
INSERT INTO country_continent VALUES ('Kenya', 'Africa');
INSERT INTO country_continent VALUES ('New-York', 'America');
INSERT INTO country_continent VALUES ('Paris', 'Europe');
Run Code Online (Sandbox Code Playgroud)
使用 ENUM,您可以获得与 SMALLINT 相同(甚至更好)的存储效率,但又具有 VARCHAR 数据类型的易用性。
| 归档时间: |
|
| 查看次数: |
5322 次 |
| 最近记录: |