首页
学习
活动
专区
圈层
工具
发布

【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)

当 enum 枚举类型在插入的时候,可以直接写这个枚举限定的常量,也可以写对应常量的下标 如下:这个数字下标从1开始,分别代表第一个枚举值,第二个枚举值等。...可以看到虽然我并没有告诉id要插什么,但是id是自动帮我们插入的,并且是增长的。 和别人不冲突并且连续的,这就是自增长主键。 当我们指定id要插入的时候,也能插进行。...然后再插入id相同值的时候,确实能够履行主键的职责发生主键冲突(主键 和 自增长 搭配使用) 自增主键的插入机制 默认行为:自增主键在插入时若未设置任何默认值,则默认从1开始插入。...:当插入一个值时(如1000),系统会自动更新表外的 auto_increment 值,使其成为下次插入的起始值。...外键 用于定义 主表 和 从表 之间的关系: 外键约束主要定义在从表上 主表则必须是有主键约束或 unique 约束 当定义外键后,要求外键列数据必须在主表的主键列存在或为 NULL 在从表中,设置外键约束

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

    【MySQL】:数据库表的 CRUD 操作

    插入否则更新 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败。 但我就是想让它先确认是不是在数据库中存在,不存在就插入,存在不要拦我然后执行后面的修改语句。...,数据被插入 2 row affected: 表中有冲突数据,删除后重新插入 这里从 id 就可以看到是删除后插入的,因为 id 是自增的,刚才是 22,现在是 23 了。...一般都是拿着条件删除 where 不加条件就是把整表的内容删除了,不过表结构还在。...当一个数据库执行完某些操作后,可以通过 bin.log 将这些 SQL 同步到另一个数据库,从而使两个数据库的数据保持一致(主从同步), 需要注意,默认情况下 bin.log 是 关闭 的。...我们要插就插,要删就删,要改就改,要查就查,实际我们也可以将select和insert组合。可以把数据从其他表里面筛选出来,然后插入到另一个表里面。

    29300

    数据结构——线性表(顺序表)

    它包含三个方面的内容:即数据的逻辑结构、数据的存储结构和数据的操作,只有这三个方面的内容完全相同,才能成为完全相同的数据结构。...常见的数据结构有线性表(包含顺序表、链表、栈、队列),树,堆,图,哈希表等。 本章将带领大家走进数据结构的世界,我们从最基本的线性表中的顺序表讲起。...2.3.1顺序表初始化 我们首先为顺序表开辟一个可以存放三个元素的空间,并将顺序表的容量(capacity)更新为3 2.3.2顺序表扩容 在我们后续添加元素时,当容量不够用时,我们可以对其进行扩容,具体的函数实现如下...2.3.7顺序表在任意位置插入 该函数可以实现在顺序表中的任意位置插入数据,与头插相似,pos是我们想插入的下标位置。...尾声 本章为大家较为详细的介绍了线性表中的顺序表的概念以及代码实现,下一章将为大家讲解线性表中的另一个结构-链表。 初次创作,若有错误,欢迎大家在评论区或者私信留言。

    29110

    数据库圣经--约束

    (1, null); 1.3查看表结构 NULL列为NO表示值不允许为NULL,YES表示值可以为NULL desc student; 2、default默认值约束 注意:插入时只指定了...当为某列设置 auto_increment 后,该列的值会在插入新记录时自动递增,生成唯一的序号,无需手动输入。...(100, '赵六', '100100'); # 可以使⽤以上语法,如果插⼊时有冲突则更新当前列的值 insert into student(id, name, sno) values (100, '...,主表关联的列必须是主键或唯⼀约束 当定义外键后,要求从表中的外键列数据必须在主表的主键或唯⼀列存在或为null。...内容说明 操作与结果:向test_check表插入数据时,符合 CHECK 约束(如性别为 “男”“女”)的记录可成功插入;插入 “无” 时,触发test_check_chk_1约束违规错误。

    21910

    Java集合类常见面试知识点总结

    这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930.html 里面有包括Java集合类在内的众多...4 除此之外,1.8jdk改进了hashmap,当链表上的元素个数超过8个时自动转化成红黑树,节点变成树节点,以提高搜索效率和插入效率到logn。...7 最后有一个比较冷门的知识点,hashmap1.7版本链表使用的是节点的头插法,扩容时转移链表仍然使用头插法,这样的结果就是扩容后链表会倒置,而hashmap.1.8在插入时使用尾插法,扩容时使用头插法...1.8则放弃使用分段锁,改用cas+synchronized方式实现并发控制,查询时不加锁,插入时如果没有冲突直接cas到成功为止,有冲突则使用synchronized插入。...用来保持顺序,可以使用它实现lru缓存,当访问命中时将节点移到队头,当插入元素超过长度时,删除队尾元素即可。

    67131

    Java集合类常见面试知识点总结

    这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930.html 里面有包括Java集合类在内的众多...4 除此之外,1.8jdk改进了hashmap,当链表上的元素个数超过8个时自动转化成红黑树,节点变成树节点,以提高搜索效率和插入效率到logn。...7 最后有一个比较冷门的知识点,hashmap1.7版本链表使用的是节点的头插法,扩容时转移链表仍然使用头插法,这样的结果就是扩容后链表会倒置,而hashmap.1.8在插入时使用尾插法,扩容时使用头插法...1.8则放弃使用分段锁,改用cas+synchronized方式实现并发控制,查询时不加锁,插入时如果没有冲突直接cas到成功为止,有冲突则使用synchronized插入。...用来保持顺序,可以使用它实现lru缓存,当访问命中时将节点移到队头,当插入元素超过长度时,删除队尾元素即可。

    65921

    Java集合类常见面试知识点总结

    这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术  https://blog.csdn.net/column/details/21930.html 里面有包括Java集合类在内的众多...4 除此之外,1.8jdk改进了hashmap,当链表上的元素个数超过8个时自动转化成红黑树,节点变成树节点,以提高搜索效率和插入效率到logn。...7 最后有一个比较冷门的知识点,hashmap1.7版本链表使用的是节点的头插法,扩容时转移链表仍然使用头插法,这样的结果就是扩容后链表会倒置,而hashmap.1.8在插入时使用尾插法,扩容时使用头插法...1.8则放弃使用分段锁,改用cas+synchronized方式实现并发控制,查询时不加锁,插入时如果没有冲突直接cas到成功为止,有冲突则使用synchronized插入。...用来保持顺序,可以使用它实现lru缓存,当访问命中时将节点移到队头,当插入元素超过长度时,删除队尾元素即可。

    37700

    数据结构知识点

    因此会为节点间的逻辑关系而增加额外的存储开销 1、单链表 1.1、插入 链表插入: a、空链表插入时, 首指针需要改变。...b、非空链表插入时,尾指针需要改变。...注意:链表的插入和删除不是所有情况下都比顺序表快,比如尾插尾删,顺序表的时间复杂度为O(1),并且如果是单链表,如果要在中间某个节点的前面插入/删除一个节点,则需要遍历。...,顺序表的尾插和尾删不需要搬移元素效率非常高,故一般都是使用顺序表实现。...1、路径 树中从“一个结点”到“另一个结点”之间的分支。 2、路径长度 一个路径上的分支数量。 3、树的路径长度 从树的根节点到每个节点的路径长度之和。

    42410

    面试官:谈一谈如何避免重复下单?

    一、问题背景 最简单的:DB 事务。如创建订单时,同时往订单表、订单商品表插数据,这些 Insert 须在同一事务执行。...若重复发送这个请求,则此时先插入/支付流水,发现 orderId 已存在,唯一约束生效,报错重复 Key。就不会再重复扣款。 在往 DB 插记录时,一般不提供主键,而由 DB 在插入时自动生成。...该订单号其实就是订单表的主键,于是,重复请求中带的都是同一订单号。订单服务在订单表中插入数据的时候,执行的这些重复 INSERT 语句中的主键,也都是同一个订单号。...通过该版本号,就能保证,从我打开这条订单记录开始,一直到我更新这条订单记录成功,期间没有其他人修改过该订单数据。若有,则 DB 中的 version 就会改变,那我的更新操作就会执行失败。...我就只能重新查询新版本的订单数据,再尝试更新。

    1.3K20

    mongodb与MySQL的不同_Mongodb与MySQL之间的比较分析

    大家好,又见面了,我是你们的朋友全栈君。 本篇文章给大家带来的内容是关于Mongodb与MySQL之间的比较分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。...而在指定_id插入时,MongoDB每插一条数据,都需要检查此_id可不可用,当数据库中数据条数太多的时候,这一步的查询开销会拖慢整个数据库的插入速度。...这也是在不指定_id插入的时候,MongoDB的效率遥遥领先的原因。但在指定_id插入时,当数据量一大内存装不下时,MongoDB就需要将磁盘中的信息读取到内存中来查重,这样一来其插入效率反而慢了。...3、整体上来看,MongoDB的速率波动比MySQL的严重,方差变化较大。 4、MongoDB在指定_id插入时,当插入的数据变多之后,插入效率有明显地下降。...分析: 1、毛刺现象是因为,当插入的数据太多的时候,MongoDB需要将内存中的数据写进硬盘,MySQL需要重新分表。

    2.6K20

    【C语言】数据结构——顺序表超详解!!!(包含顺序表的实现)

    (结尾处有动态顺序表的完整代码,感兴趣的的可以自行尝试QwQ) 一、什么是数据结构 数据: 数据在生活中随处可见,包括数值(如1、2、3)、用户信息(姓名/性别/年龄)、网页内容(文字/图片/视频)...,现在我们可以开始进行操作了 依次写出增删查改等操作 7.在顺序表尾部插入数据(尾插) 这个很简单,直接用下标进行插入数据 代码演示:(内有注释) (其中 ps 是一个顺序表类型的指针,下同)...); //用之前写的代码来判断空间是否足够,不够就开辟空间 ps->arr[ps->size++] = x; //给尾部赋值 } 8.在顺序表头部插入数据(头插) 头插就比尾插想的事情多了 因为当头插时...有了头插和尾插,那就还有随机插入了 当随机插入时,与头插同理 , 插入后后面元素的下标都会发生改变,故pos后面的元素从最后一个元素开始,都要向后挪动一位给要插入的元素腾出空间 代码演示:(内有注释...+1 } 12.在指定位置pos删除数据(随机删) 有了头删和尾删,那就还有随机删除了 当随机删除时,与头删同理 , 删除后后面元素的下标都会发生改变,故pos后面的元素从第一个元素开始,都要向前挪动一位来补齐删除元素后留下的空间

    15210

    10 亿数据如何快速插入 MySQL?

    最好不创建非主键索引,或者在表创建完成后再创建索引,以保证最快的插入性能。 是否需要并发写同一个表 不能 并发写同一个表无法保证数据写入时是有序的。 提高批量插入的阈值,在一定程度上增加了插入并发度。...无需再并发写入单表 MySQL存储引擎的选择 Myisam 比innodb有更好的插入性能,但失去了事务支持,批量插入时无法保证同时成功或失败,所以当批量插入超时或失败时,如果重试,势必对导致一些重复数据的发生...但是为了保证更快的导入速度,可以把myisam存储引擎列为计划之一。 现阶段我引用一下别人的性能测试结果:MyISAM与InnoDB对比分析 图片 从数据可以看到批量写入明显优于单条写入。...所以也无需数据库自增主键ID,可以在批量插入时指定主键ID。 如果另一个任务也需要导入数据库呢?如何实现主键ID隔离,所以主键ID还是需要拼接taskId。...如果出现批量插入失败的,则重试插入。多次失败,则单个插入,单个更新redis。要确保Redis更新成功,可以在Redis更新时 也加上重试。

    66410

    【数据结构】什么是队列?

    ——封清扬 队列的定义 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表....我们都知道,键盘输入的内容是先存到键盘缓冲区然后再从键盘缓冲区输出到屏幕上,而键盘缓冲区存储数据的方式就是队列,假如我想告诉女朋友你是我的"god",那么用队列存储数据的话按先进先出原则,内容输出到屏幕上也应该是...队列的抽象数据类型 同样是线性表,队列也有类似线性表的各种操作,不同之处在于插入数据只能在队尾进行,删除数据只能在队头进行....O(1),另一个是O(n)....在顺序队列中,入队和出队的逻辑完全和顺序表的尾插,尾删,头插,头删逻辑一样,但区别在于,选择数组下标为0作队头,那入队就是尾插,出队就是头删. 其操作逻辑和顺序表完全相同,这里就不多赘述了.

    38610

    阿里终面:10亿数据如何快速插入MySQL?

    是否需要并发写同一个表 不能 1、 并发写同一个表无法保证数据写入时是有序的; 2、 提高批量插入的阈值,在一定程度上增加了插入并发度无需再并发写入单表; MySQL存储引擎的选择 Myisam比innodb...有更好的插入性能,但失去了事务支持,批量插入时无法保证同时成功或失败,所以当批量插入超时或失败时,如果重试,势必对导致一些重复数据的发生。...所以也无需数据库自增主键ID,可以在批量插入时指定主键ID。 如果另一个任务也需要导入数据库呢?如何实现主键ID隔离,所以主键ID还是需要拼接taskId。...如果出现批量插入失败的,则重试插入。多次失败,则单个插入,单个更新redis。要确保Redis更新成功,可以在Redis更新时 也加上重试。...最后总结一下几点重要的 总结 1、 要首先确认约束条件,才能设计方案确定面试官主要想问的方向,例如1T文件如何切割为小文件,虽是难点,然而可能不是面试官想考察的问题; 2、 从数据规模看,需要分库分表,

    3.5K41

    数据结构-线性表|顺序表|链表(中)

    回到正题,继上次出了数据结构线性表的内容上以后,这次又给大家更新啦。这次介绍的是单链表和静态链表的内容,话不多说,开始我们的正题。...单链表是一种链式存储的结构。它动态地为节点分配存储单元。当有节点插入时,系统动态的为结点分配空间。在结点删除时,应该及时释放相应的存储单元,以防止内存泄露。...3.4 单链表的插入 01 3.4.1 指定位置后插 其实链表的插入和删除都是很简单的操作,初学者只要抓住指针指向的节点,并加以区分开来,就很easy了。如下图: ?...一个好的解决办法是,将所有未使用或者被删除的空间串成一个备用链表。插入节点时便可以从备用链表获取第一个未使用的空间的下标。因此我们在初始化的时候会做这样的工作: ? 分配内存 ?...上面的代码应该是没有难度的。写完了这个函数,我们来看看静态表中具体如何插入: ? 注意几点: 1) 首先我们让k指向了要插入节点(记为X)的前一个位置(记为Y节点),前插法。

    1.2K80

    数据结构-线性表|顺序表|链表(中)

    回到正题,继上次出了数据结构线性表的内容上以后,这次又给大家更新啦。这次介绍的是单链表和静态链表的内容,话不多说,开始我们的正题。...单链表是一种链式存储的结构。它动态地为节点分配存储单元。当有节点插入时,系统动态的为结点分配空间。在结点删除时,应该及时释放相应的存储单元,以防止内存泄露。...3.4 单链表的插入 01 3.4.1 指定位置后插 其实链表的插入和删除都是很简单的操作,初学者只要抓住指针指向的节点,并加以区分开来,就很easy了。如下图: ?...一个好的解决办法是,将所有未使用或者被删除的空间串成一个备用链表。插入节点时便可以从备用链表获取第一个未使用的空间的下标。因此我们在初始化的时候会做这样的工作: ? 分配内存 ?...上面的代码应该是没有难度的。写完了这个函数,我们来看看静态表中具体如何插入: ? 注意几点: 1) 首先我们让k指向了要插入节点(记为X)的前一个位置(记为Y节点),前插法。

    93730

    【数据结构】手把手带你玩转线性表

    我想让大家知道的是:数据结构非常有趣,很多算法是智慧的结晶,我希望大家在学习数据结构的过程是一种愉悦的心情感受。...因此我开创了《数据结构》专栏,在这里我将把数据结构内容以有趣易懂的方式展现给大家。  1.线性表的定义 线性表,听名字我们就能感受到,是具有线一样性质的的表。...如果顺序表未满,则将待插入的新元素放入顺序表最后一个位置。 更新顺序表的长度数值,将长度加1。  ...从最后一个元素开始,将其移动到下一个位置,一直到第一个元素移动到第二个位置。 将要插入的元素放入顺序表的第一个位置。 更新顺序表的长度。...从第二个元素开始,将其移动到前一个位置,一直到最后一个元素位置。 更新顺序表的长度。  我们来实现一下顺序表的头删函数: void SLpopFront(SL* ps) { assert(ps !

    9510

    【数据结构】C语言实现双链表的基本操作

    经过前面几个篇章的内容分享,相信大家对顺序表和单链表的基本操作都已经熟练掌握了。今天咱们将继续分享线性表的链式存储的第二种形式——双链表。...在今天的内容中,咱们将介绍双链表的创建以及一些基本操作,接下来跟我一起来看看吧! 一、单链表与双链表 线性表的链式存储称为链表,链表是由数据域和指针域组成。...(*L);//创建好链表后返回头指针 } 但是对于尾插法而言,不管是第一个结点还是最后一个结点的创建,在插入步骤上都是不影响的,因为表尾结点的后继指针肯定是指向NULL的,因此通过尾插法创建的双链表则不需要分情况讨论...; 对于双链表而言,不管是前插操作还是后插操作,其对应的时间复杂度都是O(1),相比于单链表,双链表的执行效率会更高; 八、双链表的删除 如果我想删除双链表中的某个结点时,我们只需要按照以下步骤就能完成删除操作...,这里我就不展开介绍了。

    79010

    【数据结构】详解顺序表

    引言 经过一段时间的学习,博主也是学到了数据结构和算法这块,那么在接下来的时间里,我也将继续分享我在数据结构这块的学习心得和重点内容。...那么第一个我将分享的是动态顺序表的实现,这一块内容将对大家c语言动态内存管理有一定的要求,之前博主也有介绍,如有问题还请前往: 【c语言】详解动态内存管理 一、顺序表的介绍 当谈及顺序表结构式时,...头插是从后向前拷贝数据,头删则是从前向后拷贝数据,即将第i个拷贝到第i-1个的位置,最后再将ps->size--。如果有效数据已经为0了,那么在函数内部不会进行任何操作。...插入部分代码就是与头插类似的版本,只不过SListPushFront()函数是从下标ps->size-1到0的数据向后拷贝;而SListInsert()函数是从ps->size-1到pos的数据向后拷贝...顺序表要求从开始位置连续存储,那么我们在头部和中部位置插入/删除数据就需要挪动数据,这样的效率并不高 但除了一些缺点外,顺序表当然也是有优点的: 1.

    25810
    领券