当前位置: 首页 > 知识库问答 >
问题:

SQL如何设置外键

吉泰宁
2023-03-14

我需要创建3个如下所示的表

学生(SID:CHAR(12),SNAME:VARCHAR(50),BDATE:日期,地址:VARCHAR(50),SCITY:VARCHAR(20),年份:CHAR(20),GPA:FLOAT)

公司(CID:CHAR(8),CNAME:VARCHAR(20))

应用(SID:CHAR(12),CID:CHAR(8))

(粗体属性为主键)

但是我不确定如何设置外键,因为例如,apply表的cid在apply表和company表中都是主键(apply表和student表之间的sid情况相同)。谢谢你的帮助。

以下是创建表的代码:

myQuery = "CREATE TABLE student "
                + "(sid CHAR(12), sname VARCHAR(50), "
                + "bdate DATE, address VARCHAR(50), "
                + "scity VARCHAR(20), year CHAR(20), "
                + "gpa FLOAT) ENGINE=InnoDB;";
 myQuery = "CREATE TABLE company "
                + "(cid CHAR(8), cname VARCHAR(20), quota CHAR(8))ENGINE=InnoDB;";
myQuery = "CREATE TABLE apply "
                + "(sid CHAR(12), cid CHAR(8)) ENGINE=InnoDB;";

共有1个答案

公孙智
2023-03-14

看起来apply表是studentcompany之间的多对多联接。

在这种情况下,您需要像以前一样设置studentcompany(不过发布show CREATE TABLE student的输出可能会得到更有帮助的答案)。因此,对于apply表,您需要两个外键:一个在SID上,它引用student.sid;另一个在CID上,它引用company.cid。可能是这样的:

ALTER TABLE apply ADD CONSTRAINT sid FOREIGN KEY (sid) REFERENCES student(sid);
ALTER TABLE apply ADD CONSTRAINT cid FOREIGN KEY (cid) REFERENCES copmany(cid);

编辑:根据您的表创建,您也没有设置主键。向希望作为主键的任何列添加主键标识符。

 类似资料:
  • 问题内容: 我对将其放在何处感到困惑: 我没有扩展课程,但使用了 :D 问题答案: 最常见的放置方法是在您的静态void main(String [] args)方法内部。像这样: 有关更多信息,请访问以下站点:http : //docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

  • 在我的活动中,我有一个listview和一个按钮。每一个都有各自的目的。 我的listview显示另一个活动中的项目详细信息。 问题是如何在相同的活动中为按钮实现onClickListener?

  • 如果我继续尝试持久化这个实体,我将得到中持久化。 做这件事的正确方法是什么。可能是我理解的不对。

  • null 我希望使用标准的方法和spring的能力来自动配置bean,我不希望手动加载一些属性文件和手动配置所有bean。因此,为了解决这个问题,我创建了另一个配置应用程序--Customization.yml,并通过include将其链接到prod config中(参见上面的示例)。在这里我遇到了一个问题:我无法通过命令行参数(-dspring.config.location或任何it变体)选择

  • 我有这个型号 而我有这个方法 但是hibernate没有设置实际地址id和注册地址id(它是OneTONE) Hibernate:插入客户(名字、姓氏、中间名、性别)值(?、、?、?)2021-03-18 14:01:58.340警告12836---[nio-8080-exec-1]o.h.发动机。jdbc。spi。SqlExceptionHelper:SQL错误:0,SQLState:23502

  • 问题内容: 我有类似下表的内容: 我需要一个查询,它会给我这样的结果: 请注意,FieldName中的值不限于用户名,密码和电子邮件地址。它们可以是用户定义的任何东西。 有没有办法在SQL中做到这一点? 问题答案: MySQL不支持ANSI PIVOT / UNPIVOT语法,因此您可以使用: 如您所见,需要按值定义CASE语句。要使其动态化,您需要使用MySQL的Prepared Stateme