SQL INSERT
INSERT语句向数据表中插入数据有以下两种形式:
将数据列出并插入到数据表的指定列;
插入其他表中查询的结果记录插入到数据表的指定列。
01 将数据列出并插入到数据表的指定列
语法结构如下:
1.插入记录到指定列,这里的列可以是数据表的全部列、也可以是部分列,但是列的数量和值的数量必须一致,顺序也要保持一致;
INSERT INTO table(column1,column2,…)VALUES(value1,value2,…);
2.当插入记录到指定列,指定列为全部列时也可以省略(column1,column2,…)
INSERT INTO tableVALUES (value1, value2,...);
实例如下:
这里通过表data_learning.product进行举例,data_learning是1.2节创建的数据库。
向数据表全部列中插入一行数据或多行数据(两种都可,插入多行数据类似):
-- 2.商品信息表:product,若是1.2节创建数据库&数据表中已执行下列语句,此次可以不用重复执行INSERT INTO data_learning.product(product_id,product_name,price) VALUES('P1','毛呢大衣',559 ),('P2','羽绒服',1999 ),('P3','风衣',299 );
--向数据表全部列中插入多行数据:
-- 2.商品信息表:product,若是1.2节创建数据库&数据表中已执行下列语句,此次可以不用重复执行INSERT INTO data_learning.product VALUES('P1','毛呢大衣',559 ),('P2','羽绒服',1999 ),('P3','风衣',299 );
向数据表指定列中插入一行数据:
-- 2.商品信息表:productINSERT INTO data_learning.product(product_id,product_name)VALUES('testP','TESTP');
查询 插入的行记录
SELECT * FROM data_learning.productWHERE product_id = 'testP'
没有插入的列默认值为NULL,查询结果如图:
02 插入其他表中查询的结果记录插入到数据表的指定列
结构如下:
-- 这里的指定列同上,可以数据表的全部列、也可以是部分列,但是列的数量和值的数量必须一致,顺序也要保持一致;INSERT INTO table1 (column1, column2,…)SELECT column1,column2,…FROM table2WHEREcondition1;
实例如下:
INSERT INTO data_learning.product (product_id,product_name)SELECTcategory_id as product_id,category_name as product_nameFROMdata_learning.product_category WHERElevel_id = 'L1';
如果两个表table1和table2有相同的结构,那么可以通过以下语句将一张表的所有数据插入另外一张表。
INSERT INTO table1SELECT *FROMtable2;