Mysql 如果存在表格,如何删除表格;作品

Mysql 如果存在表格,如何删除表格;作品,mysql,sql,Mysql,Sql,如果这些表存在,我会尝试删除它们,只是为了让表能够正确创建和工作。但是,当我尝试在创建它们之后运行它时,会出现一个错误:“无法删除表绘制上外键约束引用的表‘Painter’”。我认为这是表中外键的问题,我已经有一段时间没有编写SQL了,如果很难阅读的话,很抱歉 DROP TABLE IF EXISTS PAINTER; DROP TABLE IF EXISTS MUSEUM; DROP TABLE IF EXISTS PAINTING; DROP TABLE IF EXISTS CUSTOMER

如果这些表存在,我会尝试删除它们,只是为了让表能够正确创建和工作。但是,当我尝试在创建它们之后运行它时,会出现一个错误:“无法删除表绘制上外键约束引用的表‘Painter’”。我认为这是表中外键的问题,我已经有一段时间没有编写SQL了,如果很难阅读的话,很抱歉

DROP TABLE IF EXISTS PAINTER;
DROP TABLE IF EXISTS MUSEUM;
DROP TABLE IF EXISTS PAINTING;
DROP TABLE IF EXISTS CUSTOMER;
DROP TABLE IF EXISTS GALA_NIGHT;
DROP TABLE IF EXISTS INVITE;
DROP TABLE IF EXISTS MEMBER_SPECIALTY;
DROP TABLE IF EXISTS DOCENT;

CREATE TABLE PAINTER (
AName varchar(255) PRIMARY KEY,
ABDate varchar(255),
ADdate varchar(255),
ACountry varchar(255)
);

CREATE TABLE MUSEUM (
MuseumName varchar(255) PRIMARY KEY,
MuCity varchar(255),
MuCountry varchar(255)
);

CREATE TABLE PAINTING (
Painting_Name varchar(255) PRIMARY KEY,
Year_Painted varchar(255),
Est_Value varchar(255),
PAINTER_Name varchar(255),
FOREIGN KEY (PAINTER_Name) REFERENCES PAINTER(AName),
Museum_Name varchar(255),
FOREIGN KEY (Museum_Name) REFERENCES MUSEUM(MuseumName)
);

CREATE TABLE CUSTOMER (
CustId int(255) PRIMARY KEY,
CustName varchar(255),
CustBDate varchar(255),
CustType varchar(255)
);

CREATE TABLE GALA_NIGHT (
Painter_Name varchar(255),
FOREIGN KEY (Painter_Name) REFERENCES PAINTER(AName),
GalaDate varchar(255) PRIMARY KEY
);

CREATE TABLE INVITE (
Painter_Name varchar(255) PRIMARY KEY,
FOREIGN KEY (Painter_Name) REFERENCES GALA_NIGHT(Painter_Name),
GalaDate varchar(255),
FOREIGN KEY (GalaDate) REFERENCES GALA_NIGHT(GalaDate),
Cust_Id int(255),
FOREIGN KEY (Cust_Id) REFERENCES CUSTOMER(CustId)
);

CREATE TABLE MEMBER_SPECIALTY (
memberType varchar(255),
FOREIGN KEY (memberType) REFERENCES CUSTOMER(CustType)
);

CREATE TABLE DOCENT (
DDate varchar(255) PRIMARY KEY,
Dtime varchar(255),
Room_Number int(255),
CustID varchar(255),
FOREIGN KEY (CustID) REFERENCES CUSTOMER(CustId)
);

要删除绘制表,需要删除依赖于该表的FK约束。您可以使用ALTER语句来实现这一点,但由于您无论如何都要删除绘制表,因此可以将该命令置于drop PAINTER命令之前


您的表之间有几个依赖项。您可能需要重新排序DROP命令,使其与创建表和约束的顺序相反。

在mysql 8中,它可以工作,但代码中有一些错误

DROP TABLE IF EXISTS DOCENT;
DROP TABLE IF EXISTS MEMBER_SPECIALTY;
DROP TABLE IF EXISTS INVITE;
DROP TABLE IF EXISTS GALA_NIGHT;
DROP TABLE IF EXISTS CUSTOMER;
DROP TABLE IF EXISTS PAINTING;
DROP TABLE IF EXISTS MUSEUM;
DROP TABLE IF EXISTS PAINTER;

CREATE TABLE PAINTER (
AName varchar(255) PRIMARY KEY,
ABDate varchar(255),
ADdate varchar(255),
ACountry varchar(255)
);

CREATE TABLE MUSEUM (
MuseumName varchar(255) PRIMARY KEY,
MuCity varchar(255),
MuCountry varchar(255)
);

CREATE TABLE PAINTING (
Painting_Name varchar(255) PRIMARY KEY,
Year_Painted varchar(255),
Est_Value varchar(255),
PAINTER_Name varchar(255),
FOREIGN KEY (PAINTER_Name) REFERENCES PAINTER(AName),
Museum_Name varchar(255),
FOREIGN KEY (Museum_Name) REFERENCES MUSEUM(MuseumName)
);

CREATE TABLE CUSTOMER (
CustId int(255) PRIMARY KEY,
CustName varchar(255),
CustBDate varchar(255),
CustType varchar(255)
, KEY(CustType)
);

CREATE TABLE GALA_NIGHT (
Painter_Name varchar(255),
FOREIGN KEY (Painter_Name) REFERENCES PAINTER(AName),
GalaDate varchar(255) PRIMARY KEY
);

CREATE TABLE INVITE (
Painter_Name varchar(255) PRIMARY KEY,
FOREIGN KEY (Painter_Name) REFERENCES GALA_NIGHT(Painter_Name),
GalaDate varchar(255),
FOREIGN KEY (GalaDate) REFERENCES GALA_NIGHT(GalaDate),
Cust_Id int(255),
FOREIGN KEY (Cust_Id) REFERENCES CUSTOMER(CustId)
);

CREATE TABLE MEMBER_SPECIALTY (
memberType varchar(255),
FOREIGN KEY (memberType) REFERENCES CUSTOMER(CustType)
);

CREATE TABLE DOCENT (
DDate varchar(255) PRIMARY KEY,
Dtime varchar(255),
Room_Number int(255),
CustID int(255),
FOREIGN KEY (CustID) REFERENCES CUSTOMER(CustId)
);