12月阅读周·MySQL数据库入门:数据库入门之表的约束篇
背景
去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。
没有计划的阅读,收效甚微。
新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出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畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)