Mysql之ENUM

Mysql不支持传统的Check约束,所以可以通过ENUM解决(做一些选择)

比如:



### MySQL ENUM 类型使用说明 #### 创建带有 ENUM 列的表格 在 MySQL 中,`ENUM` 是一种特殊的字符串对象,其值来自一组预先定义好的字符串列表。创建 `ENUM` 类型列的基本语法如下: ```sql CREATE TABLE table_name ( column_name ENUM('value1', 'value2', 'value3', ...) ); ``` 此语句会创建一张名为 `table_name` 的新表,在其中有一个名为 `column_name` 的列,该列的数据类型被设置为枚举类型,并指定了可能取到的具体值[^1]。 #### 插入数据至 ENUM 列 当向具有 `ENUM` 字段的表中插入记录时,所给定的值必须匹配已定义的选项之一;如果提供了不在允许范围内的值,则默认情况下会被存储为空串(除非设置了严格模式)。下面是一个具体的例子展示如何操作: ```sql INSERT INTO orders (order_status) VALUES ('pending'); -- 正确执行并保存状态为 "pending" INSERT INTO orders (order_status) VALUES ('cancelled'); -- 如果未定义取消订单的状态,这行命令将会失败或存入空字符取决于服务器配置 ``` #### 查询 ENUM 值及其内部序号 值得注意的是,虽然我们通常只关心实际的文字表示法,但在数据库内部,每一个枚举成员都被赋予了一个唯一的整数编号——即它们按照声明顺序依次排列而成的位置索引加一的结果。可以通过查询这些信息来更好地理解底层机制: ```sql SELECT DISTINCT order_status, ORDINAL_POSITION FROM information_schema.COLUMNS WHERE TABLE_NAME='orders' AND COLUMN_TYPE LIKE '%enum%'; ``` 这段 SQL 将返回所有属于 `orders` 表内 `ENUM` 类型列的不同项以及各自对应的数值位置[^5]。 #### 修改现有 ENUM 列 有时需要更新现有的 `ENUM` 列以适应业务逻辑的变化。为此目的而设计的操作包括但不限于增加新的合法条目、重新排序已有项目或是完全替换整个集合。具体实现方式依赖于应用需求和个人偏好,但一般建议先备份原始结构再做任何改动以防意外发生。 对于简单的追加情况而言,可以直接通过 ALTER TABLE 语句完成任务: ```sql ALTER TABLE orders MODIFY order_status ENUM('pending','processing','shipped','delivered','on_hold') DEFAULT 'pending'; ``` 上述代码片段展示了怎样安全地扩展原有状态集而不影响现存数据的有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值