千家信息网

怎么写mysql外键约束

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,今天就跟大家聊聊有关怎么写mysql外键约束,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。mysql外键约束的写法:【[CONSTRAINT
千家信息网最后更新 2025年01月23日怎么写mysql外键约束

今天就跟大家聊聊有关怎么写mysql外键约束,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

mysql外键约束的写法:【[CONSTRAINT <外键名>] FOREIGN KEY 字段名 REFERENCES <主表名> 主键列1】。外键约束是表的一个特殊字段,经常与主键约束一起使用。

在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键。

具体的语法格式如下:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]REFERENCES <主表名> 主键列1 [,主键列2,…]

MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。

对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

定义外键时,需要遵守下列规则:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。必须为主表定义主键。

  • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

  • 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

  • 外键中列的数目必须和主表的主键中列的数目相同。

  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

举例:

为了展现表与表之间的外键关系,本例在 test_db 数据库中创建一个部门表 tb_dept1,表结构如下表所示。

创建 tb_dept1 的 SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_dept1    -> (    -> id INT(11) PRIMARY KEY,    -> name VARCHAR(22) NOT NULL,    -> location VARCHAR(50)    -> );Query OK, 0 rows affected (0.37 sec)

创建数据表 tb_emp6,并在表 tb_emp6 上创建外键约束,让它的键 deptId 作为外键关联到表 tb_dept1 的主键 id,SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_emp6    -> (    -> id INT(11) PRIMARY KEY,    -> name VARCHAR(25),    -> deptId INT(11),    -> salary FLOAT,    -> CONSTRAINT fk_emp_dept1    -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)    -> );Query OK, 0 rows affected (0.37 sec)mysql> DESC tb_emp6;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| id     | int(11)     | NO   | PRI | NULL    |       || name   | varchar(25) | YES  |     | NULL    |       || deptId | int(11)     | YES  | MUL | NULL    |       || salary | float       | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+4 rows in set (1.33 sec)

以上语句执行成功之后,在表 tb_emp6 上添加了名称为 fk_emp_dept1 的外键约束,外键名称为 deptId,其依赖于表 tb_dept1 的主键 id。

注意:从表的外键关联的必须是主表的主键,且主键和外键的数据类型必须一致。例如,两者都是 INT 类型,或者都是 CHAR 类型。如果不满足这样的要求,在创建从表时,就会出现"ERROR 1005(HY000): Can't create table"错误。

看完上述内容,你们对怎么写mysql外键约束有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

字段 数据 类型 内容 语句 关联 特殊 相同 名称 就是 所在 数据库 数目 结构 结果 组合 运行 一致 成功 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海先进网络技术解决方案 山西信考软件服务器怎么下载 贵州网络安全技术提升网络安全 镜像挂载在服务器上 xx医院网络安全责任书 襄阳做软件开发的竞争大吗 计算机网络运维和网络安全哪个好 数据库如何关闭自动提交 金山区推广网络技术推荐咨询 软件开发 查询类 数据库技术与设计期末考试 智能视频分析服务器价格 哪里能看魔兽世界服务器人数 1年级手抄报网络安全 珠海网络安全大会 怎么查看网络安全日志 卓凡数据库是啥 管家婆连不上服务器怎么搞 sybase连接数据库 服务器已被设置为全部代理 searcher连接不上服务器 淄博创盈软件开发58 linux虚拟机下切换数据库 xx医院网络安全责任书 公安网络安全对抗心得 计算机网络运维和网络安全哪个好 文献检索网络安全下载量最高 山西正规软件开发设施参考价格 软件开发结算计费 数据库insert插入数据
0