INSERT INTO 语句
- INSERT INTO 语句用于向表中插入新记录,INSERT INTO 语句可以有两种编写形式。 - 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可: - INSERT INTO table_name(表名称)- VALUES (value1,value2,value3,...);- 第二种形式需要指定列名及被插入的值:- INSERT INTO table_name (表名称)(column1,column2,column3,...)- VALUES (value1,value2,value3,...);
REPLACE INTO 语句
- replace(s,s1,s2)——替换函数- replace函数使用字符串s2代替s中所有的s1- 例如:replace('MySQLMySQL','SQL','sql')返回M
- REPLACE的运行与INSERT很相像。如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
- REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。
mysql中常用的三种插入数据的语句:
- insert into表示插入数据,数据库会检查主键,如果出现重复会报错;
- replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;
- insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;
1、牛客后台会记录每个用户的试卷作答记录到exam_record表,现在有两个用户的作答记录详情如下:
- 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分;
- 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。
试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。
insert into exam_record
values
(null,1001,9001,"2021-09-01 22:11:12",'2021-09-01 22:11:12'+interval 50 minute ,90),
(null,1002,9002,"2021-09-04 07:01:02",null,null)
注意两点:
- 插入的表格存在自增主键,这就意味着不需要你自己手动填入,它会跟随表格行数进行自己增加(比如这样增加id值1,2,3...n)。
- 题目显示第二个同学10分钟后退出了平台,表示第二个同学没有完成答题,用null表示即可
2、现有一张试卷作答记录表exam_record,结构如下表,其中包含多年来的用户作答试卷记录,由于数据越来越多,维护难度越来越大,需要对数据表内容做精简,历史数据做备份。我们已经创建了一张新表exam_record_before_2021用来备份2021年之前的试题作答记录,结构和exam_record表一致,请将2021年之前的已完成了的试题作答纪录导入到该表。
insert into exam_record_before_2021
select null,uid ,exam_id,start_time,submit_time,score from exam_record
where year(submit_time) < 2021
- 新表exam_record_before_2021已创建好;第一列为自增主键列,不能直接复制过去;
- 只复制2021年之前的记录;只复制已完成了的试题作答纪录;
** 3、现在有一套ID为9003的高难度SQL试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info(其表结构如下图),不管该ID试卷是否存在,都要插入成功,请尝试插入它。**
replace into examination_info
values
(null,9003,"SQL","hard",90,"2021-01-01 00:00:00")
版权归原作者 你隔壁的小王 所有, 如有侵权,请联系我们删除。