woshiwzb 2024-04-11 09:01 采纳率: 0%
浏览 12

用mysql创建多个表格,表格单独创建成功,同时创建则失败.

用mysql创建多个表格,表格单独创建成功,同时创建则失败.
虽然我用分号可以把前三个表创建成功,但是不能创建四五表。苦恼了一晚上了,救一下新人马楼吧!

CREATE TABLE Teacher(
TNo VARCHAR(5) PRIMARY KEY,
TN NVARCHAR(10),
Sex NCHAR(1),
Prof NVARCHAR(10),
Sal INT,
Comm INT,
Dept NVARCHAR(20)
)
CREATE TABLE Student(
SNo VARCHAR(5) PRIMARY KEY,
SN  NVARCHAR(10),
Sex NCHAR(1),
Age INT,
Dept NVARCHAR(20)
)

CREATE TABLE Course(
CNo VARCHAR(5)  PRIMARY KEY,
CN NVARCHAR(10) NOT NULL,
CT INT
)
CREATE TABLE SC(
SNo VARCHAR(5) NOT NULL CONSTRAINT Student_Fore FOREIGN KEY REFERENCES Student(SNo),
CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo),
Score INT CONSTRAINT SC_Chk CHECK(Score>=0 AND Score<=100),
PRIMARY KEY(SNo,CNo)
)
CREATE TABLE TC(
TNo VARCHAR(5) NOT NULL CONSTRAINT Teacher_Fore FOREIGN KEY REFERENCES Teacher (TNo),
CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo),
  PRIMARY KEY(TNo,CNo)
)

