数据库---表的插入

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','女');
//没有主键冲突,相当于自己插入新的数据

数据库---表的插入