Mysql插入数据

Mysql插入数据教程

我们都知道数据库里面存放了一些我们需要的数据,那么数据是怎么保存进数据库的呢?通过 INSERT 语句,我们可以将数据添加到数据库里面。INSERT 插入数据库有三种方式,插入完整的行,插入行的一部分和插入某些行的查询结果。

本章节以 student 表为例子:

CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_no` int(11) DEFAULT NULL, `stu_name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `class_id` int(11) DEFAULT NULL COMMENT '班级ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;

插入完整行详解

语法

INSERT INTO 表名 values (value1,value1,value1,value1);

描述

INSERT INTO 是关键字,它后面是要被插入的数据的表名,values 后面是对应的表里面的列的数据信息。它的顺序和建表语句里面列的顺序是一样的。

这样的语法不是安全的,如果表结构发生变化,它不能够保证变动后的列的顺序和之前完全相同。

案例

INSERT INTO student VALUES (1,100,"INSERT",20,1);

运行结果如下

01 insert_01.png

02 insert_02.png

我们添加完数据之后执行了 select 语句,查看表里面确实增加了一条数据。

插入部分行详解

语法

INSERT INTO 表名 (列1,列2,...) values (value1,value2,...);

描述

和插入完整的行一样,它也是以 INSERT INTO 关键字开始,后面跟表名,只不过表名后面会跟着列名,values 后面跟着的是列的对应的 value 值。它和列是一一对应的。

案例

INSERT INTO student (id,stu_no,stu_name,age) VALUES (2,101,"INSERT1",20);

运行结果如下

03 insert_03.png

04 insert_04.png

部分插入它将被插入的列名和值对应起来,如果将全部的列都列举出来,那么效果和完整行插入效果一样。因为这边的列和值是一一对应的,所以列值对的插入操作是比较安全可控的,建议执行插入数据的时候按照这种方式插入。

插入查询结果

语法

INSERT INTO 表名1(field1,field2,field3...) SELECT (field1,field2,field3...) FROM 表名2

描述

SELECT 查询的列的数据要和 INSERT 语句里面的列对应。SELECT 里面从表2 查询到的数据会全部插入到表名1 里面。

案例

-- 嗨客网(www.haicoder.net) INSERT INTO student (stu_no,stu_name,age,class_id) SELECT stu_no,stu_name,age,class_id FROM student;

05 insert_select.png

原先表里面有两条记录,执行了插入操作之后就变成了四条记录,和我们预想的一样。

Mysql插入数据总结

执行插入的时候,有三种方式,插入完整的行,插入行的一部分和插入某些行的查询结果。在平时的生产环境中,用的最多的是插入行的一部分,它可以将列对应,不会出错。