- MySQL 8 DBA基础教程
- 孙泽军 刘华贞
- 3164字
- 2025-02-17 19:25:31
5.1 插入数据记录
插入数据记录是数据操作中常见的操作,该操作可以显式地向表中增加新的数据记录。在MySQL中可以通过INSERT INTO语句来实现插入数据记录,该SQL语句可以通过4种方式使用:插入完整数据记录、插入数据记录的一部分、插入多余的数据记录和插入查询结果。
5.1.1 插入完整数据记录
在MySQL中插入完整的数据记录可通过SQL语句INSERT来实现,其语法形式如下:
INSERT INTO tablename(field1, field2, field3……fieldn) VALUES(value1, value2, value3……valuen)
在上述语句中,参数tablename表示所要插入完整记录的表名,参数fieldn表示表中的字段名字,参数valuen表示所要插入的数值,并且参数fieldn与参数valuen一一对应。
【示例5-1】执行SQL语句INSERT INTO,向数据库school的t_class表中插入一条完整的数据记录,其值分别为1、高一(2)班、西教学楼3楼和张三。
步骤01 创建和选择数据库school,具体SQL语句如下:
CREATE DATABASE school; USE school;
执行结果如图5-1和图5-2所示。

图5-1 创建数据库

图5-2 选择数据库
步骤02 创建和查看t_class表,具体SQL语句如下:
CREATE TABLE `t_class` ( `classno` INT(11), `cname` VARCHAR(20), `loc` VARCHAR(40), `advisor` VARCHAR(20)); DESCRIBE t_class;
执行结果如图5-3和图5-4所示。

图5-3 创建表

图5-4 查看表信息
步骤03 使用INSERT INTO向t_class表插入完整的数据记录,再使用SELECT语句检验t_class表的数据是否插入成功,具体SQL语句如下:
INSERT INTO t_class(classno, cname, loc, advisor) VALUES(1,'高一(2)班','西教学楼3楼','张三'); SELECT * FROM t_class;
执行结果如图5-5和图5-6所示。

图5-5 插入数据记录

图5-6 查询表格数据记录
图5-6的执行结果显示,表t_class的数据记录已经成功插入。
5.1.2 插入数据记录的一部分
插入数据记录时除了可以插入完整数据记录外,还可以插入指定字段的部分数据记录,在MySQL中插入数据记录的一部分通过SQL语句INSERT INTO来实现,其语法形式如下:
INSERT INTO tablename(field1,field2,field3,……fieldn) VALUES(value1,value2,value3……valuen)
在上述语句中,tablename参数表示表的名称,fieldn表示表中部分字段名称,valuen表示所要插入部分数值,并且fieldn和valuen一一对应。
【示例5-2】向数据库school的班级表t_student中插入一条部分数据记录,其中字段cname的值为 “高一(8)班”,字段loc的值为“西教学楼4楼”,具体步骤如下:
步骤01 创建和选择数据库school,具体SQL语句如下:
CREATE DATABASE school; USE school;
执行结果如图5-7和图5-8所示。

图5-7 创建数据库

图5-8 选择数据库
步骤02 创建和查看t_class表,具体SQL语句如下:
CREATE TABLE `t_class`( `classno` INT(11) PRIMARY KEY AUTO_INCREMENT, `cname` VARCHAR(20), `loc` VARCHAR(40) DEFAULT '东教学楼2楼', `stucount` INT(11) ); DESCRIBE t_class;
执行结果如图5-9和图5-10所示。

图5-9 创建和选择数据库

图5-10 创建表
步骤03 执行SQL语句INSERT,向t_class表中插入数据,再使用SELECT语句检验t_class表的数据是否插入成功,具体SQL语句如下:
INSERT INTO t_class(cname, loc) VALUES('高一(8)班','西教学楼4楼'); SELECT * FROM t_class;
执行结果如图5-11和图5-12所示。

图5-11 插入数据

