问题描述
|
我是否必须知道列的名称才能插入数据?因为我需要使用列号插入数据(第一列是1 ...)
解决方法
而不是使用这个:
insert into my_table (column1,column2)
values (value1,value2)
只需使用:
insert into my_table values (value1,value2)
即,不指定列列表。
当然,这仅在您按表中定义的顺序传递列的数据时才有效。
,如果您有一个表(例如):
CREATE TABLE test (
id INT(10),field1 VARCHAR(16),field2 TINYINT(1)
);
您可以执行查询
INSERT INTO test VALUES (1,\'field1 value\',0);
插入值必须与声明的列的顺序相同。正如Galz所提到的,您必须设置所有字段,即使是可为空或自动递增的字段也是如此。实际上,对于后者,您必须传递一个null
值。
例如,如果将id
作为设置为\“auto_increment
\”的主键,则此查询
INSERT INTO test VALUES (null,\'foo\',1);
SELECT * FROM test;
会回来
+----+--------------+--------+
| id | field1 | field2 |
+----+--------------+--------+
| 1 | field1 value | 0 |
| 2 | foo | 1 |
+----+--------------+--------+
关于另一个主题,如果您事先不知道字段的顺序,则可以执行以下查询:
show columns from <table name>;
在这种情况下将返回
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| field1 | varchar(16) | YES | | NULL | |
| field2 | tinyint(1) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
因此,告诉您field5ѭ是第一个字段,field1
是第二个字段,field2
是第三个字段。