MySQL入门_实战5_数据的插入

MySQL入门_实战系列文章目录



前言

MySQL向数据表中插入数据使用INSERT语句。可以向数据表中插入完整的行记录,为特定的字段插入数据,也可以使用一条INSERT语句向数据表中一次插入多行记录,还可以将一个数据表的查询结果插入另一个数据表中。

本节就简单地介绍一下如何向MySQL的数据表中插入完整的行记录。


1 数据插入

1.1 建表

向MySQL数据表中插入完整的行记录
trexdb是上一章创建的数据库,这里再trexdb中先创建一个示例表DEPT

mysql> use trexdb;
Database changed
mysql> CREATE TABLE DEPT 
(DNO INT NOT NULL PRIMARY KEY COMMENT '部门编号',
DNAME VARCHAR ( 16 ) COMMENT '部门名称',
LOCATION VARCHAR ( 32 )) COMMENT '部门所在地';

在这里插入图片描述

1.2 不指定字段插入

这时候,结果显示DEPT表中是没有数据的。然后在不指定字段的情况下,向DEPT表中插入数据。

INSERT INTO DEPT VALUES (1, '业务研发部', '深圳');
INSERT INTO DEPT VALUES (2, '销售部', '北京');

查看数据表中的数据。
可以看到,数据表中插入了两行数据记录。
在这里插入图片描述

1.3 指定字段插入

指定需要插入数据的字段,向DEPT数据表中插入数据。

 INSERT INTO DEPT(DNO,DNAME,LOCATION) VALUES (3, '运维部', '深圳');

在这里插入图片描述

注:向数据表中插入数据时未指定字段时,插入的数据必须和字段一一对应,顺序也需要一致。如果此时表结构发生了变化,不指定字段的插入方式会因为字段不匹配而出现报错。在实际项目中,建议使用指定字段的方式向表中插入数据。

1.4 一次插入多条数据记录

例:

1.4.1 不指定插入字段插入多条记录
 INSERT INTO DEPT VALUES 
 (4, '财务部', '深圳'),
 (5, '运营部', '武汉');

在这里插入图片描述

1.4.2 指定插入字段插入多条记录
 INSERT INTO DEPT(DNO,DNAME,LOCATION) VALUES 
 (6, '人事部', '深圳'),
 (7, '公关部', '上海');

在这里插入图片描述

注:向数据表中插入多行数据时未指定字段时,插入的数据必须和字段一一对应,顺序也需要一致。如果此时表结构发生了变化,不指定字段的插入方式会因为字段不匹配而出现报错。在实际项目中,建议使用指定字段的方式向表中插入数据。

1.4 将查询结果插入另一个表中

INSERT语句不仅支持向数据表中直接插入数据,还可以支持向数据表中插入SELECT语句的查询结果。

语法结构:

INSERT INTO target_table
(column1 [, column2,, columnN])
SELECT
(ncolumn1 [, ncolumn2,, ncolumnN])
FROM source_table
[WHERE condition]

语法说明:
target_table:目标表,即需要插入数据的表
column1 [, column2, …, columnN]:目标表的字段。
source_table:源表,即数据来源的表。
ncolumn1 [, ncolumn2, …, ncolumnN]:源表中的字段。
condition:查询语句的条件。

例:
创建名称为DEPT_NEW的数据表,作为插入数据的目标表。DEPT_NEW数据表包含的字段DNO ,DNAME ,LOCATION; 执行创建DEPT_NEW的SQL语句:

CREATE TABLE DEPT_NEW 
(DNO INT NOT NULL PRIMARY KEY COMMENT '部门编号',
DNAME VARCHAR ( 16 ) COMMENT '部门名称',
LOCATION VARCHAR ( 32 )) COMMENT '部门所在地';

此时,表中是无数据的。
在这里插入图片描述
将从DEPT数据表中查询出来的数据插入DEPT_NEW数据表中。

INSERT INTO DEPT_NEW 
(DNO, DNAME, LOCATION)
SELECT
DNO, DNAME, LOCATION
FROM DEPT
WHERE DNO = 1;

在这里插入图片描述

SQL语句执行成功。
查看DEPT_NEW表中的数据。
在这里插入图片描述
可以看出来数据已经成功插入DEPT_NEW表中。

当要插入数据的目标表与查询数据的源数据表结构完全相同时,可以不指定插入数据的目标表的字段列表。

INSERT INTO DEPT_NEW SELECT * FROM DEPT WHERE DNO = 2;

在这里插入图片描述
SQL语句执行成功。
查看DEPT_NEW表中的数据。
在这里插入图片描述

1.5 创建表结构完全相同的新表

使用CREATE…LIKE…语句创建名称为DEPT_BAK表,DEPT_BAK的表结构与DEPT的表结构完全相同。

CREATE TABLE DEPT_BAK LIKE DEPT;

数据表创建成功。查询DEPT_BAK表中的数据

在这里插入图片描述
可以看到,新创建的DEPT_BAK表中的数据为空。

将DEPT表中的数据全部插入到DEPT_BAK中

INSERT INTO DEPT_BAK SELECT * FROM DEPT;

在这里插入图片描述
显示执行成功,查看DEPT_BAK中的数据

SELECT * FROM DEPT_BAK;

在这里插入图片描述
结果显示已经将DEPT表中的数据成功插入DEPT_BAK中。

至此,通过本章的学习,MySQL数据的插入已初步掌握。

如果该文章有帮助到您,请 点赞 支持,谢谢!
有任何疑问,欢迎在评论中留言

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值