插入数据的多种方式

replace关键字插入数据

语法:

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
{ {VALUES | VALUE} (value_list) [, (value_list)] ...
|
VALUES row_constructor_list
} REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
SET assignment_list REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
{SELECT ... | TABLE table_name} -- 其实和insert基本上差不多 insert部分支持的关键字replace也支持

官方文档:

REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. See Section 13.2.7, “INSERT Statement”.

REPLACE工作方式与INSERT完全相同 ,只是如果表中的旧行与 a或 索引INSERT的新行具有相同的值,则在插入新行之前删除旧行。

REPLACE is a MySQL extension to the SQL standard. It either inserts, or deletes and inserts. For another MySQL extension to standard SQL—that either inserts or updates

REPLACE是 SQL 标准的 MySQL 扩展。它要么插入,要么删除 并插入。对于标准 SQL 的另一个 MySQL 扩展——插入或更新。

简单来说,就是replace插入数据和insert插入数据基本上一致,只不过当插入的数据有主键索引或者唯一索引时,如果发生主键/唯一索引冲突时,会删除旧的数据并且插入新的数据。

直接通过insert语句插入

语法:

INSERT [INTO] tbl_name
[(col_name [, col_name] ...)]
{ {VALUES | VALUE} (value_list) [, (value_list)] ... }

示例:

# 插入数据 第一种方式 values关键字可以替换为value 两者作用一致
insert into human(`name`) values ('情韵测试');
# 批量插入
insert into human(`name`) value ('情韵测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试');

运行结果:

通过insert ... set方式插入数据

语法:

INSERT [INTO] tbl_name
SET assignment_list

示例:

# 插入数据 第二种方式
# 这种方式不能批量插入 简化了之前的插入
insert into human set name = '测试' ,id = 101;

运行结果:

通过insert ... table/select/values 方式插入数据

语法:

INSERT [INTO] tbl_name
[(col_name [, col_name] ...)]
{ SELECT ...
| TABLE table_name
| VALUES row_constructor_list
}

示例1select:

# insert ... select
# 从另一张表格中选出的数据格式和数量必须相同,不要求列名必须相同
insert into human select name,id from person;

示例2table:

# insert ... table
# 另一张表格中对应的数据格式和字段数量必须相同,不要求列名必须相同
insert into human table person;

示例3values:

insert into human(`name`)
values row('name'), row('name'), row('name'), row('name'), row('name'), row('name');

运行结果:

通过load data的方式插入数据

这种方式首先得准备好要插入的数据文档,然后进行插入。

我们可以先导出一份数据库表的数据:

语法:

SELECT select_expr [, select_expr] ...
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[into_option] into_option: {
INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name] ...
}

示例:

# 将数据导入到本地
# secure_file_priv 是只读变量 需要去配置文件修改 secure-file-priv=''
select * from human into outfile 'f:/db.txt';

需要修改配置文件:

[mysqld]
...
# 配置select ... from ... into outfile '文件地址'
secure-file-priv=''
...
[mysql]
...

重启mysql

查看生成的文件:

使用load data插入数据

语法:

LOAD DATA
INFILE 'file_name'
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]

示例:

这里如果提示不允许也需要修改配置文件【注意:不太建议开启 ,记得及时关闭,有安全风险!】

[mysqld]
...
# 配置文件读取数据
local_infile=1
# 配置select ... from ... into outfile '文件地址'
secure-file-priv=''
...
[mysql]
# 配置文件读取数据
local_infile=1
...

重启mysql

load data infile 'f:/db.txt' into table human;

运行结果:

使用source 以及 mysqldump插入数据

使用命令行方式导入数据,这种方式比较简单,百度搜一下即可。

