mysql alter 唯一键_MySQL列属性 之 唯一键

MySQL列属性 之 唯一键

唯一键

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

例如身份证号码应该每一行的记录不一样,需要具有唯一性。

唯一键的本质与主键差不多,唯一键允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。也就是说可以插入多个空字段。

增加唯一键

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

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

-- 增加唯一键

create table my_unique(

number char(10) unique comment '学号',

name varchar(20) not null

)charset utf8;

43fcdffeaae884b9b20c922c32e9e23e.png

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

-- 测试唯一键

create table my_unique2(

number char(10) not null,

name varchar(20) not null,

unique key(number)

)charset utf8;

4031f30eaa4e1e993ef3400210b990f7.png

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

-- 查看表创建语句

show create table my_unique2;

df6eda02fd5907cdc868feb33bcf6aab.png

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

-- 创建未设置唯一键的表

create table my_unique3(

id int primary key auto_increment,

number char(10) not null,

name varchar(20) not null

)charset utf8;

65dd16d9fa1fe362b6de1bd2fafcaf08.png

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

-- 增加唯一键

alter table my_unique3 add unique key(number);

d3b82345c8edd23adbf59241a6b21616.png

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

唯一键约束:允许多个值为空

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

-- 测试唯一键约束

insert into my_unique values(null,'Charies');

insert into my_unique values(null,'Guo');

3269596959b092dc554766096a6a7055.png

更新唯一键 & 删除唯一键

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

删除唯一键的语法为:

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

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

-- 删除唯一键

alter table my_unique3 drop index number;

dc78a6df0768e263b4701d53a938510e.png

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在mysql中添加复选框_如何使用输入和复选框更新mysql

如果我理解正确,您需要这样做:mysql_query("UPDATE mp3SETaktif 1,baslik " . mysql_escape_string($_POST[baslik]) ."WHERE id $zuha");mysql_query("update mp3 set aktif 1,baslik $_POST[baslik]where id $_POST[id]")现在唯一的区别…

mysql 检查列是否存在,如何检查mysql表列是否存在?

How can I check if mysql table field even exists ?The column name is price and I need to see if it exists.Havent understood really how the EXISTS works...Any examples or ideas ?Thanks解决方案In PHP:$fields mysql_list_fields(database_name, table_name);$c…

mysql proxy yum_mysql 高可用架构 proxysql 之一 yum安装

os:centos 7.4mysql: 5.7proxysql: 1.4.10ip 规划如下:192.168.56.101 node1 (proxysql)192.168.56.102 node2 (mysql master)192.168.56.103 node3 (mysql slave)192.168.56.104 node4 (mysql slave)安装mysql 5.7node2、node3、node4 安装 mysql 5.7 software详细…

wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界…

antd新增一行页码不正确_antd-Table@4.x对rowKey属性的重构

时间:2020/04/26 ,转载请注明出处。写在前面antd团队于2020年2月发布了酝酿已久的antd4.0版本,对样式的调整、部分组件逻辑的重构都进行了较大改动,本文针对Table的rowKey属性重构作分析。由一个mistake带来的思考在数据治理模块的…

qt调用mysql调用了存储过_Qt调用Server SQL中的存储过程

Server SQL中的存储过程如下:CREATE procedure PINSERTPCpcnum int,pcname varchar(50),pctype int,ipaddress varchar(50),port int,pcid int outputas--declare pcid intif exists (select * from COMPUTERTABLE where PcNum pcnum)set pcid -1elsebegininser…

pandas mysql index_Pandas从入门到精通(3)- Pandas多级索引MultiIndex

首先了解一下什么是多级索引,以及它的作用,为什么要有这个玩意。多级索引也称为层次化索引(hierarchical indexing),是指数据在一个轴上(行或者列)拥有多个(两个以上)索引级别。之所以引入多级索引,在于它可以使用户能以低维度形式…

tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时

