大家好,我是林赛~
数据分析师的日常工作中常常需要维护一些维表、非系统生产的数据表或者将某张业务表的部分或全部字段复制到另外一张表临时分析使用,这就涉及到向数据表中插入数据行的操作,需要用到SQL的INSERT语句。
INSERT语句向数据表中插入数据有以下两种形式:
-
将数据列出并插入到数据表的指定列;
-
插入其他表中查询的结果记录插入到数据表的指定列。
01
将数据列出并插入到数据表的指定列
语法结构如下:
1.插入记录到指定列,这里的列可以是数据表的全部列、也可以是部分列,但是列的数量和值的数量必须一致,顺序也要保持一致;
INSERT INTO table(column1,column2,…)
VALUES(value1,value2,…);
2.当插入记录到指定列,指定列为全部列时也可以省略(column1,column2,…)
INSERT INTO table
VALUES (value1, value2,...);
实例如下:
这里通过表data_learning.product进行举例,data_learning是1.2节创建的数据库。
1.向数据表全部列中插入一行数据或多行数据(两种都可,插入多行数据类似)
-- 2.商品信息表:product,若是1.2节创建数据库&数据表中已执行下列语句,此次可以不用重复执行
INSERT INTO data_learning.product(product_id,product_name,price)
VALUES
('P1', '毛呢大衣', 559 );
-- 向数据表全部列中插入多行数据
-- 2.商品信息表:product,若是1.2节创建数据库&数据表中已执行下列语句,此次可以不用重复执行
INSERT INTO data_learning.product VALUES
('P1', '毛呢大衣', 559 ),
('P2', '羽绒服', 1999 ),
('P3', '风衣', 299 );
2.向数据表指定列中插入一行数据
-- 2.商品信息表:product
INSERT INTO data_learning.product(product_id,product_name)
VALUES
('test P', 'TESTP');
查询插入的行记录:
SELECT
*
FROM
data_learning.product
WHERE
product_id =
'test P'
没有插入的列默认值为NULL,查询结果如图:
02
语法结构如下:
这里的指定列同上,可以数据表的全部列、也可以是部分列,但是列的数量和值的数量必须一致,顺序也要保持一致;
INSERT INTO table1 (column1, column2,…)
SELECT
column1,
column2,
…
FROM
table2
WHERE
condition1;
实例如下:
INSERT INTO data_learning.product (product_id,product_name)
SELECT
category_id as product_id,
category_name as product_name
FROM
data_learning.product_category
WHERE
level_id = 'L1'
;
如果两个表table1和table2有相同的结构,那么可以通过以下语句将一张表的所有数据插入另外一张表。
INSERT INTO table1
SELECT
*
FROM
table2;
03
首先,我们简单介绍了INSERT语句两种插入数据的形式,然后学习了插入数据的语法结构和具体实例SQL脚本。
学后练习:
在data_learning库中创建一张名为test_tb的数据表,表结构和data_learning.product一致,并将data_learning.product中的数据插入data_learning. test_tb中。
欢迎关注我,一起学习数据知识,一起成长~
👇👇👇
发表评论