展开全部

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-11 09:01
    关注

    引自免费微信小程序:皆我百晓生

    在MySQL中,如果你想要一次性创建多个表,你需要将每个CREATE TABLE语句放在一个SQL批处理中,通过分隔符(通常是分号 ;)来分隔不同的语句。然而,你提供的SQL代码中,每个表都是单独的,因此它们会被视为独立的查询执行。这会导致你在尝试创建第四个表时收到错误,因为之前已经定义过的约束名称(如Course_Fore)会被重复使用。

    为了修复这个问题,你可以将所有的CREATE TABLE语句放入一个SQL字符串中,并使用分号分隔。这里是一个修改后的版本:

    CREATE TABLE Teacher (
        TNo VARCHAR(5) PRIMARY KEY,
        TN NVARCHAR(10),
        Sex NCHAR(1),
        Prof NVARCHAR(10),
        Sal INT,
        Comm INT,
        Dept NVARCHAR(20)
    );
    
    CREATE TABLE Student (
        SNo VARCHAR(5) PRIMARY KEY,
        SN NVARCHAR(10),
        Sex NCHAR(1),
        Age INT,
        Dept NVARCHAR(20)
    );
    
    CREATE TABLE Course (
        CNo VARCHAR(5) PRIMARY KEY,
        CN NVARCHAR(10) NOT NULL,
        CT INT
    );
    
    CREATE TABLE SC (
        SNo VARCHAR(5) NOT NULL,
        CNo VARCHAR(5) NOT NULL,
        Score INT CHECK(Score >= 0 AND Score <= 100),
        PRIMARY KEY(SNo, CNo),
        CONSTRAINT Student_Foreign FOREIGN KEY (SNo) REFERENCES Student(SNo),
        CONSTRAINT Course_Foreign FOREIGN KEY (CNo) REFERENCES Course(CNo)
    );
    
    CREATE TABLE TC (
        TNo VARCHAR(5) NOT NULL,
        CNo VARCHAR(5) NOT NULL,
        PRIMARY KEY(TNo, CNo),
        CONSTRAINT Teacher_Foreign FOREIGN KEY (TNo) REFERENCES Teacher(TNo),
        CONSTRAINT Course_Foreign FOREIGN KEY (CNo) REFERENCES Course(CNo)
    );
    

    在这个版本中,我已经为外键约束添加了唯一的名称(例如,将Course_Fore更改为Course_Foreign),这样在同一个SQL批处理中就可以正确地创建所有表了。确保在运行这个SQL时,你是在一个支持批处理的环境中,比如MySQL命令行工具、PHPMyAdmin或其他数据库管理工具。

    展开全部

    评论 编辑记录
  • 码农阿豪@新空间 Java领域优质创作者 2024-04-11 09:01
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 根据您提供的SQL语句,可以看出您一次性连续创建了5个表格。如果在执行创建表格的SQL语句时出现了问题,那么可能会导致前几个表格创建成功,但是后面几个表格无法创建。针对这种情况,可以考虑分别创建每个表格,或者将SQL语句拆分为几个部分分别执行。 解决方案:
    1. 分别创建每个表格 可以先创建Teacher表,然后再创建Student表,再创建Course表,最后创建SC表和TC表。这样可以确保每个表格都创建成功。 示例代码: CREATE TABLE Teacher( TNo VARCHAR(5) PRIMARY KEY, TN NVARCHAR(10), Sex NCHAR(1), Prof NVARCHAR(10), Sal INT, Comm INT, Dept NVARCHAR(20) ); CREATE TABLE Student( SNo VARCHAR(5) PRIMARY KEY, SN NVARCHAR(10), Sex NCHAR(1), Age INT, Dept NVARCHAR(20) ); CREATE TABLE Course( CNo VARCHAR(5) PRIMARY KEY, CN NVARCHAR(10) NOT NULL, CT INT ); CREATE TABLE SC( SNo VARCHAR(5) NOT NULL CONSTRAINT Student_Fore FOREIGN KEY REFERENCES Student(SNo), CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo), Score INT CONSTRAINT SC_Chk CHECK(Score>=0 AND Score<=100), PRIMARY KEY(SNo,CNo) ); CREATE TABLE TC( TNo VARCHAR(5) NOT NULL CONSTRAINT Teacher_Fore FOREIGN KEY REFERENCES Teacher(TNo), CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo), PRIMARY KEY(TNo,CNo) );
    2. 将SQL语句拆分 可以将SQL语句分为多个部分,分别执行。例如,可以先创建前三个表格,然后再创建SC表格和TC表格。 示例代码: -- 创建Teacher、Student、Course表格 CREATE TABLE Teacher( TNo VARCHAR(5) PRIMARY KEY, TN NVARCHAR(10), Sex NCHAR(1), Prof NVARCHAR(10), Sal INT, Comm INT, Dept NVARCHAR(20) ); CREATE TABLE Student( SNo VARCHAR(5) PRIMARY KEY, SN NVARCHAR(10), Sex NCHAR(1), Age INT, Dept NVARCHAR(20) ); CREATE TABLE Course( CNo VARCHAR(5) PRIMARY KEY, CN NVARCHAR(10) NOT NULL, CT INT ); -- 创建SC、TC表格 CREATE TABLE SC( SNo VARCHAR(5) NOT NULL CONSTRAINT Student_Fore FOREIGN KEY REFERENCES Student(SNo), CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo), Score INT CONSTRAINT SC_Chk CHECK(Score>=0 AND Score<=100), PRIMARY KEY(SNo,CNo) ); CREATE TABLE TC( TNo VARCHAR(5) NOT NULL CONSTRAINT Teacher_Fore FOREIGN KEY REFERENCES Teacher(TNo), CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo), PRIMARY KEY(TNo,CNo) ); 注意事项: 无论是分别创建每个表格还是将SQL语句拆分为多个部分,都需要确保每个表格都创建成功。如果有表格创建失败,需要检查SQL语句是否正确,或者检查数据库中是否已经存在同名的表格。
    评论
  • SoberChina 2024-04-11 09:06
    关注

    每个语句结束用分号隔开~

    CREATE TABLE Teacher(
    TNo VARCHAR(5) PRIMARY KEY,
    TN NVARCHAR(10),
    Sex NCHAR(1),
    Prof NVARCHAR(10),
    Sal INT,
    Comm INT,
    Dept NVARCHAR(20)
    );
    CREATE TABLE Student(
    SNo VARCHAR(5) PRIMARY KEY,
    SN  NVARCHAR(10),
    Sex NCHAR(1),
    Age INT,
    Dept NVARCHAR(20)
    );
     
    CREATE TABLE Course(
    CNo VARCHAR(5)  PRIMARY KEY,
    CN NVARCHAR(10) NOT NULL,
    CT INT
    );
    CREATE TABLE SC(
    SNo VARCHAR(5) NOT NULL CONSTRAINT Student_Fore FOREIGN KEY REFERENCES Student(SNo),
    CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo),
    Score INT CONSTRAINT SC_Chk CHECK(Score>=0 AND Score<=100),
    PRIMARY KEY(SNo,CNo)
    );
    CREATE TABLE TC(
    TNo VARCHAR(5) NOT NULL CONSTRAINT Teacher_Fore FOREIGN KEY REFERENCES Teacher (TNo),
    CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo),
      PRIMARY KEY(TNo,CNo)
    );
     
    

    展开全部

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-11 10:23
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
  • 檀越@新空间 2024-04-15 23:36
    关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    针对问题进行解决方案如下:

    问题描述:用mysql创建多个表格,表格单独创建成功,同时创建则失败。

    解决方案

    1. 在创建表时,应该使用分号(;)来区分多条SQL语句。
    2. 检查各个SQL语句是否正确,包括表结构、关键字的大小写等。
    3. 检查MySQL是否有权限在当前数据库中添加表。
    4. 对于创建失败的表格,可以通过查看MySQL的错误日志,查找失败的原因。

    修改后的代码如下:

    CREATE TABLE Teacher(
    TNo VARCHAR(5) PRIMARY KEY,
    TN NVARCHAR(10),
    Sex NCHAR(1),
    Prof NVARCHAR(10),
    Sal INT,
    Comm INT,
    Dept NVARCHAR(20)
    );
    
    CREATE TABLE Student(
    SNo VARCHAR(5) PRIMARY KEY,
    SN  NVARCHAR(10),
    Sex NCHAR(1),
    Age INT,
    Dept NVARCHAR(20)
    );
    
    CREATE TABLE Course(
    CNo VARCHAR(5)  PRIMARY KEY,
    CN NVARCHAR(10) NOT NULL,
    CT INT
    );
    
    CREATE TABLE SC(
    SNo VARCHAR(5) NOT NULL CONSTRAINT Student_Fore FOREIGN KEY REFERENCES Student(SNo),
    CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo),
    Score INT CONSTRAINT SC_Chk CHECK(Score>=0 AND Score<=100),
    PRIMARY KEY(SNo,CNo)
    );
    
    CREATE TABLE TC(
    TNo VARCHAR(5) NOT NULL CONSTRAINT Teacher_Fore FOREIGN KEY REFERENCES Teacher (TNo),
    CNo VARCHAR(5) NOT NULL CONSTRAINT Course_Fore FOREIGN KEY REFERENCES Course(CNo),
      PRIMARY KEY(TNo,CNo)
    );
    

    在每个创建表的语句之后加上分号,这样就可以正确创建多个表格了。

    展开全部

    评论
  • DTcode7 前端领域优质创作者 2024-06-15 19:27
    关注

    答案引用自chatgpt生成,望对题主有所帮助/启发;若有帮助,还望采纳!

    这个问题可能是由于在创建多个表格时,存在一些冲突或者错误导致的。以下是一些可能的原因和解决方案:

    1. 表名冲突:如果你尝试创建的表格已经存在于数据库中,那么创建操作将会失败。你需要确保每个表格的名称都是唯一的。

    2. 数据类型不匹配:在创建表格时,你需要为每个字段指定一个数据类型。如果你尝试使用不兼容的数据类型,那么创建操作将会失败。

    3. 主键或唯一键冲突:在创建表格时,你可以为某些字段设置为主键或唯一键。如果两个表格的主键或唯一键相同,那么创建操作将会失败。

    4. 外键约束冲突:在创建表格时,你可以为某些字段设置外键约束。如果两个表格的外键约束冲突,那么创建操作将会失败。

    5. 语法错误:如果你的SQL语句存在语法错误,那么创建操作将会失败。你需要检查你的SQL语句,确保它们是正确的。

    以下是一个创建表格的示例代码:

    CREATE TABLE table1 (
        id INT PRIMARY KEY,
        name VARCHAR(100) NOT NULL
    );
    
    CREATE TABLE table2 (
        id INT PRIMARY KEY,
        description TEXT
    );
    

    在这个示例中,我们创建了两个表格:table1和table2。每个表格都有一个名为id的主键字段,以及一个名为name或description的字段。注意,我们在创建表格时没有使用任何可能导致冲突的设置,例如相同的主键或外键。

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部