史上最简单的 MySQL 教程(十二)「列属性 之 唯一键」

唯一键

唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键就是用来解决表中多个字段需要具有唯一性的问题

唯一键的本质与主键差不多,唯一键默认的允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。

增加唯一键

增加唯一键的方法和主键类似,有 3 种方法,分别为:

第一种:在创建表的时候,字段后面直接添加unique或者unique key关键字

-- 增加唯一键
create table my_unique(number char(10) unique comment '学号',name varchar(20) not null
)charset utf8;

第 2 种:在所有字段之后,增加unique key(字段列表),可以设置复合唯一键

-- 测试唯一键
create table my_unique2(number char(10) not null,name varchar(20) not null,unique key(number)
)charset utf8;

观察上图,咱们可能会发现一个问题,那就是:咱们设置的唯一键UNI,怎么变成了主键PRI啊?这是由于当唯一键满足非空条件的时候,其性质就和主键一样啦,因此在表中显示为PRI. 当然,在咱们执行如下 SQL 语句的时候,其就会表现出真正的性质:

-- 查看表创建语句
show create table my_unique2;

第 3 种:在创建表之后,增加唯一键

-- 创建未设置唯一键的表
create table my_unique3(id int primary key auto_increment,number char(10) not null,name varchar(20) not null
)charset utf8;

如上图所示,表my_unique3未设置唯一键。接下来,执行如下 SQL 语句,进行测试:

-- 增加唯一键
alter table my_unique3 add unique key(number);

如上图所示,咱们已经成功向表中增加唯一键啦!

唯一键约束

唯一键与主键本质相同,区别在于:唯一键允许字段值为空,并且允许多个空值存在

-- 测试唯一键约束
insert into my_unique values(null,'Charies');
insert into my_unique values(null,'Guo');

]

更新唯一键 & 删除唯一键

在表中,更新唯一键的时候,可以不用先删除唯一键,因为表的唯一键允许有多个。

删除唯一键的语法为:

  • 基本语法:alter table + 表名 + drop index + 索引名字;

在这里,唯一键默认使用字段名作为索引名。

-- 删除唯一键
alter table my_unique3 drop index number;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5dlncQzR-1648255583415)(https://github.com/guobinhit/mysql-tutorial/blob/master/images/uniquekey/desc-myunique3.png)]

如上图所示,显然咱们已经成功删除表中的唯一键啦!


温馨提示:符号+表示连接的意思。


史上最简单的 MySQL 教程(十二)「列属性 之 唯一键」相关推荐

  1. mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」

    连接查询连接查询:将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加. 连接查询的意义:在用户查询数据的时候,需要显示的数据来自多张表. 连 ...

  2. 史上最简单的 MySQL 教程(二)「关系型数据库」

    关系型数据库 1 定义 关系型数据库,是一种建立在关系模型(数学模型)上的数据库. 至于关系模型,则是一种所谓建立在关系上的模型,其包含三个方面,分别为: 数据结构:数据存储的形式,二维表(行和列): ...

  3. 史上最简单的 MySQL 教程

    史上最简单的 MySQL 教程 数据库是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变 ...

  4. 史上最简单的 MySQL 教程(三十二)「子查询(下)」

    子查询 子查询:sub query,查询是在某个查询结果之上进行的,一条select语句内部包含了另外一条select语句. 行子查询 行子查询,返回的结果可以使一行多列或者多行多列. 需求:查询学生 ...

  5. 史上最简单的 MySQL 教程(十四)「列属性 之 主键」

    主键 主键:primary key,表中主要的键,每张表只能有一个字段(复合主键,可以多个字段)使用此属性,用来唯一的约束该字段里面的数据,不能重复. 增加主键 在 SQL 操作中,有 3 种方法可以 ...

  6. 世上最简单的mysql_史上最简单安装MySQL教程

    1.安装MySQL 很多都推荐在MySQL官网进行安装,我刚开始试的时候官网下载zip文件,打开完全找不到,踩坑了后面我发现了Windows简易安装,俗称傻子都会安装 安装好了就会看到一个这个文件 安 ...

  7. 史上最简单的 MySQL 教程(三十一)「子查询(上)」

    子查询 子查询:sub query,查询是在某个查询结果之上进行的,一条select语句内部包含了另外一条select语句. 分类 子查询有两种分类方式,分别为:按按结果分类和位置分类. 按结果分类, ...

  8. 史上最简单的 MySQL 教程(五)「SQL 基本操作 之 表操作」

    温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star.Fork,纠错. SQL 基本操作 基本操作:CURD,即增删改查. 根据操作对象的不同 ...

  9. 史上最简单的 MySQL 教程(六)「SQL 基本操作 之 数据操作」

    SQL 基本操作 基本操作:CURD,即增删改查. 根据操作对象的不同,咱们可以将 SQL 的基本操作分为三类,分别为:库操作.表(字段)操作和数据操作. 数据操作 1 新增数据 对于数据的新增操作, ...

最新文章

  1. 苹果12 Pro Max和mini测评来了,看完我选择了iPhone 12
  2. 阿铭每日一题 day 6 20180116
  3. mysql sql variant_SQL 数据类型
  4. Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结
  5. ik分词器 mysql php_php环境下使用elasticSearch+ik分词器进行全文搜索
  6. D3 scaleOrdinal
  7. jquery学习笔记一之window.onload与$(document).ready()区别
  8. 算法学习第一天-搭建能运行算法第四版的代码
  9. 【180626】VC挖金子游戏源代码
  10. K60笔记2——内存空间分布
  11. 西门子PLC S7-1200程序实例,博图版本V15,仅供电气编程者学习借鉴
  12. oracle 将钱转换万元单位,oracle中单位换算。
  13. python是最适合初学者的语言
  14. vue 统计中英文字符串长度_Ant Design Vue实现区分中英文分全角/半角字符长度校验功能...
  15. 【RFID】天线技术
  16. 办公网建设设备选型及报价参考(500人规模)
  17. zookeeper-常用命令,集成springboot,分布式锁实现和原理 ,dock集群zookeeper搭建,
  18. Java_多线程、并发控制、分布式锁、存储结构、消息队列常见问题
  19. 格力美的,谁代表中国制造的未来
  20. 【PSO三维路径规划】粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】

热门文章

  1. 获取各大电商平台,item_get_app - 获得淘宝app商品详情原数据API返回数据说明
  2. ****女公务员辞职“卖瓜子” 4个月销售收入5000万【新媒体+电商】
  3. 《勇者名录》11.19正式上线链游玩家|休闲养肝、探索大陆
  4. 路由器AP、路由、桥接模式有什么区别【详细介绍】
  5. 备份 二进制备份MySQLdump 增量备份 xtrabackupex
  6. python3爬取头条比基尼图片
  7. MFC 图标 icon 如何制作?
  8. 2022年为什么降薪也要跳槽?机会比涨薪很重要?
  9. 三星14纳米EUV DDR5 DRAM量产;Amazfit推出三款智能手表;Whale帷幄获5000万美元融资 | 全球TMT...
  10. 北美华人第一大折扣信息网站。北美省钱快报是北美最有人气的微博,北美省钱快报是新浪折扣频道独家合作伙伴...