列的完整性约束——设置表字段的外键约束(FOREIGN KEY,FK)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 列的完整性约束——设置表字段的外键约束(FOREIGN KEY,FK)

前言


 外键是表的一个特殊字段,外键约束是为了保证多个表(通常为两个表)之间的参照完整性,即构建两个表的字段之间的参照关系。


       设置外键约束的两个表之间具有父子关系,即子表中某个字段的取值范围由父表决定。例如,表示一个班级和学生关系,即每个班级有多个学生。首先应该有两个表:班级表和学生表,然后学生表有一个表示班级编号的字段no,其依赖于班级表的主键,这样字段no就是学生表的外键,通过该字段班级表和学生表建立了关系。


提示:以下是本篇文章正文内容,下面案例可供参考

一、设置表字段的外键约束(FOREIGN KEY,FK)

1.简介

  • 一个班级表:


ID

名称

班主任

101

六年级一班

tiger老师

102

六年级二班

王老师


班级表主键 <ID>

每一行对应着一个班级,而一个班级对应着多个学生,所以班级表和学生表的关系就是“一对多”:


ID

姓名

班级ID

性别

年龄

1

小花

101

M

9

2

小红

102

F

8

3

小军

102

M

8

4

小白

101

F

                         9


班级表<ID> 为学生表<班级ID >的外键

       在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为空(NULL)。


2.语句格式


设置表中某字段的FK约束非常简单,可以在MySQL数据库管理系统中通过SQL语句FOREIGN KEY来实现,其语法形式如下:


CREATE TABLE tablename_1(


   propName1 propType ,


   propName2 propType ,


   ......                    


[CONSTRAINT fk_name] FOREIGN KEY(propName1) REFERENCES table2_name(table2_column)


);


       其中,tablename_1参数是要设置外键的表名,propName1参数是要设置外键的字段,table2_name是父表的名称,table2_column是父表中设置主键约束的字段名。


mysql> use school;   #选择数据库school


mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class


mysql> desc class ;  #查询表class 的定义, describe class 效果等同


mysql> create table student (id int PRIMARY KEY AUTO_INCREMENT, name varchar(64) NOT NULL, class_id int, sex enum('M','F'), FOREIGN KEY(class_id) REFERENCES class(id) );  #创建表student, class_id 为表class id 字段的外键


mysql> insert into student(name, class_id, sex) values('小红', 2, 'M');   #插入记录,主键自增长


mysql> insert into student(name, sex) values('小军', 'M');   #插入记录,允许外键为空



总结


设置外键的格式:

create table 表名( 字段名  类型名,...... foreign  key(要设置成外键的字段名)  references  主键表名(外键依附表的主键名);

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 索引
DB2查询主键、索引、表约束
DB2查询主键、索引、表约束
851 0
|
7月前
外键的设置
外键的设置。
73 6
|
7月前
|
SQL Oracle 关系型数据库
SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束
SQL NOT NULL 约束用于强制确保列不接受 NULL 值。这意味着该字段始终包含一个值,而不允许插入新记录或更新记录时不提供此字段的值。
151 0
|
SQL 关系型数据库 MySQL
列的完整性约束——主键约束
列的完整性约束——主键约束
|
SQL Oracle 关系型数据库
命名 FOREIGN KEY 约束
命名 FOREIGN KEY 约束
92 2
|
Linux
为表的所有字段插入数据
为表的所有字段插入数据
190 1
|
关系型数据库 MySQL 索引
MySQL约束——添加主键约束(联合主键)、删除主键约束
MySQL约束——添加主键约束(联合主键)、删除主键约束
2607 0
|
弹性计算 关系型数据库 测试技术
PostgreSQL 分区表如何支持多列唯一约束 - 枚举、hash哈希 分区, 多列唯一, insert into on conflict, update, upsert, merge insert
标签 PostgreSQL , 分区表 , native partition , 唯一 , 非分区键唯一 , 组合唯一 , insert into on conflict , upsert , merge insert 背景 PG 11开始支持HASH分区,10的分区如果要支持hash分区,可以通过枚举绕道实现。 《PostgreSQL 9.x, 10, 11 hash分区表 用法举例
3150 0
|
关系型数据库
|
关系型数据库

相关实验场景

更多