"VARCHAR" 在此位置无效,需要 EOF,';'
"VARCHAR" is not valid at this position, expecting EOF, ';'
CREATE TABLE Students
(
stud_id INT(10) UNSIGNED not null,
stud_name VARCHAR(30) not null,
stud_phone CHAR(11) not null,
stud_date_of_birth DATE not null,
stud_city CHAR(30) not null,
stud_address CHAR(100) not null,
stud_postcode SMALLINT UNSIGNED not null,
PRIMARY KEY (stud_id)
);
CREATE TABLE Subjects
(
subj_code CHAR(6) not null,
subj_title VARCHAR(30),
PRIMARY KEY (subject_code)
);
CREATE TABLE Subj_Enrolment
(
stud_id INT(10) UNSIGNED not null,
subj_code CHAR(6) not null,
semester SMALLINT UNSIGNED not null,
year YEAR not null,
comment VARCHAR(100) not null,
PRIMARY KEY (stud_id, subj_code, semester, year),
FOREIGN KEY (stud_id) REFERENCES Students(stud_id),
FOREIGN KEY (subj_id) REFERENCES Subjects(subj_code)
);
CREATE TABLE Grades
(
stud_id INT(10) UNSIGNED not null,
subj_code CHAR(10) not null,
semester SMALLINT UNSIGNED not null,
year YEAR not null,
grade CHAR(2) not null,
PRIMARY KEY (stud_id, subj_code, semester, year),
FOREIGN KEY (stud_id) REFERENCES Students(stud_id),
FOREIGN KEY (subj_code) REFERENCES Subjects(subj_code)
);
ALTER TABLE Students
ADD COLUMN gender CHAR(1) CHECK(gender='m' OR gender='f');
ALTER TABLE Subj_Enrolments
DROP COLUMN comment VARCHAR(100);
所以在第 52 行或最后一行“DROP COLUMN comment VARCHAR(100);”出现的错误写在标题上,但我不明白为什么会这样,我造成了什么错误?我在创建表时确实使用了 VARCHAR,但是当我想更改它时,第一次更改是正确的,但第二次更改是错误的
您不得使用 DROP 指定列类型,只能指定列名,因此:
ALTER TABLE Subj_Enrolments
DROP COLUMN comment;
CREATE TABLE Students
(
stud_id INT(10) UNSIGNED not null,
stud_name VARCHAR(30) not null,
stud_phone CHAR(11) not null,
stud_date_of_birth DATE not null,
stud_city CHAR(30) not null,
stud_address CHAR(100) not null,
stud_postcode SMALLINT UNSIGNED not null,
PRIMARY KEY (stud_id)
);
CREATE TABLE Subjects
(
subj_code CHAR(6) not null,
subj_title VARCHAR(30),
PRIMARY KEY (subject_code)
);
CREATE TABLE Subj_Enrolment
(
stud_id INT(10) UNSIGNED not null,
subj_code CHAR(6) not null,
semester SMALLINT UNSIGNED not null,
year YEAR not null,
comment VARCHAR(100) not null,
PRIMARY KEY (stud_id, subj_code, semester, year),
FOREIGN KEY (stud_id) REFERENCES Students(stud_id),
FOREIGN KEY (subj_id) REFERENCES Subjects(subj_code)
);
CREATE TABLE Grades
(
stud_id INT(10) UNSIGNED not null,
subj_code CHAR(10) not null,
semester SMALLINT UNSIGNED not null,
year YEAR not null,
grade CHAR(2) not null,
PRIMARY KEY (stud_id, subj_code, semester, year),
FOREIGN KEY (stud_id) REFERENCES Students(stud_id),
FOREIGN KEY (subj_code) REFERENCES Subjects(subj_code)
);
ALTER TABLE Students
ADD COLUMN gender CHAR(1) CHECK(gender='m' OR gender='f');
ALTER TABLE Subj_Enrolments
DROP COLUMN comment VARCHAR(100);
所以在第 52 行或最后一行“DROP COLUMN comment VARCHAR(100);”出现的错误写在标题上,但我不明白为什么会这样,我造成了什么错误?我在创建表时确实使用了 VARCHAR,但是当我想更改它时,第一次更改是正确的,但第二次更改是错误的
您不得使用 DROP 指定列类型,只能指定列名,因此:
ALTER TABLE Subj_Enrolments
DROP COLUMN comment;