所以我尝试插入值而不提及代码中的列名。
经过一些搜索后,我发现可以通过将值传递给引用here的null来实现。但是当我这样做时,它会抛出一些错误。
我使用过的代码
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
);
insert into Persons values (NULL,1);
那么如何在不提及列名的情况下添加值呢?
提前完成
答案 0 :(得分:4)
如果这仅用于实验目的,您可以:
INSERT INTO Persons VALUES (NULL, 'Lastname', 'Firstname', 'Address test', 'city of angels');
但我强烈建议你不要养成这样做的习惯。始终添加列,正如David的answer雄辩地说明的那样。
INSERT INTO Persons (LastName, FirstName, Address, City) VALUES ('Last', 'First', 'Add', 'City');
答案 1 :(得分:2)
确保在插入中输入所有列值。
INSERT INTO Persons VALUES (NULL, 'Last name', 'First name', 'Address', 'City');
抱歉错过了主键的NULL值
答案 2 :(得分:2)
如果您没有指定哪些列应该获取这些值,您希望数据库如何知道?如果您至少为所有列提供值,那么查询引擎可能会根据列的顺序进行推断,具体取决于数据库。 (根据this question及其答案,似乎在MySQL中支持。)
但即便如此,这也不是很好的做法。它在模式和代码之间创建了各种耦合。通过显式指定列,您可以稍后在同一个表中添加/更改不相关的列,而不会影响该查询。但是,如果您依赖于模式中列的排序,那么对模式的任何更改都需要更改每个查询,甚至是那些在逻辑上不受影响的查询。
它更简单,更稳定,并且更明确地表达了明确指定列的意图。
答案 3 :(得分:0)
您必须指定列,或在每个列中插入值。
如果你有6列,你就不能传递2个值而不命名2列等等。
答案 4 :(得分:0)
我认为你可以,但你需要提到它们出现在表记录中的值。结构体。如果你错过了,你会得到错误的录音或查询失败。