DROP TABLE IF EXISTS student;
CREATE TABLE student(
bannerid VARCHAR(9) PRIMARY KEY NOT NULL ,
lastname VARCHAR(45) NOT NULL ,
firstname VARCHAR(45) NOT NULL ,
major VARCHAR(45) NOT NULL DEFAULT 'undeclared' ,
gpa DECIMAL(2) NOT NULL DEFAULT 0.00 ,
age INT NOT NULL DEFAULT 18 );
INSERT INTO student VALUES ('b00001111', 'smith', 'fred', 'computer science', 3.12, 20);
INSERT INTO student VALUES ('b00002222', 'jones', 'herb', 'computer science', 2.00, 19);
INSERT INTO student VALUES ('b00003333', 'chan', 'jackie', 'computer information systems', 3.50, 50);
INSERT INTO student VALUES ('b00004444', 'baker', 'al');
INSERT INTO student VALUES ('b00005555', 'booker', 'sue');
这导致以下错误,我不明白为什么。我希望最后两个INSERT使用默认值。
MySQL错误1136:列数与第1行的值计数不匹配
答案 0 :(得分:6)
在insert语句中,您需要为传递的值显式指定列名,如果要传递所有列值,则可以忽略列名。所以你的最后两个陈述应该是
INSERT INTO student (bannerid,lastname,firstname) VALUES ('b00004444', 'baker', 'al');
INSERT INTO student (bannerid,lastname,firstname) VALUES ('b00005555', 'booker', 'sue');