在MySQL中创建ENUM变量类型

时间:2009-09-22 20:46:13

标签: mysql variables enums

我在MySQL中使用ENUM数据类型并希望重用它,但不在值中重新输入。是否有相当于在C ++中定义类型的C,C ++方法?

我想做以下事情:

DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);

这可能吗?

由于

2 个答案:

答案 0 :(得分:42)

没有。 MySQL不支持CREATE DOMAINCREATE TYPE,例如,PostgreSQL does

您可能需要再次输入所有名称。您可以通过使用copy& amp;来减轻执行此操作所需的工作。粘贴或SQL脚本。

您还可以使用INFORMATION_SCHEMA表来获取ENUM定义的文本,然后将其插入到新的CREATE TABLE语句中。

您还可以以创造性的方式使用CREATE TABLE AS来复制类型定义。这是一个演示:

CREATE TABLE foo ( f ENUM('abc', 'xyz') );
CREATE TABLE bar AS SELECT f AS b FROM foo;
SHOW CREATE TABLE bar;

输出:

CREATE TABLE `bar` (
  `b` enum('abc','xyz') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1

最后,我建议如果你的ENUM里面有很多值(我猜这是正确的,因为你正在寻找一个避免键入它的解决方案),你应该使用查找表而不是ENUM数据类型。

答案 1 :(得分:0)

下面为mysql数据库提供的示例。

CREATE TABLE `data` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
  `gender` enum('Male','Female') DEFAULT NULL,
PRIMARY KEY (`Id`)
  ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci