我在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'
答案 0 :(得分:4)
如果您没有为所有表格列添加值,则应指定添加数据的列。
示例:
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');
答案 1 :(得分:0)
插入默认值时语法错误,因此请使用insert into student(name,dob,reg_no,department,branch)values('John Smith','1990-01-01','123ABCF','Chemistry','Organic Chemistry');