题解 向数据库中插入数据

批量插入数据,不使用replace操作

http://www.nowcoder.com/practice/153c8a8e7805400ba8e384e03acc6b3e

My SQL 中常见的三种插入数据的方式: insert into/replace into/insert ignore into

1. insert into

最常见的插入数据的语句,语句格式:

# 插入一行数据
insert into 表名(column1,column2,...) values(values for col1,values for col2,...)

# 插入多行数据
insert into 表名(column1,column2,...) 
               values(values for col1,values for col2,...), #第一行
               values(values for col1,values for col2,...), #第二行
...

# 表名后的column可省略 values按照column顺序插入

insert into 在执行时 数据库会检查主键,如果出现重复会报错;

2. replace into

replace into 在尝试将数据插入表中时,会有一下两种情况:

  1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 (替换)
  2. 如果主键/唯一索引没有重复,则直接插入数据,此时等同于insert into

语句格式:

replace into 表名(column1,column2,...)
             values(values for col1,values for col2,...),
             values(values for col1,values for col2,...),
  ...

replace into 在使用时需注意:插入数据的表必须有主键或者是唯一索引,否则,replace into 会直接插入数据,这将导致表中出现重复的数据

3. insert ignore into

使用insert into插入数据时,若主键重复,insert语句会报错,此时可以使用insert ignore into语句,其作用与insert into 相同,但若出现重复数据(主键或唯一标识索引相同)insert 会忽略新插入的数据

#创建员工信息表
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
insert into employees values (001,'1998-10-12','Vivi','Green','F','2020-10-12')

#插入数据
insert into employees values (001,'1998-10-12','Vivi','Green','F','2020-10-12') 
-- 报错
insert ignore into employees values (001,'1998-10-12','Vivi','Green','F','2020-10-12')
--运行成功 但由于数据重复 忽略这条新数据(原表仍保留之前那一条数据)



全部评论

相关推荐

海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务