
4.1 插入数据记录
插入数据记录是常见的数据操作,可以显示向表中增加的新的数据记录。在MySQL中可以通过“INSERT INTO”语句来实现插入数据记录,该SQL语句可以通过如下4种方式使用:插入完整数据记录、插入部分数据记录、插入多条数据记录和插入JSON结构的数据记录。
4.1.1 插入完整数据记录
在MySQL中插入完整的数据记录可通过SQL语句INSERT来实现,其语法形式如下:

在上述语句中,参数tablename表示所要插入完整记录的表名,参数fieldn表示表中的字段名字,参数valuen表示所要插入的数值,并且参数fieldn与参数valuen一一对应。
【示例4-1】执行SQL语句INSERT INTO,向数据库school中的表t_class插入一条完整的数据记录,其值分别为1、“高一(2)班”“西教学楼3楼”和“张三”。
插入前确保classno列为自增列,请参照3.8.5小节设置自增。使用INSERT INTO向t_class表插入完整的数据记录,再使用SELECT语句检验t_class表的数据是否插入成功,具体SQL语句如下,执行结果如图4-1、图4-2所示。


图4-1 插入数据记录

图4-2 查询表格数据记录
图4-2的执行结果显示,表t_class的数据记录已经成功插入。
4.1.2 插入部分数据记录
插入数据记录时除了可以插入完整数据记录,还可以插入指定字段的部分数据记录。在MySQL中插入部分数据记录通过SQL语句“INSERT INTO”来实现,其语法形式如下:

在上述语句中,tablename参数表示表的名称,fieldn表示表中部分字段名称,valuen表示所要插入的部分数值,并且fieldn和valuen一一对应。
操作前请根据3.8.2和3.8.5小节将字段classno设置为自增列,并将字段loc的默认值设置为“东教学楼2楼”。
【示例4-2】向数据库school中的班级表t_class中插入部分数据记录。具体操作如下:
(1)执行SQL语句INSERT,向t_class表插入数据,再使用SELECT语句检验t_class表的数据是否插入成功,具体SQL语句如下,执行结果如图4-3、图4-4所示。

注意:SQL关键字在描述时通常采用全大写,但使用时不区分大小写,后期不再说明。

图4-3 插入数据

图4-4 查询表数据记录
从图4-4可以看出,表t_class的字段cname和字段loc的记录插入成功,有“自动增加”约束的字段classno也插入了自动生成值。
在具体开发中,除了“自动增加”约束的字段不需要插入数值外,具有“默认值”约束的字段也不需要插入数值。
(2)执行SQL语句INSERT INTO,插入一条部分数据记录,再使用SELECT语句检验t_class表的数据是否插入成功,SQL语句如下,执行结果如图4-5、图4-6所示。


图4-5 插入部分数据

图4-6 查询插入数据
从图4-6中可以看出,表t_class中的字段cname已经成功插入“高二(5)班”数据记录,字段classno的值自动增加,字段loc则插入默认值“东教学楼2楼”。
4.1.3 插入多条完整数据记录
在具体插入数据记录时,除了可以一次插入一条数据记录外,还可以一次插入多条数据记录。在具体实现一次插入多条数据记录时,同样可以分为一次插入多条完整数据记录和一次插入多条部分数据记录。本小节介绍如何插入多条完整数据记录,语法形式如下:

上述语句中,参数n表示有n个字段,参数m表示有m个字段,在具体使用时,只要记录中的数值与字段参数相对应即可,即字段参数field的顺序可以和表的字段顺序不一致。
除了上述语法外,还有另外一种语法形式,如下所示。

上述语句中,虽然没有字段参数field,但是却可以正确地插入多条完整数据记录,不过每条记录中的数值顺序必须与表中字段的顺序一致。
4.1.4 插入多条部分数据记录
在MySQL中插入多条部分记录可通过SQL语句INSERT INTO来实现,其语法形式如下:

参数fieldn表示表中部分字段名称,记录(value11,value21,value31,…,valuen1)表示所要插入第一条记录的部分数值,记录(value1m,value2m,value3m,…,valuenm)表示所要插入第m条记录的部分数值,在具体应用时参数fieldn与参数valuen应一一对应。
多条数据的插入与单条数据记录的插入原理相同,做好数据值与字段的对应即可。
4.1.5 插入JSON结构的数据记录
在MySQL中插入JSON结构的数据记录通过SQL语句INSERT来实现,其语法形式如下:

上述语句中,参数tablename表示所要插入的表名,参数jsonfield表示表中的JSON类型的字段名字,参数jsonObjectValue表示所要插入的JSON值。
【示例4-3】执行SQL语句INSERT INTO,向数据库school中的JSON表t_json插入数据记录,其中JSON对象的值为“{"name": "Zhangsan", "sex": "男"}”。具体步骤如下:
执行SQL语句INSERT INTO,插入数据记录,再使用SELECT语句来查询t_json表,具体SQL语句如下,执行结果如图4-7、图4-8所示。
INSERT INTO t_json(json_col) VALUES ('{"name": "Zhangsan", "sex": "男"}'); SELECT * from t_json;

图4-7 向数据表插入JSON记录

图4-8 查询插入数据