为什么默认约束在mysql中不起作用?

为什么默认约束在mysql中不起作用?,mysql,sql,sql-insert,Mysql,Sql,Sql Insert,错误代码:1136。列计数与第1行的值计数不匹配 roll_no INT PRIMARY KEY NOT NULL unique, name CHAR(15) NOT NULL, class integer(3), section CHAR(1), sibling boolean default false); insert into school values(1,'ramesh',12,'D'); 您没有在insert中指定列名,因此MySQL需要所有列的数据。限定您的目标列名,并且插入

错误代码:1136。列计数与第1行的值计数不匹配

roll_no INT PRIMARY KEY NOT NULL unique,
name CHAR(15) NOT NULL,
class integer(3),
section CHAR(1),
sibling boolean default false);

insert into school
values(1,'ramesh',12,'D');

您没有在insert中指定列名,因此MySQL需要所有列的数据。限定您的目标列名,并且插入应该有效:

插入学校(卷号、姓名、班级、部门)
价值观
(1,'ramesh',12,'D');

SQL插入的最佳实践是始终列出插入的目标列。原因之一是,如果不这样做,如果a)列数更改,或b)表中列的顺序更改,insert语句可能会中断。

如果不为所有列提供值,则需要明确说明值所指的列:

插入学校(卷号、姓名、班级、部门)
数值(1,'ramesh',12,'D');

通常在这些情况下,您会将主键指定为自动递增列。您仍然需要显式地设置其他列名。
PRIMARY KEY NOT NULL unique
PRIMARY KEY或unique,如果我必须输入行:(1,'ramesh',12,'d'),(2,'Sam',11,'C',True),则两者都不会改善任何情况