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 '男'
);
2.插入两条记录
insert into stu values(1,'zhangsan','男');
insert into stu values(2,'lisi','女');
select* from stu;
插入时需要注意的几点
1.插入的数据应与字段的数据类型相同。比如,将‘a’插入到id列就不行
insert into stu values('a','wangwu','男');
2.数据的大小应在规定的范围内,例如:不能给gender列插入超过2个字符的数据
insert into stu values(3,'wangwu','nan');
3.在values中列出的数据位置必须与被加入的列位置相对应。例如将id和姓名搞反。
insert into stu values('wangwu',3,'nan');
4.字符和日期类型应该包含在单引号中。
insert into stu values(3,wangwu,'男');
5.插入空值的时候,不指定或指定为 null
insert into table values(null);
6.批量插入,可以一次插入多条数据,用==,==分开即可
//语法
insert into table values(),(),()
//举例
insert into stu values(3,'wangwu','男'),(4,'zhaoliu','女'),(5,'tianqi','男');
7.隐含列插入,给表中的所有字段添加数据,可以不写前面的字段名称
我们一开始一直用的都是隐含插入,隐含插入可以不给出字段名,但values中的数据必须示包含所有的字段所对应的数据。
insert into stu values(6,'hello','女');
--如果没有给出字段名称values中必须给出所有的字段值
8.指定列插入,只给表的某几个字段赋值,则需要指定字段名,也就是说
可以插入部分列
insert into stu(id,name) values(7,'world');
9.更新
当插入和主键数据相同的数据时,会导致主键冲突,比如
insert into stu values(1,'nihao','女');
- 这时,当主键存在冲突的时候(duplicate key),可以选择性的进行处理:
我们如果想更新id是1的数据,就可以用如下方法,更新
//语法
insert into 表名(字段列表) values(值列表) on duplicate key update 字段=新值;
//举例
insert into stu values(1,'nihao','女') on duplicate key update name='nihao', gender='女';
10.替换
我们可以用replace来替换我们我们之前的数据,要分为两种情况
- 如果主键冲突,那么主键所对应的值不变,非主键的值将被替换为新数据。
replace into stu values(2,'haha','女');
//主键冲突,2号id已经有数据,则更新除id之外后面的数据
- 如果主键没有冲突,则replace将相当于insert,直接插入新的数据。
replace into stu values(10,'haha','女');
//没有主键冲突,相当于自己插入新的数据