MySQL插入数据的多种方式的更多相关文章

  1. mysql 插入数据失败防止自增长主键增长的方法

    mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说 ...

  2. mysql插入数据与删除重复记录的几个例子(收藏)

    mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...

  3. mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  4. mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  5. Python3 多线程(连接池)操作MySQL插入数据

    1.主要模块DBUtils : 允许在多线程应用和数据库之间连接的模块套件Threading : 提供多线程功能 2.创建连接池PooledDB 基本参数: mincached : 最少的空闲连接数, ...

  6. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  7. MySQL 插入数据

    MySQL 插入数据 MySQL 表中使用 INSERT INTO SQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下 ...

  8. mysql插入数据时,中文乱码

    MySQL 插入数据时,中文乱码问题的解决(转) 当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1 ...

  9. MySQL插入数据异常

    MySQL插入数据异常 1.错误如下: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Dupli ...

  10. PHP MySQL 插入数据

    PHP MySQL 插入数据 使用 MySQLi 和 PDO 向 MySQL 插入数据 在创建完数据库和表后,我们可以向表中添加数据. 以下为一些语法规则: PHP 中 SQL 查询语句必须使用引号 ...

随机推荐

  1. ArcGISServer 10.4 虚拟机 安装 新建站点失败 Failed to configure the server machine ''. Server machine '' is not a local

    在通过 VMware  创建的虚拟机上(win7 64位)安装ArcServer 10.4,新建站点时出现下面的错误. Failed to configure the server machine ' ...

  2. 第三十节:fillder抓取APP数据之小程序

    1.下载fillder ,fillder官网:https://www.telerik.com/fiddler 2.安装好后设置fillder: 工具->选项,打开设置面板.选择HTTPS选项卡. ...

  3. 深刻理解JAVA并发中的有序性问题和解决之道

    欢迎关注专栏[JAVA并发] 更多技术干活尽在个人公众号--JAVA旭阳 问题 Java并发情况下总是会遇到各种意向不到的问题,比如下面的代码: int num = 0; boolean ready ...

  4. mysql基础问题三问(底层逻辑;正在执行;日志观察)

    背景:经常面试会遇到且实际工作中也会应用到的三个场景: 目录: 一.mysql查询时的底层原理是什么? 二.如何查看正在执行的mysql语句? 三.如何观察mysql运行过程中的日志信息? - - - ...

  5. 像go 一样 打造.NET 单文件应用程序的编译器项目bflat 发布 7.0版本

    现代.NET和C#在低级/系统程序以及与C/C++/Rust等互操作方面的能力完全令各位刮目相看了,有人用C#开发的64位操作系统: GitHub - nifanfa/MOOS: C# x64 ope ...

  6. LeetCode HOT 100:搜索旋转排序数组

    题目:33. 搜索旋转排序数组 题目描述: 一个整数数组,数组每个值都不相同,且该整数数组是一个被旋转过的数组.被旋转过的数组是指,由一个递增的数组,从某一个下标开始往后的元素,移到最开头.举个例子: ...

  7. 软件工程大作业——“你帮我助”软件开发v2.0

    项目简介 在疫情管控期间,很多物资由于信息不对称,不能达成资源的有效分配,尽管这样的事件已经基本不会在新冠疫情的场景中出现,但是开发出一个物品交换的公开信息平台在任何一个社区中都是有必要的,这是构建完 ...

  8. C#代码扫描工具Sonarqube + Win10+SqlServer2017

    在之前的公司, 看到有用过代码扫描工具, 扫描C#代码, 最近公司也有考虑做这个,于是我便独自研究了一下,这里给大家做个分享 网上找了很多资料, 主要有以下问题: 1. Sonarqube用的是 旧版 ...

  9. 浅谈promise对象

    背景: 最近项目在做小程序的开发,涉及设计一个统一的登录公共方法,当实现时涉及到多个异步请求,那么问题来了,如何让多个异步请求先后同步进行呢?很多人会想到使用多层嵌套套来实现,就像这样: functi ...

  10. 【转载】【Word】项目编号应用样式后出现黑框的解决方案

    本文中的宏代码来自: https://www.zhihu.com/question/38985919 Word使用项目编号后,出现黑框,如下图所示: 网上大多数解决方案在重新打开文档后,依然还是有黑框 ...