如果列清单和VALUES清单均为空清单,则INSERT会创建一个行,每个列都被设置为默认值: 复制代码 代码如下: INSERT INTO tbl_name () VALUES();
假设worker表只有name和email,插入一条数据 复制代码 代码如下: insert into worker values(“tom”,”tom@yahoo.com”);
批量插入多条数据 复制代码 代码如下: insert into worker values(‘tom","tom@yahoo.com"),(‘paul","paul@yahoo.com");
给出要赋值的那个列,然后再列出值的插入数据 复制代码 代码如下: insert into worker (name) values (‘tom"); insert into worker (name) values (‘tom"), (‘paul");
使用set插入数据 复制代码 代码如下: insert into worker set name="tom";
在 SET 子句中未命名的行都赋予一个缺省值,使用这种形式的 INSERT 语句不能插入多行。 一个expression可以引用在一个值表先前设置的任何列,例如: 复制代码 代码如下: INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2); --但不能这样 INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
使用INSERT…SELECT语句插入从其他表选择的行 复制代码 代码如下: insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2; --如果每一列都有数据 insert into tbl_name1 select col3,col4 from tbl_name2;
查询不能包含一个ORDER BY子句,而且INSERT语句的目的表不能出现在SELECT查询部分的FROM子句. ON DUPLICATE KEY UPDATE 如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。 复制代码 代码如下: --假设a,b为唯一索引,表table没有1,2这样的行是正常插入数据,冲突时,更新c列的值 INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3; --或者是 INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=values(c); --引用其他列更新冲突的行 INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); 向一个已定义为NOT NULL的列中插入NULL。对于一个多行INSERT语句或INSERT INTO...SELECT语句,根据列数据的类型,列被设置为隐含的默认值。对于数字类型,默认值为0;对于字符串类型,默认值为空字符串("");对于日期和时间类型,默认值为“zero”值。
INSERT INTO...SELECT的ON DUPLICATE KEY UPDATE 复制代码 代码如下: insert into tbl_name1(a,b,c) select col1,col2,col3 from tbl_name2 ON DUPLICATE KEY UPDATE c=values(c);