Sql 创建新的多对多表

Sql 创建新的多对多表,sql,mysql,many-to-many,Sql,Mysql,Many To Many,我有一个数据库Class_Books,它将ISBNs(从Books表)链接到Class_ID(从Class表)。我正在更改Books表,因此主键是Book_ID(自动增量INT),而不是ISBN。有没有一种方法可以更新类Books以便它现在使用Book\u ID?MySQL支持多表更新语法,这使得这类工作更容易 ALTER TABLE Class_Books ADD COLUMNS Book_Id INT; -- nullable UPDATE Books b JOIN Class_Books

我有一个数据库Class_Books,它将ISBNs(从Books表)链接到Class_ID(从Class表)。我正在更改Books表,因此主键是Book_ID(自动增量INT),而不是ISBN。有没有一种方法可以更新类Books以便它现在使用Book\u ID?

MySQL支持多表更新语法,这使得这类工作更容易

ALTER TABLE Class_Books ADD COLUMNS Book_Id INT; -- nullable

UPDATE Books b JOIN Class_Books cb ON b.ISBN = cb.ISBN
SET cb.Book_Id = b.Book_Id;
然后,您可以使用ALTER TABLE更改约束,使cb.Book_Id
不为NULL
,并删除cb.ISBN


PS:我建议将Class_Books称为多对多表或交叉表。“关系”一词在关系理论中的含义有所不同,它与表之间的关系无关。

MySQL支持多表更新语法,这使得这类工作更加容易

ALTER TABLE Class_Books ADD COLUMNS Book_Id INT; -- nullable

UPDATE Books b JOIN Class_Books cb ON b.ISBN = cb.ISBN
SET cb.Book_Id = b.Book_Id;
然后,您可以使用ALTER TABLE更改约束,使cb.Book_Id
不为NULL
,并删除cb.ISBN


PS:我建议将Class_Books称为多对多表或交叉表。“关系”一词在关系理论中的含义有所不同,它与表之间的关系无关。

这与关联表是同一回事吗?或者我在想别的什么?@mlschechter:听起来像是meSure的同义词,只是不要称它为关系表,因为这就像说你在使用一个整数。在某种程度上是正确的,但听起来很尴尬和多余。这和关联表是一样的吗?或者我在想别的什么?@mlschechter:听起来像是meSure的同义词,只是不要称它为关系表,因为这就像说你在使用一个整数。从某种程度上说,这是真的,但听起来既尴尬又多余。