前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql之多种 Insert语句

Mysql之多种 Insert语句

作者头像
呼延十
发布2019-06-26 15:42:45
8880
发布2019-06-26 15:42:45
举报
文章被收录于专栏:呼延呼延呼延

mysql常用命令与数据导入导出中记录过常用的sql语句,其中包括了插入语句.

今天单独记录一下mysql的插入语句的更多用法.

本文测试使用数据库

数据库建表语句及当前的数据:

mysql> show create table student;
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                            |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `name` varchar(45) NOT NULL COMMENT '姓名',
  `classNum` int(11) NOT NULL COMMENT '班级号',
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8      |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from student;
+-----------+----------+
| name      | classNum |
+-----------+----------+
| hublanker |        5 |
| huyanshi  |        5 |
| test1     |       10 |
+-----------+----------+
3 rows in set (0.00 sec)

1.insert into

这是最常用的插入语句,具体示例如下:

insert into student(name,classNum) values("test2",20);

在数据库中成功插入了一条:名字为test2,班级为20的数据.

在使用insert into的时候,经常会有一个问题,就是主键冲突怎么办?

在数据库中插入主键重复的数据,会导致出错,如下:

mysql> insert into student(name,classNum) values("test2",20);
ERROR 1062 (23000): Duplicate entry 'test2' for key 'PRIMARY'
mysql>

那么重复的值我们需要制定一些策略,这就用到了下面两个语句.

replace into

当主键重复时,我们想不要报错,用新的数据替换掉旧的数据.

可以使用replace语句,示例如下:

mysql> select * from student;
+-----------+----------+
| name      | classNum |
+-----------+----------+
| hublanker |        5 |
| huyanshi  |        5 |
| test1     |       10 |
| test2     |       20 |
+-----------+----------+
4 rows in set (0.00 sec)

mysql> replace into student(name,classNum) values("test2",21);
Query OK, 2 rows affected (0.00 sec)

mysql> select * from student;
+-----------+----------+
| name      | classNum |
+-----------+----------+
| hublanker |        5 |
| huyanshi  |        5 |
| test1     |       10 |
| test2     |       21 |
+-----------+----------+
4 rows in set (0.00 sec)

我们试图插入一条name=test2,classNum=21的数据,但是test2在数据库中主键已经存在,那么使用replace语句执行插入后,会发现,主键为test2的值仍然存在,但是classNum替换为了21.

insert ignore into

当主键重复时,有些场景下我们想不要报错,忽略掉新的数据就好.

这种情形下我们可以使用insert ignore into语句,示例如下:

mysql> select * from student;
+-----------+----------+
| name      | classNum |
+-----------+----------+
| hublanker |        5 |
| huyanshi  |        5 |
| test1     |       10 |
| test2     |       21 |
+-----------+----------+
4 rows in set (0.00 sec)

mysql> insert ignore into student(name,classNum) values("test2",22);
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select * from student;
+-----------+----------+
| name      | classNum |
+-----------+----------+
| hublanker |        5 |
| huyanshi  |        5 |
| test1     |       10 |
| test2     |       21 |
+-----------+----------+
4 rows in set (0.00 sec)

我们试图向数据库中插入一条name=test2,classNum=22的数据,但是test2主键已经存在,那么此条插入语句被忽略掉,可以看到在执行该语句前后,数据库的值没有任何变化.

总结

在日常测试机生产中,面对各种各样的情形,我们可以灵活使用上面几种插入语句,来达到我们的目的.

ChangeLog

2018-12-16 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十

var gitment = new Gitment({ id: 'Mysql之多种 Insert语句', // 可选。默认为 location.href owner: 'hublanker', repo: 'blog', oauth: { client_id: '2297651c181f632a31db', client_secret: 'a62f60d8da404586acc965a2ba6a6da9f053703b', }, }) gitment.render('container')



本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文测试使用数据库
  • 1.insert into
  • replace into
  • insert ignore into
  • 总结
    • ChangeLog
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档