mysql - 如何在 MySQL 中创建关系

标签 mysql sql foreign-keys relational-database

在类里面,我们都在“学习”数据库,每个人都在使用 Access。对此感到厌烦,我正在尝试做其他类(class)正在做的事情,但使用 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 引擎不支持外键。看here了解更多信息。

关于mysql - 如何在 MySQL 中创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260441/

相关文章:

java - HSQLDB 数据库中神秘的完整性约束违规

MySQL 数据库规范化、关系和外键的最佳方法

mysql - Active Record 精度小数值被截断

Python MySQLdb 改变字符串编码

mysql - 外部约束因未知原因失败

mysql - 如何在不创建两个类的情况下在 MySQL 中实现双重关系(Null,Not Null)?

android - 如何在 Room Android 的外键中使用 set_default

PHP - LocalHost数据库简单连接SQL

sql - 如何在sql server 2008中获取一周的第一天和一周的最后一天?

mysql - 按最多匹配次数排序的 Sql 排名