UNIQUE KEY 唯一约束

唯一约束可以保证记录唯一性 约束字段可以为空值NULL 每个表可以有多个UNIQUE约束 但是每个数据表只能有一个 PRIMARY KEY 约束;
mysql> CREATE TABLE SEVEN(
    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    -> username VARCHAR(20) NOT NULL UNIQUE KEY,
    -> age TINYINT UNSIGNED
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW COLUMNS FROM seven;
+----------+----------------------+------+-----+---------+----------------+
| Field    | Type                 | Null | Key | Default | Extra          |
+----------+----------------------+------+-----+---------+----------------+
| id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)          | NO   | UNI | NULL    |                |
| age      | tinyint(3) unsigned  | YES  |     | NULL    |                |
+----------+----------------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)
mysql> INSERT seven(username,age)VALUES("Tom",21);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT seven(username,age)VALUES("Tom",21);
ERROR 1062 (23000): Duplicate entry 'Tom' for key 'username'    唯一性开始报错;
mysql>

 

### UNIQUE KEY 的约束作用 UNIQUE KEY 是一种用于确保数据库表中某一列或某几列组合的数据唯一的约束机制。它能够防止重复数据的插入,从而维护数据的完整性[^2]。 #### 1. **UNIQUE KEY 的定义** UNIQUE KEY 主要用来保证指定字段内的每一行数据都具有唯一性。这意味着,在设置了 UNIQUE 约束的列中,不允许存在两个完全相同的。然而,与 PRIMARY KEY 不同的是,UNIQUE KEY 列允许存储一个 `NULL` [^1]。 #### 2. **UNIQUE KEY 的特点** - 每张表可以拥有多个 UNIQUE KEY 约束。 - 它不会自动创建聚集索引(Clustered Index),而是会生成非聚集索引(Non-Clustered Index)来加速查询操作[^1]。 - 只能有一条记录包含 `NULL` ;如果有多条记录,则这些记录除了 `NULL` 外其他部分也必须不同[^2]。 #### 3. **如何使用 UNIQUE KEY** ##### 创建带有 UNIQUE KEY 的表 可以通过在建表时直接声明 UNIQUE KEY 来实现该功能: ```sql CREATE TABLE Person ( id INT, email VARCHAR(255), phone_number VARCHAR(15) UNIQUE -- 设置电话号码为唯一键 ); ``` ##### 向现有表添加 UNIQUE KEY 对于已经存在的表格,也可以通过修改结构的方式来增加新的 UNIQUE KEY 约束: ```sql ALTER TABLE agricultural_products ADD UNIQUE KEY unique_products_name (agricultural_products_name); ``` 此命令将在 `agricultural_products` 表上的 `agricultural_products_name` 字段上建立名为 `unique_products_name` 的唯一性约束[^3]。 ### 总结 综上所述,UNIQUE KEY 属于一种重要的数据完整性保障措施之一,其主要职责在于维持特定字段或者字段组内部数的独特性质。尽管它的某些特性类似于PRIMARY KEY ,比如强制执行独一无二的要求,但在实际应用中有更灵活的表现形式,例如支持单个null得存在等特殊情形下显得尤为有用[^1][^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值