首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL约束:主键、非空、唯一、外键 ️

深入探讨MySQL约束:主键、非空、唯一、外键 ️ 摘要 大家好,我是默语,擅长全栈开发、运维和人工智能技术。...在这篇博客中,我将详细介绍MySQL中各种约束的使用,包括主键约束、非空约束、唯一约束和外键约束。这些约束是保证数据库完整性和数据一致性的关键。...关键词:MySQL约束、主键、非空、唯一、外键、数据库设计。 引言 MySQL约束是数据库设计中至关重要的一部分。通过设置合适的约束,可以有效地防止不合法的数据插入表中,从而保证数据的一致性和完整性。...添加主键约束到现有表 如果我们需要为一个现有表添加主键约束,可以使用以下语法: ALTER TABLE users ADD PRIMARY KEY (user_id); 非空约束 什么是非空约束?...A:是的,一个表可以有多个外键,每个外键都指向另一个表中的主键或唯一键。 Q:如果删除一个有外键约束的记录会怎样?

17110

MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)

目录 1 表的约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign...key 1.1 非空约束:not null 1)在创建表时添加约束: CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name为非空...); 2)创建表后再添加非空约束: ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;  3)删除name的非空约束: ALTER TABLE stu MODIFY...UNIQUE ); 注意:MySQL中唯一约束限定的列的值可以有多个null 2)删除唯一约束: -- alter table stu modify number varchar(20); 不同于非空约束的删除方法...主键约束:primary key 1)注意: 若某一列添加了该约束,则代表了非空,且唯一; 一张表只能有一个字段为主键; 主键就是表中记录的唯一标识; 2)创建表时添加主键约束 CREATE TABLE