图5-12 查询表数据记录
从图5-12可以看出,表t_class的字段cname和字段loc的记录插入成功,有自动增长约束的字段classno也插入了自动生成值。
在具体开发中,除了自动增长约束的字段不需要插入数值外,具有默认值约束的字段也不需要插入数值。
步骤04 执行SQL语句INSERT INTO,插入一条部分数据记录,再使用SELECT语句检验t_class表的数据是否插入成功,具体SQL语句如下:
INSERT INTO t_class(cname) VALUES(‘高二(5)班’); SELECT * FROM t_class;
执行结果如图5-13和图5-14所示。

图5-13 插入部分数据

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

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

上述语句中,虽然没有字段参数field,但是可以正确地插入多条完整数据记录,不过每条记录中的数值顺序必须与表中字段的顺序一致。
【示例5-3】执行SQL语句INSERT INTO,向数据库school的班级表t_class中一次插入多条完整数据记录,其值分别为(1,'class_1', loc_1,'adv_1')、(2,'class_2', loc_2,'adv_2')、(3,'class_3', loc_3,' adv_3'),具体步骤如下:
步骤01 创建和选择数据库school,具体SQL语句如下:
CREATE DATABASE school; USE school;
执行结果如图5-15和图5-16所示。

图5-15 创建数据库

图5-16 选择数据库
步骤02 执行SQL语句CREATE TABLE,创建t_class表,再使用DESCRIBE语句查看t_class表,具体SQL语句如下:
CREATE TABLE `t_class` ( classno INT(11) PRIMARY KEY AUTO_INCREMENT, cname VARCHAR(20), loc VARCHAR(40), advisor VARCHAR(20)); DESCRIBE t_class;
执行结果如图5-17和图5-18所示。

图5-17 创建表

图5-18 查看表信息
步骤03 执行SQL语句INSERT INTO,插入完整数据记录,再使用SELECT语句来查询t_class表,具体SQL语句如下:
INSERT INTO t_class VALUES (1, 'class_1', 'loc_1', 'adv_1'), (2, 'class_2', 'loc_2', 'adv_2'), (3,'class_3', 'loc_3', 'adv_3'); SELECT * FROM t_class;
执行结果如图5-19和图5-20所示。

图5-19 插入多条完整数据记录

图5-20 查询表数据
5.1.4 插入多条部分数据记录
在MySQL中插入多条部分数据记录通过SQL语句INSERT INTO来实现,其语法形式如下:

参数fieldn表示表中部分字段名称,记录(value11,value21,value31,…,valuen1)表示所要插入的第一条记录的部分数值,记录(value1m,value2m,value3m,…,valuenm)表示所要插入的第m条记录的部分数值,在具体应用时参数fieldn与参数valuen应一一对应。
【示例5-4】执行SQL语句INSERT INTO,向数据库school的班级表t_class中插入多条部分数据记录,其中字段cname和字段loc的值为('class_1','loc_1')、('class_2','loc_2')、('class_3','loc_3'),具体步骤如下:
步骤01 创建并选择该数据库school,具体SQL语句如下:
CREATE DATABASE school; USE school;
执行结果如图5-21和图5-22所示。

图5-21 创建数据库

图5-22 选择数据库
步骤02 使用CREATE 语句创建t_class表,再使用DESCRIBE语句查看班级表的信息,具体SQL语句如下:
CREATE TABLE `t_class` ( classno INT(11) PRIMARY KEY AUTO_INCREMENT, cname VARCHAR(20), loc VARCHAR(40), advisor VARCHAR(20)); DESCRIBE t_class;
执行结果如图5-23和图5-24所示。

图5-23 创建表

图5-24 查看表信息
步骤03 执行SQL语句INSERT INTO,插入完整数据记录,再使用SELECT语句查询t_class表,具体SQL语句如下:

执行结果如图5-25和图5-26所示。

图5-25 向数据表中插入多条数据记录

图5-26 查询插入的数据
图5-26的执行结果显示,表t_class的3条数据已经插入成功,而且记录中没有数值插入的字段已经由自动增加约束生成值。
5.1.5 插入查询结果
在MySQL中,通过SQL语句INSERT INTO除了可以将数据值插入表中外,还可以实现将一个表中的查询结果作为数据记录插入另一个表中,从而实现表数据值的复制功能。语法形式如下:

