MySQL插入数据的多种方式
  9VxwdloXxqLy 2023年11月01日 192 0

插入数据的多种方式

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 ('情韵测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试'),('青云测试');

运行结果:

image-20230206192937829

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

语法:

INSERT [INTO] tbl_name
    SET assignment_list

示例:

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

运行结果:

image-20230206193254052

通过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');

运行结果:

image-20230206194114691

通过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

查看生成的文件:

image-20230206194848795

使用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;

运行结果:

image-20230206195412625

使用source 以及 mysqldump插入数据

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  yThMa20bw7iV   2024年05月20日   60   0   0 MySQL
  pwciJmn0pWhj   2024年05月18日   56   0   0 MySQL
  WOljo6A3TCPl   2024年05月20日   51   0   0 MySQL
  8MfSLxyzjZA4   2024年05月20日   52   0   0 MySQL
  pwciJmn0pWhj   2024年05月17日   54   0   0 MySQL
  U6xQfOH75OE1   2024年05月17日   42   0   0 MySQL
  ijEHlwWobBkw   2024年05月17日   48   0   0 MySQL
  ijEHlwWobBkw   2024年05月17日   50   0   0 MySQL
  IS5q6TY5yQNJ   2024年05月17日   48   0   0 MySQL
9VxwdloXxqLy