如果我有这样的表:
CREATE TABLE Person (id INT AUTO_INCREMENT PRIMARY KEY, age INT);
是否有比简单重写列属性更简单的方法?
INSERT INTO Person (age) VALUES (18);
我知道DEFAULT值有关键字DEFAULT,但是AUTO_INCREMENT有类似的吗?我使用很长的表,每次进行INSERT时我都不想重写所有的列名。
感谢您的帮助。
答案 0 :(得分:4)
https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html说:
没有为AUTO_INCREMENT列指定值,因此MySQL会自动分配序列号。除非启用了NO_AUTO_VALUE_ON_ZERO SQL模式,否则还可以为列显式指定0以生成序列号。如果列声明为NOT NULL,则还可以为列分配NULL以生成序列号。
所以以下任何一项都有效:
INSERT INTO Person VALUES (0, 18);
INSERT INTO Person VALUES (NULL, 18);
INSERT INTO Person VALUES (DEFAULT, 18);
但是,在编写任何INSERT语句时,明确列出所有列是一种很好的做法。如果有人更改了表中列的顺序,则除非明确列出列名,否则您的VALUES可能不会插入到右列中。此外,如果有人添加或删除列。