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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 列的完整性约束——设置表字段的外键约束(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  主键表名(外键依附表的主键名);

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 索引
DB2查询主键、索引、表约束
DB2查询主键、索引、表约束
810 0
|
6月前
唯一性约束:unique
唯一性约束:unique。
71 3
|
6月前
外键的设置
外键的设置。
65 6
|
6月前
|
SQL Oracle 关系型数据库
SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束
SQL NOT NULL 约束用于强制确保列不接受 NULL 值。这意味着该字段始终包含一个值,而不允许插入新记录或更新记录时不提供此字段的值。
135 0
|
SQL 关系型数据库 MySQL
列的完整性约束——主键约束
列的完整性约束——主键约束
|
SQL 关系型数据库 MySQL
列的完整性约束——设置表字段的非空约束(NOT NULL, NK)
列的完整性约束——设置表字段的非空约束(NOT NULL, NK)
|
Linux
为表的所有字段插入数据
为表的所有字段插入数据
180 1
|
关系型数据库 MySQL 索引
MySQL约束——添加主键约束(联合主键)、删除主键约束
MySQL约束——添加主键约束(联合主键)、删除主键约束
2262 0
|
SQL Oracle 关系型数据库
数据库必知词汇:主键约束(PRIMARY KEY)
PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值,且主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
1013 0
|
SQL Oracle 关系型数据库
数据库必知词汇:外键约束(FOREIGN KEY)
外键是一个表的字段,不是本表的主键,但对应另一个表的主键。外键主要用来在两个表的数据之间建立连接,可以是一列或者多列。一个表可以有一个或者多个外键。
1822 0