当前位置: 首页 > 面试题库 >

如何在MySQL中创建关系

晁砚
2023-03-14
问题内容

在课堂上,我们都是“学习”数据库,每个人都在使用Access。厌倦了这一点,我试图做该类其余部分的工作,但是要使用MySQL的原始SQL命令而不是使用Access。

我已经设法创建数据库和表,但是现在如何在两个表之间建立关系?

如果我有两个这样的表:

CREATE TABLE accounts(
    account_id INT NOT NULL AUTO_INCREMENT,
    customer_id INT( 4 ) NOT NULL ,
    account_type ENUM( 'savings', 'credit' ) NOT NULL,
    balance FLOAT( 9 ) NOT NULL,
    PRIMARY KEY ( account_id )
)

CREATE TABLE customers(
    customer_id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    address VARCHAR(20) NOT NULL,
    city VARCHAR(20) NOT NULL,
    state VARCHAR(20) NOT NULL,
    PRIMARY KEY ( customer_id )
)

如何在两个表之间创建“关系”?我希望为每个帐户“分配”一个customer_id(以指示谁拥有它)。


问题答案:

如果表是innodb,则可以这样创建它:

CREATE TABLE accounts(
    account_id INT NOT NULL AUTO_INCREMENT,
    customer_id INT( 4 ) NOT NULL ,
    account_type ENUM( 'savings', 'credit' ) NOT NULL,
    balance FLOAT( 9 ) NOT NULL,
    PRIMARY KEY ( account_id ), 
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 
) ENGINE=INNODB;

您必须指定表为innodb,因为myisam引擎不支持外键。看看这里获取更多信息。



 类似资料:
  • 问题内容: 假设我有两个表:Store和Product。我希望我的商店有产品清单。我怎样才能做到这一点? 我开始这样的事情,但是我不知道该如何完成,你们能帮我吗? 问题答案: 多对一(产品只能有一家商店) 多对多(产品可以在许多商店中使用)

  • 问题内容: 我正在尝试在MySQL中创建序列(从整体上来说,我对SQL还是很新的)。我正在使用以下代码,但这会导致错误: ORDID指向我正在使用的表中的字段。如何正确创建序列? 编辑: 据称,MySQL不使用序列。我现在正在使用以下代码,但这也会引起错误。我该如何解决? 编辑: 我想我找到了解决方法。对于phpMyAdmin(我正在使用),您可以使用以下代码。 我不知道为什么它会喜欢这种方式,但

  • 问题内容: 我正在将MS Access应用程序(已将表链接到MSSQL Server)迁移到MySQL。 作为克服某些MSAccess表命名问题的方法,我正在寻找一种解决方案以添加一个MySQL表别名,该别名将指向MySQL数据库中的现有表。理想情况下,我想在mysql中创建别名“ dbo_customers”,该别名也指向mysql中的customers表。 需要明确的是,我 不 希望别名这样的

  • 问题内容: 我有一个如下表: 现在我想更改此表以具有新字段,并且该字段必须具有默认值 如下所示: 怎么做? 谢谢你的帮助 问题答案: 根据MySQL 文档(添加了重点),您不能使用默认值的表达式: 10.1.4。数据类型默认值 数据类型规范中的DEFAULT value子句指示列的默认值。除一个例外, 默认值必须为常量; 它不能是函数或表达式 。例如,这意味着您不能将日期列的默认值设置为诸如NOW

  • 问题内容: 我想创建一个上下文增量,不确定我使用的术语是否正确。这是我的桌子 在这之后我做了 在MyISAM注意页面上给出的示例中,他们没有提供示例,该示例使用enum,这里我没有使用enum,但是他们没有提到它仅适用于enum。但是我得到的输出是 但我想这样 有人可以告诉我我在做什么错吗? 问题答案: 您必须交换索引的顺序: 我从手册中引用: 对于MyISAM表,可以 在多列索引的 第二 列上指

  • 问题内容: 我目前正在为一家餐馆开发门户应用程序。使用的后端数据库是Mysql,而我正在使用Spring JDBC支持来编写数据访问逻辑。 我的某些DAO充满了多个查询,并且正获得多达数千行的代码。我认为我可以通过将一些逻辑移到SQL- PSM过程中来减少大小和复杂性(因为Java中的数据绑定和粘合代码是令人讨厌的事情)。 但是,我对Db没有DDL权限,因此无法创建该过程。 我想知道是否有一种方法