1 概述TensorFlow架构设计精巧,在后端运行时这一层,除了提供本地运行时外,还提供了分布式运行时。通过分布式训练,在多台机器上并行执行,大大提高了训练速度。前端用户通过session.run()启动系统执行时,tar…

shell swt 样式_SWT之路:SWT图像显示

简明现代魔法 -> Java编程语言 -> SWT之路:SWT图像显示SWT之路:SWT图像显示2009-10-03程序演示还是先用SWT Desiner创建界面程序。然后创建一个Display对象和Image对象,和一个GC对象。类org.eclipse.swt.graphics.GC是一个封装了所有可…

swool tcp mysql_swoole/mysql(异步)

# 异步Swoole\Mysql**(要求Workerman版本>3.3.6)**## 注意:此组件由swoole底层提供,由C语言编写,具有超高性能。## 安装:安装有swoole扩展即可## 示例:phprequire_once ../Autoloader.php;use Workerman\Worker;use \Swoole\My…

xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

一、前言在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的。所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提示方式,让用户决定…

python 绝对值误差小于10-6_Python 被低估了的 10 个小技巧

hi,各位朋友们,小帅b回来啦,几日不见,想我了么?今天给大家分享几个我认为不错的 Python 小技巧,有些可能被你低估了哟,get 起来!那么接下来就是:学习 Python 的正确姿势俗…

java bean验证_javaBean--登录验证

packagecom.JAVABean;importjava.util.HashMap;importjava.util.Map;publiccla***egister{privateStringname;privateStringage;privateStringemail;privateMaperrorsnull;//声明一个保存全部错误信息的map集合publicRegister(){//在构造方法中初始化属性this.name""…

java读取src xml文件路径_Java获取路径方法相对路径读取xml文件方法

(1)、request.getRealPath("/");//不推荐使用获取工程的根路径(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRealPa…

释放tcp连接的命令是_最实用的6个网络命令,网络故障不求人

很多弱电工程师朋友在项目中经常遇到一些网络故障,需要通过一些一些命令去检测、定位故障点,通过使用网络命令,故障解决的工作取得了事半功倍的效果。下面就一起温故而知新吧!一、ping命令(因特网包探索器)…

airpods2怎么查正品 ios11系统_拼多多AirPods2开箱评测,4种办法教你验真假,10个AirPods技巧教你玩...

大家好,Apple今天给大家分享一下拼多多上车AirPods 2无线充电盒版的经验,顺便整理了一波AirPods使用技巧,希望你用得上。入手理由自从去年10月份入手了iPhone XR,其实就挺想入款无线耳机的,所以一直在等AirPods升级换代…

java中for break的用法_java break语句的使用方法

在switch语中,break语句用来终止switch语句的执行。使程序 switch语句后的第一个语句 开始执行。在Java中,可以为每个代码块加一个括号,一个代码块通常 用大括号{}括起来的一段 代码。加标号的格式break语句有两种形式:无标签和有标签。无标签的break语句用来跳出单…

windows文件保护_Windows系统下媲美时间机器的系统备份工具,统统免费

Windows和macOS系统谁更美?不同的人有不同的见解。但体验过macOS之后很多电脑玩家会感叹,TimeMachine时间机器太好用了,Windows下有没有同类功能呢?TimeMachine提供了全盘完整备份、增量备份、文件历史版本等功能。它们在Windows …

JAVA结课_一点心情,写java结课考试之前

突然发现,已经好久没有上来写blog了,本来还以为能够天天写,后来发现,确是心有余力而不足啊。学期进入中段,课业慢慢多了,各种各样的事情也接踵而来了。本学期的java课程也已经结课了,8周32个学时…

sql怎么撤回update_腾讯SQL“现役运动员”给你的实践小技巧

引言SQL的全称是Structured Query Language(结构化查询语言),是一种古老而简洁的程序设计语言。看似平平无奇,一直被各种吐槽,但却有着众多语言所难得的漫长寿命,并展现出极好的拓展性,在不同时期衍生出不同的子语言。…