1.增加

insert into table_name[(column[,column...])]
values (value [,value...]);

案例:
1.创建一张学生表

create table stu(
id int unsigned primary key,
name varchar(20) not null default '',
gender varchar(2) not null default '男'
);

insertintoselectfrom大量数据 mysql_数据库---表的插入


2.插入两条记录

insert into stu values(1,'zhangsan','男');
insert into stu values(2,'lisi','女');
select* from stu;

insertintoselectfrom大量数据 mysql_Mysql_02


插入时需要注意的几点

1.插入的数据应与字段的数据类型相同。比如,将‘a’插入到id列就不行

insert into stu values('a','wangwu','男');

insertintoselectfrom大量数据 mysql_数据库---表的插入_03


2.数据的大小应在规定的范围内,例如:不能给gender列插入超过2个字符的数据

insert into stu values(3,'wangwu','nan');

insertintoselectfrom大量数据 mysql_数据_04


3.在values中列出的数据位置必须与被加入的列位置相对应。例如将id和姓名搞反。

insert into stu values('wangwu',3,'nan');

insertintoselectfrom大量数据 mysql_数据库---表的插入_05


4.字符和日期类型应该包含在单引号中。

insert into stu values(3,wangwu,'男');

insertintoselectfrom大量数据 mysql_数据库---表的插入_06


5.插入空值的时候,不指定或指定为 null

insert into table values(null);

6.批量插入,可以一次插入多条数据,用==,==分开即可

//语法
insert into table values(),(),()

//举例
insert into stu values(3,'wangwu','男'),(4,'zhaoliu','女'),(5,'tianqi','男');

insertintoselectfrom大量数据 mysql_字段_07


7.隐含列插入,给表中的所有字段添加数据,可以不写前面的字段名称

我们一开始一直用的都是隐含插入,隐含插入可以不给出字段名,但values中的数据必须示包含所有的字段所对应的数据。

insert into stu values(6,'hello','女');
--如果没有给出字段名称values中必须给出所有的字段值

insertintoselectfrom大量数据 mysql_数据库---表的插入_08


8.指定列插入,只给表的某几个字段赋值,则需要指定字段名,也就是说

可以插入部分列

insert into stu(id,name) values(7,'world');

insertintoselectfrom大量数据 mysql_数据_09


9.更新

当插入和主键数据相同的数据时,会导致主键冲突,比如

insert into stu values(1,'nihao','女');

insertintoselectfrom大量数据 mysql_字段_10

  • 这时,当主键存在冲突的时候(duplicate key),可以选择性的进行处理:
    我们如果想更新id是1的数据,就可以用如下方法,更新
//语法
insert into 表名(字段列表) values(值列表) on duplicate key update 字段=新值;

//举例
insert into stu values(1,'nihao','女') on duplicate key update name='nihao', gender='女';

insertintoselectfrom大量数据 mysql_Mysql_11


10.替换

我们可以用replace来替换我们我们之前的数据,要分为两种情况

  • 如果主键冲突,那么主键所对应的值不变,非主键的值将被替换为新数据。
replace into stu values(2,'haha','女');
//主键冲突,2号id已经有数据,则更新除id之外后面的数据

insertintoselectfrom大量数据 mysql_数据库---表的插入_12

  • 如果主键没有冲突,则replace将相当于insert,直接插入新的数据。
replace into stu values(10,'haha','女');
//没有主键冲突,相当于自己插入新的数据

insertintoselectfrom大量数据 mysql_主键_13