【MySQL】外键约束与非空约束

349 阅读3分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

0A0567E5.gif

目录

今天阿文介绍的内容:

  • 什么是外键
  • 外键的语法格式
  • 主表从表
  • 什么是非空约束
  • 非空约束的语法格式

1.使用外键约束

外键用来在两个表的数据之间建立连接,可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。外键:首先它是表中的一个字段,虽可以不是本表的主键,但要对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保持数据的一致性、完整性。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

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

1.1创建外键的语法


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

1.2代码演示

Firstly:创建一个主表(父表)person,SQL语句如下:

CREATE TABLE person
{

    id INT(11) PRIMARY KEY,

    name VARCHAR(22) NOT NULL,

    location VARCHAR(50)

};

Secondly:创建一个从表(子表)student,让它的键deptId作为外键关联到person的主键id,SQL语句如下:

CREATE TABLE student
{

    id INT(11) PRIMARY KEY,
    
    name VARCHAR(25),

    deptId INT(11),

    score FLOAT,

    CONSTRAINT fk_student_person FOREIGN KEY(deptId) REFERENCES person(id)

};

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

提示:

关联指的是在关系型数据库中相关表之间的联系。它是通过相容或相同的属性或属性组来表示的。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样,则创建子表时,就会出现错误.


2.使用非空约束

非空约束(Not Null Constraint)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

2.1非空约束的语法如下:

字段名 数据类型 not null

2.2代码演示

例如定义数据表teacher,员工名字不能为空,SQL语句如下:

CREATE TABLE teacher
{
    id INT(11) PRIMARY KEY,
    
    name VARCHAR(25) NOT NULL,

    deptId INT(11),

    salary FLOAT

};

以上SQL语句执行成功之后后,在表中name设置为了非空,id作为主键,当插入数据时,若name数据字段为空则系统将会报错。


总结

  • 外键用来在两个表的数据之间建立连接
  • 主表与从表的定义,关联的主键所在表为主表
  • 非空约束是约束该字段不能为空,否则将会报错。

OK,阿文今天的介绍就到这里结束了。

0A043021.gif