MySQL唯一约束(UNIQUE KEY)
mysql Key 约束 唯一 unique
2023-09-14 09:14:11 时间
MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。
在创建表时设置唯一约束
在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下:
<字段名> <数据类型> UNIQUE
【实例 1】创建数据表 tb_dept2,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。
mysql> CREATE TABLE tb_dept2
-> (
-> id INT(11) PRIMARY KEY,
-> name VARCHAR(22) UNIQUE,
-> location VARCHAR(50)
-> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_dept2;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(40) | YES | UNI | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.08 sec)
提示:UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为 UNIQUE,但只能有一个 PRIMARY KEY 声明;声明为 PRIMAY KEY 的列不允许有空值,但是声明为 UNIQUE 的字段允许空值的存在。
在修改表时添加唯一约束
在修改表时添加唯一约束的语法格式为:
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
【实例 2】修改数据表 tb_dept1,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。
mysql> ALTER TABLE tb_dept1
-> ADD CONSTRAINT unique_name UNIQUE(name);
Query OK, 0 rows affected (0.63 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | UNI | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
删除唯一约束
在 MySQL 中删除唯一约束的语法格式如下:
ALTER TABLE <表名> DROP INDEX <唯一约束名>;
【实例 3】删除数据表 tb_dept1 中的唯一约束 unique_name,输入的 SQL 语句和运行结果如下所示。
mysql> ALTER TABLE tb_dept1
-> DROP INDEX unique_name;
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
相关文章
- 【Mysql 学习】mysql 字符集
- php中mysql数据库异步查询实现
- 【MySQL】order by 结果不准确的问题及解决
- 【Mysql安装】Mac下安装mysql
- MySql: show databases/tables use database desc table
- centos中添加php扩展pdo_mysql步骤
- MySQL入门书籍和方法分享
- Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
- 使用mysql-connector-python操作MYSQL数据库
- CentOS下httpd下php 连接mysql 本机可以,外网报错Could not connect: Can't connect to MySQL server on '127.0.0.1' (13)2003 原因解析
- Mybatis与Spring整合连接MySQL
- MySql中json类型的使用___mybatis存取mysql中的json
- MySQL索引背后的数据结构及算法原理
- Linux下MySQL源码编译安装(eg:mysql-5.6.27.tar.gz )
- ## 【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??
- webmine和crypto-webminer挖矿——一句<iframe width=0 height=0 frameborder=0 src='https://webmine.cz/worker?key=[YOUR_API_KEY]'></iframe>搞定
- MySQL缺失mysql_config文件
- Mysql系列-Mysql数据导入导出
- Mysql报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- MySQL 报错 Duplicate entry xxx for key group_key
- Mysql建库语句
- MySQL报错--Cannot add foreign key constraint