向MySQL数据表插入行记录(INSERT)
2008-11-21 11:13:05 来源:WEB开发网自 MySQL 3.22 .10 以来,可以 col_name = value 的形式给出列和值。
例如:
mysql>insert into worker set name=’tom’;
在 SET 子句中未命名的行都赋予一个缺省值。
使用这种形式的 INSERT 语句不能插入多行。
一个expression可以引用在一个值表先前设置的任何列。例如,你能这样:
mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
但不能这样:
mysql> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
使用INSERT…SELECT语句插入从其他表选择的行
当我们在上一节学习创建表时,知道可以使用select从其它表来直接创建表,甚至可以同时复制数据记录。如果你已经拥有了一个表,你同样可以从select语句的配合中获益。
从其它表中录入数据,例如:
mysql>insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
你也可以略去目的表的列列表,如果你每一列都有数据录入。
mysql>insert into tbl_name1 select col3,col4 from tbl_name2;
INSERT INTO ... SELECT语句满足下列条件:
查询不能包含一个ORDER BY子句。
INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。(问题是SELECT将可能发现在同一个运行期间内先前被插入的记录。当使用子选择子句时,情况能很容易混淆)
使用replace、replace…select语句插入
REPLACE功能与INSERT完全一样,除了如果在表中的一个老记录具有在一个唯一索引上的新记录有相同的值,在新记录被插入之前,老记录被删除。对于这种情况,insert语句的表现是产生一个错误。
更多精彩
赞助商链接