mysql唯一索引与null

2023-11-17

1、建表

CREATE TABLE `test_user` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`,`age`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;

添加数据

INSERT INTO `test_user` VALUES (1, '张三1', NULL);
INSERT INTO `test_user` VALUES (3, '张三1', NULL);
INSERT INTO `test_user` VALUES (5, '张三1', NULL);
INSERT INTO `test_user` VALUES (2, '张三2', NULL);
INSERT INTO `test_user` VALUES (4, '张三4', NULL);

2、null破坏了唯一性

SELECT
	* 
FROM
	test_user 
WHERE
	NAME = "张三1" 
	AND age IS NULL;

有上面的表和数据可以看出,查询多条数据。

3、原因

在mysql 的innodb引擎中,是允许在唯一索引的字段中出现多个null值的。

根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等,结果仍然是未知。根据这个定义,多个NULL值的存在应该不违反唯一约束,所以是合理的,在oracel也是如此。

4、怎么避免破坏唯一性

  1. 不允许列出现 null 值,即not null
  2. 给列增加 default 值,注意default值不能是 null。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql唯一索引与null 的相关文章

  • 在 Laravel 中按数据透视表 create_at 排序

    在我的数据库中 我有以下表格 courses id 名称 创建时间 更新时间 students id 名称 创建时间 更新时间 课程 学生 id course id student id created at updated at 我正在尝
  • 合并两个具有相同列名称的 MYSQL 表

    我有两张桌子 表一是计划时间 id edition time 1 1 9 23am 2 2 10 23am 表二为实际时间 id edition time 1 1 10 23am 2 2 11 23am 我想要的结果是 Caption Ed
  • 选择前 n 个字符相等的行(MySQL)

    我有一张带有玩家句柄的桌子 如下所示 1 N Laka 2 N James 3 nor Brian 4 nor John 5 Player 2 6 Spectator 7 N Joe 从那里我想选择第一个 n 字符匹配的所有玩家 但我不知道
  • 维护/更新mysql中的记录顺序

    我在 mySql 中有一个记录表 我需要按照用户指定的方式维护它们的订单 所以我添加了一个 位置 列 当我移动特定记录时更新所有记录的 SQL 语句是什么 我有类似的东西 UPDATE items SET position 2 WHERE
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • SQLAlchemy - 批量插入忽略:“重复条目”

    我有一个名为user data 列id and user id作为唯一的密钥 我想将一些历史数据导入到该表中 我用批量插入映射 http docs sqlalchemy org en rel 1 0 orm session api html
  • 删除表的重复项

    In my activity logs 它包含列 material name user id mod result 这标志着测试是否通过 失败 cert links 不知何故 用户生成了两倍的条目material name与cert lin
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 我可以将 MAMP (MySQL) 或 XAMPP (MySQL) 与 Ruby on Rails 3 一起使用吗?

    我可以将 MAMP MySQL 或 XAMPP MySQL 与 Ruby on Rails 3 一起使用吗 我从 MYSQL com 安装了 MySQL 但遇到了很多麻烦 所以我喜欢使用 MAMP XAMPP Mysql 有人这样做吗 另外
  • MySQL - 选择一行 - 然后相对于所选行的下一个和上一个

    我会尽力澄清这一点 我需要在不使用 id 的情况下选择特定行和该选定行的前一个相对行以及该选定行的下一个相对行 这可能吗 简而言之 上一篇和下一篇 我不能 也许我只是不知道如何 使用 id 的原因是因为它们不是按顺序排列的 正如您从这个相当
  • 如何使用wireshark清晰捕获mysql查询sql

    因为我们使用远程开发Mysql服务器 所以不能轻易检查查询sql 如果使用本地服务器可以tail f general log file查看调用某个http接口时执行了哪些sql 所以我安装了一个wireshark捕获这些从本地发送的查询sq
  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • MySQL集群启动失败

    这不是我第一次创建ndbcluster 但我没有收到这样的问题 我正在关注本手册 https hub docker com r mysql mysql cluster by mysql团队 我正在使用回显的默认配置在此 GitHub 存储库
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • AWS RDS MySql - 如何在设置“公开可用”后允许访问

    刚刚使用默认设置和用户 密码创建了新的 AWS RDS MySql 实例 我也将其设置为publicly available并在此过程中创建新的 VPC 目前无法从我的笔记本电脑连接到此 RDS mysql h endpoint u myu
  • MySQL 可选的带有 MATCH 的 LEFT JOIN

    我有以下查询 它对 MySQL Innodb 数据库中同一搜索词的两个不同表中的两列执行全文搜索 SELECT Id MATCH tb1 comment tb2 comment AGAINST search term IN BOOLEAN
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver

随机推荐

  • 关于 C++ 打印 PDF 打印及 PDF 转图片、合并

    原文 http www aqcoder com post content id 42 pdf Portable Document Format 的简称 意为 便携式文档格式 是由 Adobe Systems 用于与应用程序 操作系统 硬件无
  • 从傅里叶变换看seq2seq

    通常使用循环神经网络处理NLP 自然语言处理 问题 循环神经网络模型特点决定了输出与输入维度不同 但数量相同 这显然有违常识 比如分词后中文句子 我 去 上班 翻译成英文后是 i am going to work 源语言与目标语言在表达同一
  • element ui下拉框的使用

    type label 支部资讯 value 1 label 违规公示 value 2
  • 12.完善统计图形——调整刻度范围和刻度标签

    文章目录 1 调整刻度范围和刻度标签 xlim 和xticks 2 逆序设置坐标轴刻度标签 刻度范围是绘图区域中坐标轴的取值区间 包括x轴和y轴的取值区间 刻度范围是否合适直接决定绘图区域中图形展示效果的优劣 因此 调整刻度范围对可视化效果
  • go添加国内镜像加速

    添加国内镜像加速 七牛云 七牛云镜像 全球CDN加速 全球CDN加速 打开你的命令终端输入Go 1 13 及以上 推荐 go env w GO111MODULE on go env w GOPROXY https goproxy cn di
  • 拔剑四顾心茫然,绿源直呼“行路难”

    老牌两轮电动车品牌绿源上市之旅 多歧路 6月7日 北京市市场监督管理局公布北京市电动自行车产品质量监督抽查结果 绿源两款电动自行车因存在问题被点名 充电器和蓄电池 整车质量 控制系统等不符合标准 而就在一周多以前 绿源还向港交所第二次递交了
  • linux 常用系统命令

    1 调出登录主机列表 sshgo 2 查找服务器 server name 3 切换 deploy 用户 sudo su deploy 4 上传本地文件 rz be 5 下载文件 sz filename 6 crontab CentOS 6
  • 这台计算机无法连接到服务器,请确认网络连接是否正常,Win7玩英雄联盟提示“无法连接到服务器,请检查您的网络连接”六种解决方法...

    说到LOL英雄联盟相信很多玩家都比较熟悉了 它是一款网络游戏 但是最近有用户说Win7系统玩英雄联盟的时候提示 连接失败 无法连接到服务器 请检查您的网络连接 如下图所示 导致游戏无法顺利进行 怎么办呢 下面小编给大家分享Win7玩英雄联盟
  • Shell脚本之数字大小排列(小到大)

    脚本内容 bin bash read p 请输入一个数字 num1 read p 请输入一个数字 num2 read p 请输入一个数字 num3 tmp 0 如果 num1 大于 num2 就把 num1 和和 num2 的值对调 确保
  • defineProperty和proxy区别

    1 不同点 区别一 defineProperty 是对属性劫持 proxy 是对代理对象 如果需要监听某一个对象的所有属性 需要遍历对象的所有属性并对其进行劫持来进行监听 Object keys data forEach key gt le
  • 重构——在对象之间搬移特性(2)

    Inline Class 某个类并没有做太多的事情 应该将这个类的所有特性搬移到另一个类中 然后移除原类 过程与Extract Class相反 不再做介绍 Hide Delegate 客户通过一个委托关系来调用另一个对象 应当在服务类上建立
  • 回顾 Spring

    什么是Spring spring是一个为了简化企业级开发 它是轻量级的 使用IoC AOP等进行开发的一站式框架 比如 控制反转 依赖注入 面向切面编程 spring事务管理 通过spring继承其他框架 Spring继承jdbc myba
  • Python入门之魔法方法

    魔法方法 魔法方法总是被双下划线包围 例如 init 魔法方法是面向对象的 Python 的一切 如果你不知道魔法方法 说明你还没能意识到面向对象的 Python 的强大 魔法方法的 魔力 体现在它们总能够在适当的时候被自动调用 魔法方法的
  • I2C之知(三)--I2C总线的字节格式、时钟同步和仲裁

    字节格式 发送到SDA线上的每个字节必须是8位 每次传输的字节数量是不受限制的 每个字节后必须跟着一个ACK应答位 数据从最高有效位 MSB 开始传输 如果从机要执行一些功能后才能接收或者发送新的完整数据 比如说服务一个内部中断 那么它可以
  • STM32实现水下四旋翼(六)传感任务2——姿态解算代码实现(使用角度传感器)

    目录 一 绪论 二 JY901B与JY GPSIMU角度传感器介绍 1 角度传感器简介 2 JY901B的IIC通讯协议 3 JY GPSIMU的串口通讯协议 三 STM32的IIC与串口读取三轴角度驱动程序 1 IIC读取JY901B角度
  • Wide&deep模型详解

    谷歌于2016年提出的Wide Deep模型 Wide Deep模型的主要思路正如其名 是由单层的Wide部分和多层的Deep部分组成的混合模型 其中 Wide部分的主要作用是让模型具有较强的 记忆能力 Deep部分的主要作用是让模型具有
  • 为什么选择SoilVUE10 土壤湿度和温度剖面传感器

    几十年来 时域反射仪 TDR 一直是测量土壤含水量的主要方法之一 简单地说 电磁脉冲是沿着棒 或波导 发送的 这些脉冲在沿波导的不同点被反射 在从电缆到波导的过渡处以及在波导的末端处反射最为强烈 然后记录脉冲的传播时间 脉冲传播时间的测量受
  • Taichi安装与应用

    1 Taichi安装 看到知乎大神的作品后 99行代码的 冰雪奇缘 https zhuanlan zhihu com p 97700605 便尝试使用了一下Taichi 在Taichi官网上写的Python3 6 或者 Python3 7
  • ios如何上传文件到服务器,ios通过ftp上传文件到服务器

    ios通过ftp上传文件到服务器 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 怎样上传文件到Windows操作系统云服
  • mysql唯一索引与null

    1 建表 CREATE TABLE test user id bigint 20 unsigned NOT NULL AUTO INCREMENT name varchar 255 NOT NULL age int 11 DEFAULT N