MySQL唯一约束(UNIQUE KEY)_mysql unique_YHJ的博客-程序员秘密

技术标签: mysql  

MySQL 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘0001’,那么该表中就不能出现另一条记录的 id 值也为‘0001’。

唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。而主键约束在一个表中只能有一个,且不允许有空值。比如,在用户信息表中,为了避免表中用户名重名,可以把用户名设置为唯一约束。

在创建表时设置唯一约束

唯一约束可以在创建表时直接设置,通常设置在除了主键以外的其它列上。

在定义完列之后直接使用 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)

在修改表时添加唯一约束

在修改表时添加唯一约束的语法格式为:

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)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40918067/article/details/116868766

智能推荐

Python编程:从入门到实践第11章习题答案_On_The_Way324的博客-程序员秘密

习题11-1&amp;amp;11-2 name_function.py#!/usr/bin/env python#-*-coding:utf8-*-def format_name (first,last,middle=''): &quot;&quot;&quot; 格式化一个姓名&quot;&quot;&quot; if middle: fullname = first +' '+middle+' '+last else: fullname...

Java餐厅点餐系统【附源码&报告】_米莱虾的博客-程序员秘密

时间太久了,数据库之类的不在了,没法打包资源上传,有粉丝想要完整代码,故更新一下。有资源需求之类的可以直接私信或者在评论区留言,博主会进行更改。目录1. 绪论1.1课题目标1.2课题背景1.3开发意义 2. 需求分析2.1需求描述2.2数据流图2.3 数据字典2.4概念结构设计E-R图3. 系统设计3.1 软件功能总体设计3.2软件功能详细设计4. 数据库设计4.1 逻辑结构设计5系统实现交互图5.1 下单...

Android 9.0 SecureElementService 初始化流程分析_0冰糖土豆0的博客-程序员秘密

1. 相关名词解释 NFC Near Field Communication,近场通信,一种基于13.56 MHz 的短距离通信技术。 NFCC NFC Controller,NFC 控制器,负责 NFC 无线信号的调制解调 SE Secure Element,安全芯片,拥有独立的内...

我的考场vimrc的配置_weixin_30666753的博客-程序员秘密

1 set ruler 2 set number 3 set mouse=a 4 set tabstop=4 5 set shiftwidth=4 6 set softtabstop=4 7 8 set wrap 9 set smarttab10 set smartindent11 set autoindent12 set linebreak...

【技术三千问】之《SPI问题难点解析》,干货汇总!_RT-Thread物联网操作系统的博客-程序员秘密

技术三千问:【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总【技术三千问】之《AT组件问题汇总与解析》,干货汇总!【技术三千问】之《UART串口问题解析》,干货汇总!【技术三千问】之《LWIP以太网问题解析》,干货解读!【技术三千问】之《FAT文件系统问题解析》,干货汇总!【技术三千问】之《FLASH问题难点解析》,干货汇总【技术三千问】之《SPI问题难点解析》,干货汇总!本文汇总了RT-Thread论坛的有关SPI相关的技术文章及问答,如果你有疑问,你可以在本文搜索相应的关键词

同一浏览器登录多个用户导致的错误_同一浏览器登录两个账号混了_玛丽莲茼蒿的博客-程序员秘密

一、前言近期在登录某个系统的时候,我用同一个浏览器登录了两个账号。退出来以后再也登不上去了,并且第一次退出的账号显示“没有注册过”???登录第二个退出来的账号,网站报出了一下错误二、错误分析查了一下,确实是因为存在两个用户而引发的问题服务端区分不同用户是通过 Cookie 中存储的 JSESSIONID 区分的,如果 JSESSIONID 相同,那么他们在服务端将会使用同一个 Session 对象。而同一浏览器使用的 Cookie 是相同的, 从而 JSESSIONID 也是相同的,无法区分不

随便推点

一些淡忘了的Java日期时间函数_aijun1982的博客-程序员秘密

package test;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;public class SQLDate {    public static void main(Str...

设置花里胡哨的Xshell字体与背景颜色(超全)_DBA之路的博客-程序员秘密

大部分运维和开发经常接触到的客户端连接工具很多都是Xshell,但是经常看到别人的背景色和字体都是五颜六色,还有护眼色的背景(想必大家也会遇到在深夜加班时为了不打扰身边小伙伴的休息不开灯,打开Xshell时可以闪瞎人眼的白色背景),多种颜色的字体来区分不同文件,目录,压缩文件,注释等属性。顿...

【 安装 joystick-drivers 与 turtlebot3-* 】rbx1 中 melodic 版本安装 joystick-drivers 与 turtlebot3-*_猪猪传奇的博客-程序员秘密

使用以下命令即可完成安装:sudo apt-get install ros-melodic-joystick-drivers \ros-melodic-turtlebot3-*

认识一个在英国的朋友 _djt2000的博客-程序员秘密

我只知道最先做最重要的事情,但不知道对我来说什么是最重要的,有时自己感觉自己知道,实际上还是不知道,一定要知道什么是最重要的。要学会放松!

word排版案例报告_导师:论文排版都搞不好,你拿什么去投稿?!_weixin_39589253的博客-程序员秘密

使用Word给论文排版时,您是否常常因为下述的问题而感到头大?问题1:由于Word不同版本的兼容性问题,文章格式上很难做到统一,因此投稿经常被退回……问题2:不同期刊对格式会有不同要求,转投稿件时会涉及大量格式细节上面的改动问题,想想那些自己辛辛苦苦熬夜才改好的格式,还要再改!!!Emm……真是无语!问题3:涉及数学公式的编辑与排版时,束手无策,根本不知道该如何编辑!图片及图表的一点点改...

搭建神经网络的八股_babing2770的博客-程序员秘密

准备 前传 反传 迭代0准备 import   常量定义   生成数据集1前向传播: 定义输入 参数 和 输出   x=   y_=   w1=   w2=   a=   y=2反向传播: 定义损失函数 反向传播方法loss=train_step=3生成会话: 训练STEPS轮with tf...

推荐文章

热门文章

相关标签