12月阅读周·MySQL数据库入门:数据库入门之表的约束篇

举报
叶一一 发表于 2024/12/25 09:27:43 2024/12/25
【摘要】 背景去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。没有计划的阅读,收效甚微。新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出1~2个非连续周,完整阅读一本书籍。这个“玩法”虽然常见且板正,但是有效,已经坚持阅读十一个月。已读完书籍:《架构简洁之道》、《深入浅出的Node.js》、《你不知道的JavaScript(上卷)》、《你不知道的JavaScr...

背景

去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。

没有计划的阅读,收效甚微。

新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出1~2个非连续周,完整阅读一本书籍。

这个“玩法”虽然常见且板正,但是有效,已经坚持阅读十一个月。

已读完书籍《架构简洁之道》、《深入浅出的Node.js》、《你不知道的JavaScript(上卷)》、《你不知道的JavaScript(中卷)》、《你不知道的JavaScript(下卷)》、《数据结构与算法JavaScript描述》、《WebKit技术内幕》、《前端架构:从入门到微前端》、《秒懂算法:用常识解读数据结构与算法》、《JavaScript权威指南》、《JavaScript异步编程设计快速响应的网络应用》、《编写可测试的JavaScript代码

当前阅读周书籍MySQL数据库入门

表的约束

主键约束

在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现。主键约束是通过PRIMARY KEY定义的,它可以唯一标识表中的记录,这就好比身份证可以用来标识人的身份一样。在MySQL中,主键约束分为两种,具体如下。

单字段主键

单字段主键指的是由一个字段构成的主键,其基本的语法格式如下所示:

字段名 数据类型 PRIMARY KEY  

【例1-1】 创建一个数据表example01,并设置id作为主键,SQL语句如下:

CREATE TABLE example01(id INT PRIMARY KEY,
                          name VARCHAR(20),
                          grade FLOAT);

上述SQL语句执行后,example01表中创建了id、name和grade三个字段,其中,id字段是主键。

多字段主键

多字段主键指的是多个字段组合而成的主键,其基本的语法格式如下所示:

PRIMARY KEY (字段名1,字段名2,…,字段名n)

在上述格式中,“字段名1,字段名2,…,字段名n”指的是构成主键的多个字段的名称。

【例1-2】 创建一个数据表example02,在表中将stu_id和course_id两个字段共同作为主键,SQL语句如下:

CREATE TABLE example02(stu_id INT,
                       course_id INT,
                       grade FLOAT,
                       PRIMARY KEY(stu_id,course_id)
                       );

上述SQL语句执行后,example02表中包含stu_id、course_id和grade三个字段,其中,stu_id和course_id两个字段组合可以唯一确定一条记录。 注意:每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY的字段不能有重复值且不能为NULL值。

非空约束

非空约束指的是字段的值不能为NULL,在MySQL中,非空约束是通过NOT NULL定义的,其基本的语法格式如下所示:

字段名 数据类型 NOT NULL; 

【例1-3】 创建一个数据表example04,将表中的name字段设置为非空约束,SQL语句如下:

CREATE TABLE example04(id INT PRIMARY KEY,
                       name VARCHAR(20) NOT NULL,
                       grade FLOAT);

上述SQL语句执行后,example04表中包含id、name和grade三个字段。其中,id字段为主键,name字段为非空字段。需要注意的是,在同一个数据表中可以定义多个非空字段。

唯一约束

唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过UNIQUE定义的,其基本的语法格式如下所示:

字段名 数据类型 UNIQUE; 

【例1-4】 创建一个数据表example05,将表中的stu_id设置为唯一约束,SQL语句如下:

CREATE TABLE example05(id INT PRIMARY KEY,
                       stu_id INT UNIQUE,
                       name VARCHAR(20) NOT NULL
                       );

上述SQL语句执行后,example05表中包含id、stu_id和name三个字段。其中,id字段为主键,stu_id字段为唯一值,该字段的值不能重复,name字段的值不能为空值。

默认约束

默认约束用于给数据表中的字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字定义的,其基本的语法格式如下所示:

字段名 数据类型 DEFAULT 默认值; 

【例1-5】 创建一个数据表example06,将表中的grade字段的默认值设置为0,SQL语句如下:

CREATE TABLE example06(id INT PRIMARY KEY AUTO_INCREMENT,
                       stu_id INT UNIQUE,
                       grade FLOAT DEFAULT 0
                      );

上述SQL语句执行后,example06表中包含id、stu_id和grade三个字段。其中,id字段为主键,stu_id字段的值唯一,grade字段的默认值为0。

设置表的字段值自动增加

在数据表中,若想为表中插入的新记录自动生成唯一的ID,可以使用AUTO_INCREMENT约束来实现。AUTO_INCREMENT约束的字段可以是任何整数类型。默认情况下,该字段的值是从1开始自增的。使用AUTO_INCREMENT设置表字段值自动增加的基本语法格式如下所示:

字段名 数据类型 AUTO_INCREMENT;

【例1-6】 创建一个数据表example05,将表中的id字段设置为自动增加,SQL语句如下:

CR

EATE TABLE example05(id INT PRIMARY KEY AUTO_INCREMENT,
                      stu_id INT UNIQUE,
                      grade FLOAT
                    );

上述SQL语句执行后,example05表中包含三个字段。其中,id字段为主键,且每插入一条新记录,id的值会自动增加,stu_id字段的值唯一,grade的值为FLOAT类型。

总结

为了防止数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束。

常见的表的约束约束条件都是针对表中字段进行限制,从而保证数据表中数据的正确性和唯一性。由于FOREIGN KEY约束条件涉及多表操作,因此,本篇只针对除FOREIGN KEY外的其他约束进行详细的讲解。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。