mysql 建表 null,MySQL:唯一,但默认为NULL-创建表允许。允许插入多个NULL。为什么?...

2023-11-15

I've just checked and it's allowed to create a table with a column that is NULL by default, although it's a UNIQUE KEY at the same time:

CREATE TABLE IF NOT EXISTS `u789` (

`column1` varchar(10) DEFAULT NULL,

UNIQUE KEY (column1)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

As I understand, it looks odd and has not much sense. I expected the second insert of

INSERT INTO u789 VALUE (NULL);

will fail.

But, it inserts first, second, third NULL value without any problems. Who can explain me why it iserts second and third columns if NULL is already in the table?

This is a theoretical question (as I understand nobody uses DEFAULT NULL + UNIQUE KEY for the same column in most situations), but I want to understand why it doesn't throw an error once one NULL is already in the column. Am I doing something wrong with declaring a unique column?

Thank you.

解决方案

According to the SQL 92 specification (and how you read it) unique constraints are meant to denote candidate keys and therefore should not allow duplicate values nor NULL values. DB2 implements their unique constraints in this manner. More than a few database vendors (including MySQL) read the specification as ignoring NULL values much like the Group By clause ignores NULL values and thus they implement unique constraints such that it only applies to non-NULL values. Still others, treat the NULL as its own special value and only allow one entry which is NULL. Microsoft SQL Server implements unique constraints this way. The only aspect that is consistent amongst all vendors with respect to unique constraints is that non-NULL values must be unique.

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

mysql 建表 null,MySQL:唯一,但默认为NULL-创建表允许。允许插入多个NULL。为什么?... 的相关文章

随机推荐

  • 可以ping通但是xshell连不上_金万维宽带通动态域名解析在客户端解析不对,怎么办?...

    今天上午 咱们有一个使用金万维宽带通动态域名解析服务的用户反馈 直接Ping金万维动态域名解析服务的域名 发现Ping到的IP和实际的动态公网IP不一致 具体如图 通过上图 客户反馈 宽带通软件上的IP和路由器WAN口IP是一样的 但是Pi
  • python入门--抓取网页文字

    要抓取网页文字 我们需要使用Python的一个库 叫做requests 这个库可以帮助我们向网站发送请求 获取网站的内容 下面是一个简单的示例代码 用于抓取一个网页的文字 import requests import re import o
  • 车联网总结

    一句话 根据车联网产业技术创新战略联盟的定义 车联网是以车内网 车际网和车载移动互联网为基础 按照约定的通信协议和数据交互标准 在车 X X 车 路 行人及互联网等 之间 进行无线通讯和信息交换的大系统网络 是能够实现智能化交通管理 智能动
  • linux下删除asm磁盘,Linux平台下Oracle ASM磁盘组添加磁盘

    以下为Linux平台下Oracle ASM磁盘组添加磁盘的主要操作 多路进软件使用的是HDS的 一 操作系统设置 1 从存储映射磁盘到服务器 然后重启 扫描磁盘 opt D bin dlnkmgr view lu 2 扫描到新的磁盘后 两个
  • 递归递归递归

    function DG htmlDom n n for var i 0 i lt htmlDom length i var navSubmenu htmlDom i nav submenu var item htmlDom i if nav
  • 2023年Java面试题_Mongodb

    Index Mongodb 1 基本概念 1 1 文档 1 2 集合 1 3 数据类型 1 4 id 和 ObjectId 2 基本操作 3 索引介绍 4 应用场景 4 1 MySQL VS MongoDB 4 2 应用场景 4 3 压测结
  • MySQL——关系型数据库管理系统

    目录 01 数据库 02 SQL 结构化查询语言 关于SQL语句的分类 03 MySQL常用命令 1 退出mysql exit 2 查看mysql中有哪些数据库 3 选择使用某个数据库 4 创建数据库 5 查看某个数据库下有哪些表 6 查看
  • 操作系统读书笔记- 01 x86系统架构概览.md-html

    x86系统架构概览 真看不懂了 今天就写这些吧 2 0 处理器工作模式 一般来讲 x86 64处理器具有5种工作模式 实模式 Real address Mode 处理器以16位8086的方式工作 只能以简单的段地址 偏移地址方式进行寻址 地
  • 在Javascript中怎样判断用户按下的是回车键?

  • 本地chrome,访问(超链接跳转)本地文件解决方案

    问题和背景描述 1 用html php写了一个脚本 先从数据库中获取pdf文件的路径 然后将这个路径映射成一个html中的超链接 但是我在浏览器中点击这个超链接 死活跳转不了 2 经过多方调查 和搜索 最终找到了问题的原因 chrome中有
  • Java加密算法有几种?

    前言 编程中常见的加密算法有以下几种 你都知道是哪些吗 它们在不同场景中分别有应用 除信息摘要算法外 其它加密方式都会需要密钥 密钥 密钥 key 又常称金钥 是指某个用来完成加密 解密 完整性验证等密码学应用的秘密信息 密钥分类 加解密中
  • centos7更换和升级JDK版本

    卸载 查询是否安装 jdk rpm qa grep jdk rpm qa grep java 卸载安装的 jdk yum y remove java yum 查询支持的版本 可以先更新一下 yum 源 以便支持最新版本 yum y upda
  • 机器学习之线性回归

    什么是线性回归 线性回归利 回归 程 函数 对 个或多个 变量 特征值 和因变量 标值 之间 关系进 建模的 种分析 式 一般只有一个特征值的称之为单变量回归 多个特征值的称之为多变量回归 线性回归 线性回归可以分为两类 线性关系和非线性关
  • Leetcode42.接雨水——双指针法

    文章目录 引入 双指针法 引入 本题是这样的 42 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图 计算按此排列的柱子 下雨之后能接多少雨水 题目给出的图片一眼就能了然题目要问的是什么 很明显 某一列能装多少水 取决于该列左
  • android ui状态栏高度,移动界面尺寸!安卓720*1280界面尺寸规范参考

    今天25学堂的老谭童鞋跟大家继续分享720 1080的界面设计尺寸规范 主要讲解 屏幕分辨 1280 720像素 720P APP界面设计规范 这样的手机又vivo智能收款机 三星Galaxy A5 华为荣耀等手机 这样的手机屏幕尺寸是 5
  • 4年经验来面试20K的测试岗,连基础都不会,还不如招应届生。。。

    公司前段时间缺人 也面了不少测试 结果竟然没有一个合适的 一开始瞄准的就是中级的水准 也没指望来大牛 提供的薪资在10 20k 面试的人很多 但平均水平很让人失望 看简历很多都是3 4年工作经验 但面试中 不提工具和编程 仅仅基础的技术很多
  • 解决Visual Studio设置C++标准 但是_cplusplus始终为199711

    目录 场景复现 Visual Studio官方说明 C 标准对应表 解决方案 方法一 恢复 cplusplus宏 方法二 使用 MSVC LANG宏 场景复现 我在VS2022偶然的一次测试C 标准开发环境 发现无论我怎么修改C 语言标准
  • List 集合 —— ArrayList

    ArrayList 简介 成员变量 构造方法 成员方法 增 删 其他 总结 参考 简介 ArrayList 是 Java 集合框架中比较常用的类 是用来存储数据的容器 可存储重复的元素 允许存储null值 底层基于数组实现容量大小动态变化
  • windows11安装cp210x驱动

    windows11安装cp210x驱动 1 第一步官网下载驱动 官网地址如下 CP210x USB to UART Bridge VCP Drivers Silicon Labs 第二步 解压文件夹并安装如图所示 3 第三步安装成功后会给你
  • mysql 建表 null,MySQL:唯一,但默认为NULL-创建表允许。允许插入多个NULL。为什么?...

    I ve just checked and it s allowed to create a table with a column that is NULL by default although it s a UNIQUE KEY at