📜  SQL Server 中的枚举 - SQL (1)

📅  最后修改于: 2023-12-03 15:05:17.739000             🧑  作者: Mango

SQL Server 中的枚举

SQL Server中的枚举(Enum)是一种数据类型,它允许您将一组值作为单个命名实体表示。这些值被称为枚举常量。它们通常用于减少代码中的魔法数字(magic numbers)或字符串的使用,使代码更具可读性。

创建枚举

要在SQL Server中创建枚举,您必须使用CREATE TYPE语句。以下是一个示例:

CREATE TYPE FruitType AS ENUM ('Apple', 'Banana', 'Orange', 'Mango')

上面的示例创建了一个名为FruitType的枚举类型,它包含四个枚举常量:Apple、Banana、Orange和Mango。

使用枚举

以下是如何在SQL Server中使用枚举:

CREATE TABLE Fruit (
    Id int PRIMARY KEY,
    Name varchar(50),
    Type FruitType
)

INSERT INTO Fruit VALUES (1, 'Red Apple', 'Apple')
INSERT INTO Fruit VALUES (2, 'Green Apple', 'Apple')
INSERT INTO Fruit VALUES (3, 'Banana', 'Banana')
INSERT INTO Fruit VALUES (4, 'Orange', 'Orange')
INSERT INTO Fruit VALUES (5, 'Mango', 'Mango')

上面的示例创建了一个名为Fruit的表。它包含了一个名为Type的列,该列的数据类型为FruitType。然后,它插入了五个记录,每个记录的Type都是不同的枚举常量。

查询枚举

要查询Fruit表并查看每个水果的类型,您可以使用如下语句:

SELECT Name, Type FROM Fruit

这会返回以下结果:

|Name|Type| |----|----| |Red Apple|Apple| |Green Apple|Apple| |Banana|Banana| |Orange|Orange| |Mango|Mango|

限制枚举

在SQL Server中,如果您不希望用户输入不属于枚举类型的值,您可以使用CHECK约束来限制它。以下是示例:

CREATE TABLE Fruit (
    Id int PRIMARY KEY,
    Name varchar(50),
    Type FruitType,
    CONSTRAINT CK_FruitType CHECK (Type IN ('Apple', 'Banana', 'Orange', 'Mango'))
)

上面的示例在Fruit表中添加了一个CHECK约束,该约束检查Type列的值是否属于FruitType枚举类型。如果Type列的值不是枚举值之一,则该行将无法插入。

总结

枚举是一种有用的数据类型,可以减少代码中的魔法数字或字符串的使用,使代码更易读。在SQL Server中创建和使用枚举非常简单,并且您可以使用CHECK约束来限制非枚举值的输入。