在我用来学习PHP和SQL的视频tutoria/book中,作者解释了使数据库表彼此相关的外键的概念.正如您将在下图中看到的那样,我们目前正在制作一个名为"评论"的表格.在这个SQL中,有一行photograph_id INT( 11 ) NOT NULL,称为"外键",作者称其将"注释"表与已存在的"照片"表相关联.
我的问题是,由于该表被称为"照片"(复数带有s),但sql外键是"photograph_id",SQL如何连接这两个?究竟什么是"photograph_id"允许MySQL将它与"照片"表联系起来.
+-----------------------------+
| Tables_in_C263430_quoralist |
+-----------------------------+
| photographs |
| users |
+-----------------------------+
2 rows in set (0.21 sec)
mysql> CREATE TABLE comments (
-> id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> photograph_id INT( 11 ) NOT NULL,
-> created DATETIME NOT NULL,
-> author VARCHAR( 255 ) NOT NULL,
-> body TEXT NOT NULL
-> );
Run Code Online (Sandbox Code Playgroud)
MySQL不会自动"连接"这两个表,你必须自己做:
CREATE TABLE comments (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
photograph_id INT( 11 ) NOT NULL,
created DATETIME NOT NULL,
author VARCHAR( 255 ) NOT NULL,
body TEXT NOT NULL,
FOREIGN KEY (`photograph_id`) REFERENCES `photographs` (`id`) ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
这将告诉MySQL你的表comments有一个外键.您没有为密钥指定名称,因此mysql将自己选择名称.它们的键位于photograph_id该表的列上.键指的是表photographs,它的列id.
也许作者意味着您使用该列来"模拟"外键,这意味着您使用该键加入到照片的主键,而无需真正添加外键约束.因此,您(数据库管理员)知道该字段用于关系,但数据库本身不会(因此不会检查字段的完整性:您可以向不存在的照片添加注释).
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |