网站首页 > 博客文章 正文
为保证数据库中存储数据的规范化,一般需要在定义字段时进行字段规范与约束的定义。保证在进行数据录入时,数据库能够通过这个规则、约束、规范检查所录入的数据,防止错误及不符合要求数据的录入。本文主要介绍数据表字段约束类型及其基本语法,为下一步创建数据表提供基础与依据。本文配套视频教程点击链接:视频教程
数据表基本结构
MySQL是主流关系型数据库管理系统之一,我们之所以指出关系型数据主要目的在于关系型数据管理系统存储的是结构化数据,即采用二维表格实现数据的存储。如我们要存储学生基本信息,主要包括学生学号、姓名、出生日期等相关信息,采用二维表格存储形式描述如下:
数据表基本结构描述如上图所示,使用二维表格实现数据存储。在上图中每一列称为一个属性或者字段。其中第一行的每一列为字段(属性)名称。第一行下面的每一行称为记录,即一条记录。记录是存储结构化数据的基本单元。在实际进行字段设置及值存储过程中,需要结合实际情况确定每一个字段存储数据的格式,规范与要求。这些规范格式等即为字段的约束。如学生的联系电话不允许出现重复,就需要定义与之对应的字段约束。
MySQL数据表字段约束
MySQL数据库管理系统数据表字段约束主要包括主键约束、外键约束、默认值约束、唯一约束、空值约束、自动增长约束等。主要约束概念及语法说明如下:
1、主键约束 Primary Key
主键的概念:记录的唯一标识,能够通过该标识确定唯一一条记录。如上表中唯一能够确定学生记录的只能是学号,因此学号是主键。主键是不允许为空,不允许出现重复。可以在定义数据表字段时给字段添加主键约束。语法结构为 :
//字段名称 数据类型 主键约束
id varchar(14) primary key
如上表所示,定义学生学号字段名称为id ,数据类型为可变长度字符串,长度为14 ,设置其为主键。
在定义主键时需要注意多字段组合形式主键的定义,在很多情况下我们的主键需要由多个字段所组成,如学生成绩信息表,主要字段包括学号、课程编号、成绩。针对该表主键为学号与课程编号组合。
primary key(id,cid)//id指学号,cid指课程编号
2、外键约束 Foreign Key
外键约束主要针对多个表之间的关系进行描述,外键的定义描述如下:
对于字段F在表A中不是主键,但在另外一个表B中表示主键,这个时候字段F对于表A可称为外键,在定义过程中需指明F在哪个表中是主键。另外需要注意,两个表中并不需要都是用F作为字段名,只要两者存储数据含义与类型一致即可。为说明外键约束,我们使用学生基本信息表与班级信息表进行说明,表结构存储数据描述如下图:
如上表所示,学生信息表与班级信息表中均存在一个班级编号字段,在学生信息表中,该字段不表示任何键,但在班级信息表中编辑编码为主键,因此相对于学生信息表,班级编号为外键。实现语法描述如下:
constraint stu_class_fk foreign key (class_id) references classinfor(class_id)
//由于存在外键关系需要首先定义班级信息表classinfor,再定义学生信息表
// 在定义学生信息表stuinfor中定义外键约束
//stu_class_fk表示外键名称
//references表示外键依赖关系
3、默认值约束 default
默认值约束主要用于实现为字段提供统一的默认值,如学生信息表中,所有的班级编号字段都取值1,为简化操作,我们可以直接为班级编号定义默认值约束,取值为1,在后期录入数据时,可直接去掉对该字段的数据录入。在定义字段时可直接指明默认值,基本语法:
字段名称 数据类型 默认值
class_id varchar(4) default '1'
//设置学生信息表中学号字段默认值为1
4、唯一约束unique
唯一约束主要用于约束字段取值的唯一性,有些情况下需要在录入数据时保存数据的唯一性,如在上表学生信息表中,需要学生的联系电话唯一,即该字段不允许输入重复的值。示例代码如下:
字段名称 数据类型 unique
stu_tel varchar(14) unique
//设置学生电话字段名称为stu_tel
//类型为长度14字符串
//唯一约束
5、空值约束 NULL
字段允许取空值则可使用空值约束,默认情况下,字段是允许为空的。如我们创建一个学生成绩表,在录入成绩之前需要将学号,课程编号写入数据表,但是允许成绩为空时,对成绩字段设置允许为空。代码说明如下:
字段名称 数据类型 null | not null
stu_score float(4) null
//设置学生成绩字段名称为stu_score
//类型为浮点型
//设置允许为空
6、自动增长约束 auto_increment
自动增长可以理解为一种约束,也可以理解为一种数据类型。是指某一个字段值依次增长,且不重复,(序号)在这种情况下可以将其设置为自动增长类型。如我们可以将班级信息表中的班级编号设置为自动增长字段:
class_id int auto_increment primary key;
//班级编号 class_id
//数据类型 int整数
//自动增长,默认初始值1,增量1
//主键 primary key
本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可在评论区回复。更多程序设计相关教程及实例分享,期待大家关注与阅读!
猜你喜欢
- 2024-09-10 第三章 SQL数据字段、字段类型简介
- 2024-09-10 MySQL中查看数据表结构和字段信息的方法!查看字段数据类型
- 2024-09-10 解决mybatis-plus修改数据库字段数据为NULL时失效的问题
- 2024-09-10 如何较方便给上百张数据库表添加表字段
- 2024-09-10 建议收藏|ArcGIS中操作字段相关代码汇总
- 2024-09-10 如何把数据库表中某个字段的所有2.0,3.0带.0的数据批量修改为2,3
- 2024-09-10 简单地运用MySQL的增删改查(mysql增删改查语句)
- 2024-09-10 Excel工作表中的7个数据库函数,易懂易理解,方便且实用
- 2024-09-10 MySQL数据库知识汇总(数据库mysql知识点)
- 2024-09-10 在此强调,一定要注意数据库字段NULL的问题
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)