14.6K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....

    约束 ⑦【MySQL】约束条件 1. 约束的基本使用 2. 外键约束 ⑦【MySQL】约束条件 1. 约束的基本使用 约束: 什么是约束? 约束是作用于表中字段上的规则,用于限制存储在表中的数据。...约束分类: ①非空约束 —— 限制该字段的数据不能为null NOT NULL ②唯一约束 —— 保证该字段的所有数据都是唯一、不重复的 UNIQUE ③主键约束—— 主键是一行数据的唯一标识,要求非空且唯一...不为空且唯一 年龄:age、int、大于0且小于等于120 状态:status、char(1)、默认值为1 性别:gender、char(1)、无约束条件 */ CREATE TABLE test(...'小一' for key 'test.name' INSERT INTO test(NAME,age,STATUS,gender) VALUES ('小一',22,'1','女'); -- 当设置非空约束的字段...外键约束 如何添加外键约束?: 方式一(在创建表时指定外键约束): CREATE TABLE 表名( 字段名 数据类型, ...

    536100

    红黑树硬核讲解

    (中键一直往上移,直到找到空位,在此过程中没有空位就先搞个临时的,再分裂。) 2-3树插入算法的根本在于这些变换都是局部的:除了相关的结点和链接之外不必修改或者检查树的其他部分。...任意节点到叶子节点经过的黑色节点数目相同:红黑树中的红节点是和黑色父节点绑定的,在2-3树中本来就是同一层的,只有黑色节点才会在2-3树中真正贡献高度,由于2-3树的任一节点到空链接距离相同,因此反应在红黑树中就是黑色完美平衡...不会有连续的红色节点:2-3树中本来就规定没有4节点,2-3-4树中虽然有4节点,但是要求在红黑树中体现为一黑色节点带两红色儿子,分布左右,所以也不会有连续红节点。...这种情况会导致在红黑树中出现右倾红节点。或者黑父左边为空也会出现右倾。 插入20 待插入元素比红父小,且红父自身就是左倾,待插入数据比红父左节点还小,形成了连续的红节点。...情况2 情况2:关注节点是 a,它的兄弟节点 c 是黑色,并且节点 c 的左右子节点 d、e 都是黑色: 将关注节点 a 的兄弟节点 c 的颜色变成红色,因为接下来黑圆圈会上移,那么c比a多个深色。

    50830

    小白入门,如何选择数据分片字段

    下面将针对各因素详细说明: 数据结构:主键或唯一键 主键及唯一键,是数据库作为常见的约束,其是为了保证非空且唯一性。...在分布式环境下,通常建议将主键或唯一键字段作为分片键或分片键的一部分,否则无法完成约束校验;当然也有产品支持单独约束校验。...总之,用有序的全局唯一替代自增,是分布式数据库主键的推荐做法。 数据结构:索引 通过分片键可以把 SQL 查询路由到指定的分片,但是在现实的生产环境中,业务还要通过其他的索引访问表。...对于高频索引查询,可以考虑通过分片键的设计上进行增强。也可以通过全局二级索引(有些分布式数据库支持)来实现或针对分片内做普通索引。...尽量是数据在关联后,能在本地完成join动作,减少数据shuffle或上移汇聚类的操作。可通过对系统中执行的SQL进行统计分析,选择出需要分片那个表中最频繁被使用到或最为重要的字段类分片。

    82430

    MySQL复习资料(二)——MySQL-DDL语句

    导读 博客主页:红目香薰_CSDN博客-大数据,MySQL,Java领域博主 ✍本文由在下【红目香薰】原创,首发于CSDN✍ 2022年最大愿望:【服务百万技术人】 前言 本文属于系列文章,...目录 查看当前的库列表 create添加创建关键字 创建库 创建表 约束备注: alter修改关键字 1、alter修改表名 2、alter添加列 3、alter修改列 4、alter删除列 drop(...varchar(11) NOT NULL, introduce varchar(20) NOT NULL, PRIMARY KEY (id) ) DEFAULT CHARSET=utf8; 约束备注...: 约束条件 说明 primary key 主键 foreign key 外键 not null 非空 auto_increment 自增 unique 唯一键 default 默认值 alter修改关键字...tables; alter table user_info rename users; show tables; 2、alter添加列 添加【testAlter】列,类型为varchar(20)且不允许为空。

    27820

    JAVA集合:TreeMap

    TreeMap 的特点: TreeMap 是有序的 key-value 集合,通过红黑树实现。根据键的自然顺序进行排序或根据提供的 Comparator 进行排序。...如 floorEntry()、ceilingEntry() 分别返回小于等于、大于等于给定键关联的 Map.Entry() 对象,不存在则返回 null。...红⿊树通过重新着⾊和左右旋转,更加⾼效地完成了插⼊和删除之后的⾃平衡调整。红⿊树在本质上还是⼆叉查找树,它额外引⼊了 5 个约束条件: ① 节点只能是红⾊或⿊⾊。 ② 根节点必须是⿊⾊。...这五个约束条件保证了红⿊树的新增、删除、查找的最坏时间复杂度均为 O(logn)。如果⼀个树的左⼦节点或右⼦节点不存在,则均认定为⿊⾊。红⿊树的任何旋转在 3 次之内均可完成。...comparator) 创建一个空TreeMap,按照指定的comparator排序 public TreeMap(Map m) 由给定的map创建一个TreeMap,keys按照自然排序 public

    37410

    Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论

    这种由于引力不同造成的时间差叫做引力红移,虽然已经得到无数次验证,但是如此高精度的检测还是头一次。 引力改变光频率 广义相对论指出,引力场越强,时间就越慢,从而改变电磁波的频率。...如果一束蓝光射向天空,在引力的作用下,就会向红色端移动,称之为“引力红移”。 虽然爱因斯坦早在1915年就预测了这种现象,但是这种“移动”非常小,直到1976年才有了第一次精确的实验验证。...△ 激光激发锶原子测量频率(图片来自NIST) 由于一毫米范围内的红移很小,大约只有0.0000000000000000001(别数了,总共19个0),为了能提高精度,研究团队用大约30分钟的平均数据解决此问题...由于引力红移,必须对GPS的原子钟做时间修正,时间修正越准确,也就意味着定位的精度可以越高。 而这对于物理学更是具有重大意义。 最让人兴奋的是,我们现在可以将量子力学和引力联系在一起了!...ps.加好友请务必备注您的姓名-公司-职位哦~ 点这里关注我,记得标星哦~ 一键三连「分享」、「点赞」和「在看」 科技前沿进展日日相见~

    49130

    【Java编程进阶之路 02】深入探索:红黑树如何重塑哈希表的性能边界

    数组的索引位置是通过哈希算法计算得出的,确保键值对能够均匀分布在数组中。 1.2 链表/红黑树 当两个不同的键经过哈希算法计算后得到相同的数组索引时,会发生哈希冲突。...哈希算法将键的hashCode值映射到数组的索引上,确保键值对能够均匀分布在数组中。 为了提高哈希分布的均匀性和减少哈希冲突,HashMap在计算索引时还会对hashCode值进行扰动处理。...(3)主要逻辑 检查是否需要扩容:如果当前数组为空或长度为0,则调用 resize 方法进行扩容。 计算索引:使用哈希码计算键在数组中的索引位置。...如果桶不为空(即存在哈希冲突),则遍历链表/红黑树: 如果链表/红黑树中已存在该键,则根据 onlyIfAbsent 的值决定是否更新值。...这是为了确保在转换为红黑树之前,HashMap具有足够的容量。 遍历链表并转换为红黑树: 计算索引位置 index。 如果该索引位置的节点 e 不为空,说明存在哈希冲突,即链表不为空。

    16710

    【Java提高十八】Map接口集合详解

    ---- 4.2、TreeMap 键以某种排序规则排序,内部以red-black(红-黑)树数据结构实现,实现了SortedMap接口 TreeMap的实现是红黑树算法的实现,所以要了解TreeMap...红黑树顾名思义就是节点是红色或者黑色的平衡二叉树,它通过颜色的约束来维持着二叉树的平衡。...对于一棵有效的红黑树二叉树而言我们必须增加如下规则: 1、每个节点都只能是红色或者黑色 2、根节点是黑色 3、每个叶节点(NIL节点,空节点)是黑色的。...这些约束强制了红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这棵树大致上是平衡的。...注意这里键key和值value都不可为空。 ?

    1.1K60

    机器学习与物理科学 | 粒子物理与宇宙学

    C.宇宙学的分类与回归 1.光度红移 (Photometric Redshift) 由于宇宙的膨胀,遥远的发光物体发生了红移,而距离-红移关系是观察宇宙学的基本组成部分。...可以通过光谱学获得非常精确的红移估计值。然而,这种光谱调查是昂贵且费时的。基于宽带测光或在几个色带中成像的光度测量可以粗略估算光谱能量分布。光度红移是指从光度数据估计红移的回归任务。...传统的光度红移方法基于模板拟合方法(Benítez,2000;Brammer等,2008;Feldmann等,2006)。...这类工作的一个有趣的方面是尝试红移的点估计。存在各种方法来确定红移估计的不确定性并获得后验分布。...用不同参数组产生的三个立方体中的暗物质分布。每个立方体被划分成小的子立方体进行训练和预测。请注意,尽管此图中的立方体是使用约束采样集中非常不同的宇宙学参数生成的,但其效果是看不见的。

    1.4K32

    sql serve数据库基础入门(2)

    示例2: 给student表增加所在系sdept列,字符型,长度为2,不允许为空值 语句: alter table student add sdept char (2) not null 注意:如果在插入要求非空的属性...,所以再添加字段时,已经有的数据该字段应该是空,但是我们添加字段时设定的是非空,所以就矛盾了,报错了。...','男','1922-09-01','051','2011-09-01','南京','cs','200413'); insert into student values ('20110002','林红'...而sc表中的Cno是作为Course表的外键存在的,所以不能成功执行。 (2) 修改数据 示例1: 使用T-sQL语句,将Course表中的课程号为:002的学分改为4,总学时改为64。...语言程序设计”的学生的选课记录 delete from Course where Cno in (select Cno from Course where Cname='c语言程序设计') 删除时,发现存在外键约束

    79230

    【秋招备战计划第二弹】最后俩月能提升的知识清单

    tab=1 手撕设计模式 单例模式跑不了 懒汉单例 饿汉单例 线程安全 加锁 双重判空检测 volatile 防止重排序 防止反射破坏 枚举类 手撕多线程 简单的...JDK JRE JVM 都是啥 抽象类与接口 注解与反射 异常与错误 值传递与引用 三大集合 list 链表 数组 map HashMap JDK1.7与1.8区别 链表红黑树...主键约束(Primay Key Coustraint) 唯一性,非空性 唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个 检查约束 (Check Counstraint...) 对该列数据的范围、格式的限制 默认约束 (Default Counstraint) 该数据的默认值 外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列...CAP思想 C:Consistent 一致性 A:Availability 可用性 P:Partition tolerance 分区容忍度 网络分区:分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的

    1.9K10

    哦耶!冲进小米了!

    第二步:检查该位置是否为空(即没有键值对存在) 如果为空,则直接在该位置创建一个新的Entry对象来存储键值对。将要添加的键值对作为该Entry的键和值,并保存在数组的对应位置。...第四步:如果第一个键值对的哈希码和键不相同,则需要遍历链表或红黑树来查找是否有相同的键: 如果键值对集合是链表结构: 从链表的头部开始逐个比较键的哈希码和equals()方法,直到找到相同的键或达到链表末尾...如果键值对集合是红黑树结构: 在红黑树中使用哈希码和equals()方法进行查找。根据键的哈希码,定位到红黑树中的某个节点,然后逐个比较键,直到找到相同的键或达到红黑树末尾。...如果找到了相同的键,则使用新的值取代旧的值,即更新键对应的值。 如果没有找到相同的键,则将新的键值对添加到红黑树中。...如果根据存储的元素计算结果为空,则利用 CAS 设置该节点; 如果根据存储的元素计算结果不为空,则使用 synchronized ,然后,遍历桶中的数据,并替换或新增节点到桶中,最后再判断是否需要转为红黑树

    43510

    一文讲懂HashMap

    新元素不断找下一个空的位置插入。 拉链法:新元素直接加入链表尾部,HashMap 采用的就是这种方法。 再哈希法:重新计算 hash 值,再得到一个不同的 index。...HashMap 的基本原理HashMap 的核心原理是哈希函数,它通过一个哈希函数将键映射到一个索引位置,然后在该索引位置上存储对应的值。哈希函数的设计需要满足均匀分布,以确保哈希冲突的概率最小。...插入键值对的过程分为两种情况: 当哈希值对应的位置为空时,直接将键值对插入到该位置。 当哈希值对应的位置不为空时,需要遍历链表或红黑树,查找是否存在相同的键值对。...均匀分布。哈希函数应该将键的各种组合均匀地映射到哈希表的各个位置,以尽量减少哈希冲突。 随机性。...在JDK 8中,对哈希函数的计算进行了改进,使得哈希值更加均匀分布,减少了哈希冲突的概率。 这些改变使得HashMap在处理大量数据时具有更好的性能和可扩展性。

    71430

    算法原理系列:红黑树

    好吧,最直观的就是在链接上做操作,标一个状态即可,然后对它做些约束就好了。这有两个好处,第一,它还是二叉树的形式,即之前的get()查找操作是兼容这种新结构的。...现在,我们来看看《算法》书上的红色链接的定义: 红链接均为左链接。 没有任何一个结点同时和两条红链接相连。 该树是完美黑色平衡,即任意空链接到根结点的路径上的黑链接数量相同。...第二条是肯定的,联想23树中不能出现4结点的约束,如果一个结点左右链都是红色的,那就意味着它们整体构成了4结点,与23树模型是违背的。...但这个问题就又转变为了删除右子树的最小键,问题又回到了起点,那可能你又想了,直到找到一个不含有右子树的最小键删除不就好了么。...删除操作 有了删除最小键,删除操作就已经解决了,在查找路径上进行和删除最小键相同的变换同样可以保证在查找过程中任意当前结点均不是2结点。如果被查找的键在树的地步,我们可以直接删除它。

    57010
    领券