【问题标题】:"VARCHAR" is not valid at this position, expecting EOF, ';'“VARCHAR”在此位置无效,需要 EOF,';'
【发布时间】:2021-11-04 22:49:16
【问题描述】:
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,但是当我想更改它时,第一个更改是正确的,但第二个更改是错误的

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    你不能用 DROP 指定列类型,只能指定列名,所以:

    ALTER TABLE Subj_Enrolments
    DROP COLUMN comment;
    

    https://dev.mysql.com/doc/refman/8.0/en/alter-table.html

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多