创建好表之后,就可以向表中插入数据记录了,MySQL中使用INSERT语句向数据库表中插入新的数据记录。MySQL支持多种插入方式:插入完整的记录、插入记录的一部分、插入一条记录和插入多条记录。
MySQL使用INSERT语句添加新记录时要求指定表名称和插入新记录中的数据,基本语法格式如下。
INSERT语句说明如下。
· 向表中所有字段插入值的方法有两种:一种是完全不指定字段名;另一种是指定所有字段名。如果完全不指定字段名,则要求“值列表”中的数据与表结构中的字段顺序、类型、数量一一对应。如果指定所有字段名,则要求“值列表”中的数据与前面指定的“字段列表”中的字段顺序、类型、数量一一对应。虽然不指定字段名看起来更简洁,但是任何表结构的修改都将使得这个INSERT语句随之跟着修改,否则就会出错。然而指定所有字段名的方式,在表结构新增字段以及调整字段位置的情况下,仍然不需要修改INSERT语句。
· 字段列表的每一个字段之间,以及值列表的每一个值之间都用英文逗号作为分割。
· 值列表中关于文本字符串和日期类型的值需要加英文单引号将值引起来。
例如,创建“tb_student”数据表并给所有字段插入数据,SQL语句示例如下。
(1)创建“tb_student”数据表,定义3个字段sid、sname和chinese,字段类型分别为int、varchar(30)和int。
(2)查看“tb_student”表的表结构。
(3)使用完全不指定字段名的方式给“tb_student”表的所有字段插入数据。
(4)使用指定所有字段名的方式给“tb_student”表的所有字段插入数据。
(5)执行插入操作之后,使用SELECT语句查看“tb_student”表中的数据(关于SELECT语句的具体语法请看第4.2节)。
可以看到插入记录成功。
给表的部分字段插入数据,就是在INSERT语句中通过(部分字段列表)明确指出只给指定的部分字段插入值,而其他未列出字段则按默认值处理,语法格式如下。
例如,给“tb_student”表的部分字段插入数据,SQL语句示例如下。
提示信息表示插入一条记录成功,使用SELECT语句查询表中的记录,查询结果如下。
可以看到插入记录成功,“王五”的“chinese”字段值是默认值NULL。
INSERT语句还支持在一条INSERT语句中同时插入多条记录。同样,可以完全不指定字段或明确指定要插入数据的字段,语法格式如下。
INSERT语句说明如下。
· 如果完全不指定字段名,则要求“值列表”中的数据与表结构中的字段顺序、类型、数量一一对应。如果指定所有字段名,则要求“值列表”中的数据与前面指定的“字段列表”中的字段顺序、类型、数量一一对应。
· 每一个“(值列表)”对应一条记录,每个“(值列表)”之间使用英文逗号分隔。
例如,给“tb_student”表的所有字段插入多条数据,SQL语句示例如下。
提示信息表示插入4条记录成功。当使用INSERT同时插入多条记录时,MySQL会返回一些在执行单行插入时没有的额外信息,这些信息的含义如下。
· Records:表明插入的记录条数。
· Duplicates:表明插入记录时违反唯一性要求而被忽略的记录数。关于唯一性要求请看第8章约束部分。
· Warnings:如果插入记录有风险但又不是错误,MySQL通过警告方式提示。Warnings表示警告数量。使用SELECT语句查询表中的记录,查询结果如下。
可以看到记录插入成功。