数据库mysql表怎么设置外键_如何设置数据库中的外键

在MySQL中建立数据库关系图需要设置外键,外键必须是另一表的主键。设置步骤包括:打开表设计器创建关系,选择主键表和列,设定更新和删除规则。代码创建时,可使用'Foreign key (studentNo) references T_Student(studentNo)'或通过约束添加外键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展开全部

创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只e69da5e887aa62616964757a686964616f31333365653739有主键没有外键时不行的。

建外键的前提是此外键必须是另外一个表的主键。建外键的步骤:

第一步、打开要建外键表的设计器,右击选择“关系”。94a4135d0e256308b5a28c37063abaf6.png

第二步、然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮。

0b029e20e5254d2097fa25d87d9f4ae4.png

第三步、弹出另外一个窗体让我们选择主键表和列,记住要选择相同的,选好之后点击确定。

551125814f6b05bd57c7d21ef92587ea.png

第四步、展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”、“级联”、“设置为NULL”、“设置默认值”。

ac0088361a26d781982e2ec05a49a1ed.png

默认的不执行任何操作。如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该操作。

“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。

“设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。

“设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。

当然也可以用代码创建,在创建数据库表T——Card时只要加上一句代码就可以了。“Foreign key (studentNo) references T_Student(studentNo)"。如果已经创建了改表,那如何用代码实现了,这也很简单也就一句代码“ add constraint CMPKey(外键名) foreign key(studentNo) references T_Student(studentNo)”。

### 如何查看 MySQL 数据库中的设置MySQL 中,可以通过查询 `information_schema` 数据库下的 `KEY_COLUMN_USAGE` 来获取关于的信息。以下是具体方法: #### 查询设置的方法 可以执行以下 SQL 语句来检索指定数据库中所有信息: ```sql SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME IS NOT NULL AND TABLE_SCHEMA = 'your_database_name'; ``` 上述查询会返回当前数据库中所有的约束及其相关信息[^1]。 - **TABLE_NAME**: 所在的名。 - **COLUMN_NAME**: 被定义为的列名。 - **CONSTRAINT_NAME**: 约束的名字。 - **REFERENCED_TABLE_NAME**: 主(被引用的)名称。 - **REFERENCED_COLUMN_NAME**: 主中对应的列名。 如果需要针对某个特定的进行查询,则可以在 WHERE 子句中进一步限定条件,例如: ```sql WHERE TABLE_NAME = 'specific_table_name' AND REFERENCED_TABLE_NAME IS NOT NULL; ``` #### 示例代码 假设有一个名为 `test_db` 的数据库以及一张名为 `orders` 的,想要了解该上的所有配置情况,可运行如下命令: ```sql SELECT TABLE_NAME AS ForeignKeyTable, COLUMN_NAME AS ForeignKeyColumn, CONSTRAINT_NAME AS ConstraintName, REFERENCED_TABLE_NAME AS ReferenceTable, REFERENCED_COLUMN_NAME AS ReferenceColumn FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA='test_db' AND TABLE_NAME='orders' AND REFERENCED_TABLE_NAME IS NOT NULL; ``` 此操作能够帮助管理员快速定位并理解不同格之间的关联关系。 --- #### 注意事项 当遇到错误提示类似于 “Can't open and lock privilege tables” 或者其他权限相关问题时,请确认已具备足够的访问权利去读取 system views 和 metadata information[^2]。另,在调整全局变量或者修改密码过程中也需谨慎处理以免影响正常服务功能[^3]。 最后值得注意的是随着版本更新可能会引入新的特性支持更复杂的字符集匹配逻辑比如基于最新版 Unicode 标准的数据升级项目(WL#9479)[^4], 这对于国际化应用尤为重要.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值