Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql外键_Mysql_Database_Database Design - Fatal编程技术网

Mysql外键

Mysql外键,mysql,database,database-design,Mysql,Database,Database Design,我想通过IdProduct在表客户和表产品之间建立链接 例如: Create table customer( idcustomer INT not null, name Varchar(20), idproduct INT, ); create table Product( idproduct INT not null, nameProduct varchar(40) ); 我怎样才能像外键系统一样将两者连接在一起,因为当我选择一个客户时,我可以得到他的所有产品?这是一个

我想通过IdProduct在表客户和表产品之间建立链接

例如:

Create table customer(
idcustomer  INT not null,
name        Varchar(20),
idproduct   INT,
);

create table Product(
idproduct INT not null,
nameProduct varchar(40)
);

我怎样才能像外键系统一样将两者连接在一起,因为当我选择一个客户时,我可以得到他的所有产品?这是一个关于数据库结构的问题

您想引入第三个表来解决客户和产品之间的多对多关系。它应该由
idcustomer
idproduct
组成

然后,要获得给定客户的所有产品:

SELECT c.name, p.nameProduct
    FROM Customer c
        INNER JOIN CustomerProductXref cpx
            ON c.idcustomer = cpx.idcustomer
        INNER JOIN product p
            ON cpx.idproduct = p.idproduct
    WHERE c.idcustomer = 12345

您希望引入第三个表来解决客户和产品之间的多对多关系。它应该由
idcustomer
idproduct
组成

然后,要获得给定客户的所有产品:

SELECT c.name, p.nameProduct
    FROM Customer c
        INNER JOIN CustomerProductXref cpx
            ON c.idcustomer = cpx.idcustomer
        INNER JOIN product p
            ON cpx.idproduct = p.idproduct
    WHERE c.idcustomer = 12345

下面是如何创建外键约束(忽略Joe正确建议的基数问题):

按如下方式获取您的数据:

SELECT * FROM Product AS P
INNER JOIN Customer AS C ON C.idproduct = P.idproduct
WHERE C.idcustomer = 1

下面是如何创建外键约束(忽略Joe正确建议的基数问题):

按如下方式获取您的数据:

SELECT * FROM Product AS P
INNER JOIN Customer AS C ON C.idproduct = P.idproduct
WHERE C.idcustomer = 1

在mysql中,外键是一种特殊类型的约束。它最好与表一起创建,但也可以在之后添加。在这种情况下,可以将约束定义为:

更改表格客户 添加外键(idproduct) 参考产品(idproduct)

(注意,您必须使用InnoDB引擎来利用mysql中的FK。更多

但是,创建联接不需要FK,这是在SELECT中链接表的方式-

select c.idcustomer, c.name, p.nameproduct
from customer c
join Product p on p.idproduct=c.idproduct;

在mysql中,外键是一种特殊类型的约束。它最好与表一起创建,但也可以在之后添加。在这种情况下,您可以将约束定义为:

更改表格客户 添加外键(idproduct) 参考产品(idproduct)

(注意,您必须使用InnoDB引擎来利用mysql中的FK。更多

但是,创建联接不需要FK,这是在SELECT中链接表的方式-

select c.idcustomer, c.name, p.nameproduct
from customer c
join Product p on p.idproduct=c.idproduct;

我知道,这只是一个纯粹的例子。我只想加入表格,当我选择一个客户时,我可以拿他的产品。我知道,这只是一个纯粹的例子。我只想加入表格,当我选择一个客户时,我可以拿他的产品。当我做一个选择:从产品中选择nameProduct,其中idcustomer=1和Product。idproduct=customer.idproduct它将工作??当我执行一个select时:从产品中选择名称Product,其中idcustomer=1和Product.idproduct=customer.idproduct它将工作??