无法尽管在

问题描述:

指定一个默认约束我在MySQL数据库中的表插入到数据库:无法尽管在

mysql> describe student; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | dob | date | YES | | NULL | | | reg_no | varchar(20) | NO | PRI | NULL | | | department | varchar(50) | YES | | NULL | | | branch | varchar(50) | YES | | NULL | | | semester | int(11) | YES | | 1 | | +------------+-------------+------+-----+---------+-------+ 6 rows in set (0.01 sec)

当我尝试插入此数据库没有指定的最后一个值(即学期),它会导致错误
mysql> insert into student values('John Smith','1990-01-01','123ABC','Chemistry','Organic Chemistry'); ERROR 1136 (21S01): Column count doesn't match value count at row 1

为什么这不起作用?是不是有一个默认约束的整个点?如果指定为默认值的值在插入查询中不存在,则会被赋值。

如果我写这样的查询,它的工作原理:
mysql> insert into student values('John Smith','1990-01-01','123ABC','Chemistry','Organic Chemistry',DEFAULT); Query OK, 1 row affected (0.01 sec)

这是怎么回事?我的语法错了吗?我希望能够插入记录而不必指定'DEFAULT'

如果不是将值添加到所有表列,则应指定添加数据的列。

例子:

INSERT INTO table_name (column1, column2, column3, ...) 
VALUES (value1, value2, value3, ...); 
你的情况

所以,

INSERT INTO student(name, dob, regno, department, branch) 
    VALUES ('John Smith','1990-01-01','123ABC','Chemistry','Organic Chemistry'); 
+0

补充:我想的MySQL如果不指定特定的列,将默认预期为_all_列的值。 –

+0

有道理。谢谢 –

你的语法错误,而插入默认值,所以不是该查询使用insert into student(name,dob,reg_no,department,branch)values('John Smith','1990-01-01','123ABCF','Chemistry','Organic Chemistry');