当前位置: 首页 > news >正文

报错 插入更新_自增主键,三类插入测验答案,在这里。

《三类插入与自增键的关系》一文,基本解答了《自增键四道测验题》,仍有水友要求贴答案,原理都解释了,copy语句执行下,真的难么?画外音:你们赢了,我还是贴一下执行结果。实验一、自增键初始值测验

drop table t1;
create table t1(
    id in
t not null auto_increment,
    name varchar(10) unique,
    count int default 0,
    primary key(id),
    index(name)
)engine=innodb;
insert into t1(name) values("zhangsan"),("lisi"),("wangwu");
select * from t1;

请问,被插入的三条记录,id分别为:A 0,1,2B 1,2,3C 以上都不对

556c1b2ade3809c876465bd67a09fb42.png

答案:B

自增键从1开始,该测验对应《三类插入与自增键的关系》中的简单插入(simple insert)。简单插入,能够提前知道被插入的行数,在处理自增键时,是最容易的。


实验二、批量插入测验

drop table t1,t2;
create table t1(
    id int not null
auto_increment,
    name varchar(10) unique,
    count int default 0,
    primary key(id),
    index(name)
)engine=innodb;
create table t2(
    name varchar(10) unique
)engine=innodb;
insert into t2(name) values("x"),("y"),("z");
insert into t1(name) select name from t2;
select * from t1;

请问,上述insert...select...的执行结果是:A 插入成功B 插入失败,自增键报错C 以上都不对

86ba5eb00fb2d3968fb536136f114f77.png

答案:A

插入成功,该测验对应《三类插入与自增键的关系》中的批量插入(bulk insert)。批量插入,不能提前知道被插入的行数,在处理自增键时,每插入一行,才会赋值新的自增值,在批量插入事务并发时,“可能”出现同一个事务的自增键不连续。

画外音:可以有优化机制,未来撰文。


实验三、混合插入测验
drop table t1;
create table t1(
    id int not null
auto_increment,
    name varchar(10)
unique,
    count int default 0,
    primary key(id),
    index(name)
)engine=innodb;
insert into t1(id, name) values(
1, "shenjian");
insert into t1(id, name) values (
111, "111"),(NULL, "abc"),(222, "222"),(NULL,"xyz");
select * from t1;
请问,最后一个insert语句,执行结束后id分别是:A 1,2,3,111,222B 1,111,112,222,223C 插入失败,自增键报错D 以上都不对

5e0339dfb8a235b0d5f14783855e3763.png

答案:B

插入成功,自增键每次从最大值后面开始新增,该测验对应《三类插入与自增键的关系》中的混合插入(mixed-mode insert)。有些行插入时指定了自增键,无需数据库生成;有些行插入时未指定自增键(NULL),需要数据库生成。

实验四、insert ... on duplicate key测验接着实验三,继续执行以下语句:

insert into t1(name)values("shenjian"),("aaa"),("bbb")

on duplicate key update count=100;

select * from t1;

请问,最后一个insert语句,执行结束后id分别是:A 1,2,3,111,222,223,224,225B 1,111,112,222,223,224,225,226C 1,111,112,222,223,224,225D 1,111,112,222,223,225,226E 以上都不对

7e22181136a35df84d7beb4d66262418.png

答案:D

该测验也对应《三类插入与自增键的关系》中的混合插入(mixed-mode insert)。有些行插入实际上是修改,无需数据库生成自增键;有些行插入实际上就是插入,需要数据库生成自增键。

insert … on duplicate key update … 这种情况是最最复杂的,它可能导致,系统生成的自增值,在更新阶段用不上。画外音,官网原文是:

an INSERT followed by a UPDATE, where the allocated value for the AUTO_INCREMENT column may or may not be used during the update phase.

伸手党们,这下满足了吧?都答对了么。画外音:MySQL版本为MySQL5.6。知其然,知其所以然。da00509dec6e7f0d0e904527465aceaf.png架构师之路-分享技术思路

相关文章

《缓冲池(buffer pool),这次彻底懂了!》

《写缓冲(change buffer),这次彻底懂了!》

作业题:insert into t1(name)values("zhangsan"),("lisi"),("wangwu");这类简单插入,当有并发事务执行时,自增键仍能保证连续性,是如何做到的?A:行粒度加锁,实施互斥B:表粒度加锁,实施互斥C:全局自增键单例,实施互斥D:SQL语句粒度加锁,实施互斥E:事务粒度加锁,实施互斥

http://www.taodudu.cc/news/show-647655.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 事务连接中断_HTTP长连接和短连接
  • 亚马逊评价抓取插件_亚马逊运营必备插件
  • controller需要捕获异常吗_Spring之Controller异常处理
  • mysql8中文排序_mysql中utf8编码的中文字段按拼音排序
  • html 分级切换菜单_FL studio系列教程(十六):FL Studio查看菜单讲解
  • mysql还原数据库后日期显示3000_mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法...
  • java 函数名调用_粉丝提问|c语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数...
  • docker mysql sock_docker mysql安装
  • mysql最大述_mysql最大字段数量及 varchar类型总结
  • php协程实现mysql异步_swoole与php协程实现异步非阻塞IO开发
  • mysql中xml类型_使用 SQLXML 数据类型
  • mysql语法6_全面接触SQL语法(6)_mysql
  • sqlerver mysql_转 MYSQL学习(一)
  • tcpdump 识别成dns_dns tcpdump
  • java linkedhashmap_java学习-hashMap和linkedHashMap
  • 简单java题_java
  • java actionsupport_struts2中的Action接口和Actionsupport接口各有什么作用
  • java jar log4j_使用Log4j
  • java课程设计进程管理_GitHub - Shadow-Java/OS: 操作系统课程设计,关键词:进程同步与互斥、进程死锁、LRU页面替换算法、时间片轮转算法、时钟等...
  • mysql中建立索引的原则_在SQL数据库中设定索引的原则是什么?(注意是设定不是创建)...
  • java宝典_JAVA宝典之_JAVA基础
  • java blockingqueue_Java多线程进阶(三一)—— J.U.C之collections框架:BlockingQueue接口...
  • java 转账 锁_Java多线程 多个人转账发生死锁
  • java 静态变量 存储_Java学习笔记9---类静态成员变量的存储位置及JVM的内存划分...
  • java坐标移动题目case_坐标移动
  • java代码实现购物车小程序_使用Taro实现小程序商城的购物车功能模块的实例代码...
  • php中怎么过滤器_PHP 过滤器
  • java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析
  • java treeset 转array,Java TreeSet toArray(T[])用法及代碼示例
  • java佳沃维洛奇,新品速递:JAVA 双雄耀世登场