我是否必须知道列的名称才能插入数据?因为我需要使用列号插入数据(第一列是1 ...)
答案 0 :(得分:4)
而不是使用它:
insert into my_table (column1, column2)
values (value1, value2)
只需使用:
insert into my_table values (value1, value2)
即。不要指定列列表。
当然,只有按照表中定义的列传递数据时,这才会有效。
答案 1 :(得分:1)
如果你有一个像(例如)的表:
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 | |
+--------+-------------+------+-----+---------+-------+
因此告诉您id
是第一个字段,field1
是第二个字段,field2
是第三个字段。