参数tablename1表示所要插入数据的表,参数tablename2表示所要插入的数据是从哪个表查询出来的,参数(field11,field12,field13,…,field1n)表示tablename1中所要插入值的字段,参数(field21,field22,field23,…,field2n)表示tablename2所查询的数据值的字段。
【示例5-5】执行SQL语句INSERT INTO,向数据库school的班级表t_class中插入班主任表t_advisor中关于字段cname和loc的查询结果,具体步骤如下:
步骤01 执行SQL语句CREATE DATABASE,创建数据库school,并选择该数据库,具体SQL语句如下:
CREATE DATABASE school; USE school;
执行结果如图5-27和图5-28所示。

图5-27 创建数据库

图5-28 选择数据库
步骤02 执行SQL语句CREATE TABLE,创建t_class表和t_advisor表,具体SQL语句如下:
CREATE TABLE `t_class` ( classno INT(11) PRIMARY KEY AUTO_INCREMENT, cname VARCHAR(20), loc VARCHAR(40), advisor VARCHAR(20)); CREATE TABLE t_advisor( id INT PRIMARY KEY, aname VARCHAR(20), cname VARCHAR(20), loc VARCHAR(40));
执行结果如图5-29和图5-30所示。

图5-29 创建t_class表

图5-30 创建t_advisor表
步骤03 执行SQL语句DESCRIBE,查看数据库school中班级表t_class和班主任表t_advisor的信息,具体SQL语句如下:
DESCRIBE t_class; DESCRIBE t_advisor;
执行结果如图5-31和图5-32所示。

图5-31 查看表t_class的信息

图5-32 查看表t_advisor的信息
步骤04 在班主任表t_advisor中预先准备数据,再使用SELECT语句查询t_advisor表,具体SQL语句如下:
INSERT INTO t_advisor VALUES(1,'a1','class_1','loc_1'), (2,'a2','class_2','loc_2'),(3,'a3','class_3','loc_3'); SELECT * FROM t_advisor;
执行结果如图5-33和图5-34所示。

图5-33 向表t_advisor插入数据

图5-34 查看表的数据
步骤05 向班级表t_class中插入班主任表t_advisor中查询的数据,再使用SELECT语句查询t_class表,SQL语句如下:
INSERT INTO t_class(cname,loc)SELECT cname,loc FROM t_advisor; SELECT * FROM t_class;
执行结果如图5-35和图5-36所示。

图5-35 向表t_class中插入查询数据

图5-36 查看表t_class的数据
5.1.6 通过SQLyog来插入数据记录
除了SQL语句外,我们还可以通过客户端软件SQLyog来插入数据记录,具体步骤如下:
步骤01 打开SQLyog,选择数据库school,在“询问”窗口中输入SQL语句并单击“执行”按钮,具体SQL语句如下:
CREATE TABLE `t_class` ( `classno` INT(11) DEFAULT NULL, `cname` VARCHAR(20) DEFAULT NULL, `loc` VARCHAR(40) DEFAULT NULL, `advisor` VARCHAR(20) DEFAULT NULL);
执行结果如图5-37所示。

图5-37 SQLyog中在数据库中新建表
步骤02 在“对象资源管理器”窗口中,右击数据库school中表t_class的节点,从弹出的快捷菜单中选择“在新选项卡中打开表格”命令,如图5-38所示。

图5-38 打开“在新选项卡中打开表格”
步骤03 打开如图5-39所示的窗口。
步骤04 双击初始行,就会新增可以编辑的一行,如图5-40所示。

图5-39 t_class表格被打开

图5-40 在t_class表格中插入数据
如图5-40所示,双击某个单元格,就可以输入相应的数据记录,一行数据为一组记录,单击“保存”按钮,就可以保存输入的数据记录。
通过上述步骤即可实现插入数据记录功能。