学习笔记,以代码和例子堆砌而成,方便查阅。
参考书籍:《Mysql必知必会》等
要点:INSERT INTO子句


此Blog里的例子都会用下面的grouping表和grouping2表。

grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '100', '30'

grouping2表:

# id, new_pro_version, price, pro_num
'1', '104', '25', '300'
'2', '105', '1000', '2'
'3', '105', '800', '3'




我想向grouping表中,插入数据行,我现在有3种方式。

方式一(非指定字段插入):

INSERT INTO 表名 VALUES(记录1),(记录2),...;

按照此方式插入,需要注意:因为是非指定字段插入,所以必须对每个列提供一个值.如果某列没有值可插入,则可以使用NULL值(当然,前提条件是,该列允许NULL存在)。



方式二(指定字段插入):

INSERT INTO 表名(字段1,字段2...) VALUES(值1),(值2)...;



方式三(将另一个表的检索结果插入本表):

INSERT INTO 表名1(字段1,字段2...) SELECT 字段1,字段2... FROM 表名2;

按照此方式插入,需要注意:两个表的列名可以不同,因为Mysql只关心列的位置。SELECT中的字段1,将填充进被插入表的字段1的位置。




现在我把3种方式都试一遍。

先向grouping表中利用方法一插入1行数据

INSERT INTO grouping VALUES(8,103,30,200);

再向grouping表中利用方法二插入2行数据

INSERT INTO grouping(pro_version,price,pro_num) VALUES(104,10,250),(105,500,10);



我先查看一下,我的grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '100', '30'
'8', '103', '30', '200'
'9', '104', '10', '250'
'10', '105', '500', '10'

不错数据行都添加进去了。



最后从grouping2表中检索出pro_version=105的数据行,插入grouping表中

INSERT INTO grouping(pro_version,price,pro_num) SELECT new_pro_version,price,pro_num FROM grouping2 WHERE new_pro_version=105;

再瞅两眼咱的grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '100', '30'
'8', '103', '30', '200'
'9', '104', '10', '250'
'10', '105', '500', '10'
'11', '105', '1000', '2'
'12', '105', '800', '3'

Fantastic!