本文摘自千锋教育《MySQL数据库从入门到精通》,谢绝转载。
向数据表中插入数据有多种方式,包括为所有列插入数据、为指定列插入数据、批量插入数据等,在实际开发中,根据不同需求来决定数据插入的方式,接下来讲解几种基本的插入数据方式。
为所有列插入数据
通常情况下,向数据表中插入数据应包含表中所有字段,也就是为表中所有字段添加数据,为表中所有字段添加数据有以下两种方式。
1.INSERT语句中指定所有字段名
使用INSERT语句列出表的所有字段可以向表中插入数据,语法格式如下所示。
INSERT INTO表名(字段名1,字段名2,……) VALUES(值1,值2,……);
以上示例中,“字段名1,字段名2”是数据表中的字段名称,这里必须列出表中所有字段的名称,“值1,值2”是每个字段要添加的数据,每个值的顺序、类型必须与字段名对应。
[if !supportLists]例3-1 [endif]在数据库qianfeng2中创建一个员工表emp。
以上执行结果证明表创建完成,为了进一步验证,可以使用DESC查看库中的emp表,SQL语句如下所示。
从以上执行结果可看出,emp表成功创建。
通过INSERT语句插入数据,SQL语句如下所示。
以上执行结果证明插入数据完成,为了进一步验证,可以使用SELECT语句查看emp表中的数据,SQL语句如下所示。
从以上执行结果可看出,emp表中的数据成功插入,因为表中只插入了一条记录,所以只查询到了一条结果。
在插入数据时,INSERT语句中的字段顺序可以与数据库中表字段的顺序不一致,但VALUES中的值一定要和INSERT语句中的字段顺序对应,现在通过INSERT语句不按表字段顺序插入数据,SQL语句如下所示。
以上执行结果证明插入数据完成,为了进一步验证,可以使用SELECT语句查看emp表中的数据,SQL语句如下所示。
从以上执行结果可看出,emp表中的第二条数据成功插入,由此可看出,INSERT语句中字段顺序可以与数据表中字段顺序不一致,但一般不建议这样做。
2.INSERT语句中不指定字段名
使用INSERT语句为所有列插入数据时,也可以不指定字段名,语法格式如下所示。
INSERT INTO表名 VALUES(值1,值2,……);
以上示例中,“值1,值2”是每个字段要添加的数据,每个值的顺序、类型必须与表中字段的顺序和类型都对应。
前面在数据库qianfeng2中创建了员工表emp,使用INSERT语句不指定字段名的方式插入数据,SQL语句如下所示。
以上执行结果证明插入数据完成,为了进一步验证,可以使用SELECT语句查看emp表中的数据,SQL语句如下所示。
从以上执行结果可看出,emp表中的数据成功插入,使用这种方式来插入数据,VALUES中值的顺序必须与数据表中字段的顺序对应,否则会出现错误,接下来进行错误演示,SQL语句如下所示。
以上执行结果证明插入数据完成,但与之前不同的是,执行完成后,有三个警告,即3 warnings,可以使用SELECT语句查看emp表中的数据,SQL语句如下所示。
从以上执行结果可看出,插入的第四条数据明显和字段不对应,而是与插入时VALUES后边的值的顺序相对应。