开发者社区> 问答> 正文

我使用mysql创建一个表,结果显示出错,新手求解答?报错

我想用以下代码在mysql中创建一个表结果报错,请问以下是哪里出的问题呀?

mysql代码:

create table Enrollment(
    ssn char(9),
    courseId char(5),
    dateRegistered date,
    grade char(1),
    primary key (ssn,courseId),
    foreign key (ssn) references
    Student (ssn),
    foreign key (courseId) references (courseId)
);

错误信息:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(courseId)
)' at line 10

我的运行环境是ubuntu 16.04.1下的mysql

展开
收起
爱吃鱼的程序员 2020-06-08 20:10:02 549 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    有几点我需要跟你说下:

    1,一个表的主键是唯一且非空的,目测下你是想ssn作为主键?那为什么不标识notnull

    2,既然ssn想作为主键,为什么又要作为外键,你觉得这样设计合理吗?就算你觉得合理那这样在实现逻辑也很容易出错的知道吗

    3, Student是什么?另一张表?还是字段?

    4,表名应该小写字母

    建议你去看下mysql规范

    ps:给你一个简单完整的sql

    droptableifexistsenrollment;


    /*==============================================================*/
    /*Table:enrollment                      */
    /*==============================================================*/
    createtableenrollment
    (
      ssn         char(9)notnull,
      courseId      char(5),
      dateRegistered   date,
      grade        char(1),
      primarykey(ssn)
    );


    回复 @FVoid:建议你换本书吧。。。这串代码是我从书上直接搬下来的,我还没搞懂这些是什么意思。。。Student是另一张表,它那里写表明大写开头,变量名小写开头,然后我就写了大写了。。。

    #E53333;color:#FFFFFF;"> Student(ssn),

    #E53333;color:#FFFFFF;">这行是啥意思,解释哈

    回复 @抓瓦工人:这段代码是直接在书上面copy过来的。。。回复 @FVoid:我问你的是,这种语法哪里来的?Student是另一张表。。。
    2020-06-08 20:10:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像