我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解关系型数据库的约束机制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解关系型数据库的约束机制

这篇文章将为大家详细讲解有关如何理解关系型数据库的约束机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一. 关系型数据库

市场上主流的关系型数据库:Oracle、DB2、Sybase 、PostgreSQL、Microsoft SQL Server、Microsoft  Access、MySQL。

关系型数据库有三大完整性:

实体完整性:实体属性中的标识属性不能为空、不能重复,该约束通过制定的主键实现,其约束有系统强制实施

参照完整性:实体中的外键可以为空,但不能是错的。

用户定义完整性:某一具体的实际数据库的约束条件,由应用环境所决定,反映某一具体应用所涉及的数据必须满足的要求。(例如定义某一行不能为空)

约束主要完成对数据的检验和限制,从而保证数据库的完整性。

二.约束

1.主键约束(PRIMARY KEY)

主键约束列不允许重复,也不允许出现空值。

单列主键

创建有两种方式:

一种是直接对字段加primary key关键字:

CREATE TABLE student(           id INT PRIMARY KEY,                    name VARCHAR(20),                     )

另外一种是通过额外加约束的方式:

CREATE TABLE student(           id INT NOT NULL,                    name VARCHAR(20),           CONSTRAINT PK_STUD_ID PRIMARY KEY(id)          //PK_STUD_ID为约束的名字                     )

联合主键

有时候一个列的字段可能有重复,可以联合多个列设为主键。

CREATE TABLE student(                  name VARCHAR(20),           class VARCHAR(20),          CONSTRAINT PK_STUD_ID PRIMARY KEY(name,class)                  )

其它操作

//删除主键约束   ALTER TABLE 表名 DROP PRIMARY KEY;     //添加主键   ALTER TABLE 表名 ADD PRIMARY KEY(列名);     //修改列为主键 ALTER TABLE 表名 MODIFY 列名 数据类型 PRIMARY KEY;

2.外键约束(FOREIGN KEY)

外键约束是保证一个或两个表之间的参照完整性,保持数据一致性。

实现一对一或一对多关系。

创建外键约束

CREATE TABLE classes(           id INT AUTO_INCREMENT PRIMARY KEY,           name VARCHAR(20)            );   //***种:添加关键字 CREATE TABLE student(           id INT AUTO_INCREMENT,                    name VARCHAR(20),                     CONSTRAINT PK_ID PRIMARY KEY(id),                                   class_id INT REFERENCES classes(id)            ) //第二种:额外声明 CREATE TABLE student(           id INT AUTO_INCREMENT,                    name VARCHAR(20),                     CONSTRAINT PK_ID PRIMARY KEY(id),                                   class_id INT,           CONSTRAINT fk_class_id FOREIGN KEY(classe_id) REFERENCES classes(id)           )

外键约束的要求

  • 父表和子表必须使用相同的存储引擎,而且禁止使用临时表

  • 数据表的存储引擎只能为InnoDB,default-storage-engine-INNODB

  • 外键列和参照列必须具有相似的数据类型,数字的长度或是有符号位必须相同,而字符 的长度可以不同

  • 外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引。    
    设定参照列:FOREIGN KEY(id) PEFERENCES provinces(id)

外键约束的参照操作

  • CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行

  • SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL,如果使用该选项,必须保证子表列没有指定NOT NULL

  • RESTRICT:拒绝对父表的删除或更新操作

  • NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同

其它操作

//删除外键约束  ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; (创建外键的方法没有指定约束名称,系统会默认给外键约束分配外键约束名称,命名为student_ibfk_n)  //增加外键约束   ALTER TABLE 表名 ADD FOREIGN KEY 列名 REFERENCES 父表(对应列名);

3.***约束(UNIQUE)

指定表中某一列或多个列不能有相同的两行或者两行以上的数据存在,

  • ***约束可以保证记录的***性

  • ***约束的字段可以为空值(允许的空值有多个,但是最终存储的只有一个)

  • 每张数据表可以存在多个***约束

UNIQUE KEY的用途:主要是用来防止数据插入的时候重复。

CREATE TABLE student (   name CHAR(20) UNIQUE KEY  );

为表中列添加UNIQUE KEY

ALTER TABLE student MODIFY CHAR(20) UNIQUE KEY;

4.非空约束(NOT NULL)

输入值必须是非空的,需要注意的是允许控制尽量不要太多,太多会更消耗数据库性能。

CREATE TABLE student (   name CHAR(20) NOT NULL  );

5.默认约束(DEFAULT)

默认约束有以下的要求:

  • 定义的常量必须与该列的数据类型、精度等匹配

  • 每个列只能定义一个DEFAULT约束

  • DEFAULT约束会在使用INSERT语句

这里需要说明的是,DEFAULT后面不能像SQL Server那样使用函数,后面只能是一个常量。官方文档原文:

With one exception, the default value must be a constant; it cannot be a  function or an expression.

如果我们想要获取当前的时间,可以使用CURRENT_TIMESTAMP

CREATE TABLE student (    joinTime DATETIME DEFAULT CURRENT_TIMESTAMP  );

6.CHECK约束

CHECK约束,验证数据,比如性别中只能为女或男,而不能为其它。MySQL不支持check约束,但可以使用check约束,就是没有任何效果。

关于如何理解关系型数据库的约束机制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解关系型数据库的约束机制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何深入理解关系型数据库的三大范式

该文章,GitHub已收录,欢迎老板们前来Star!GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual数据库范式一、什么是数据库范式 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数
如何深入理解关系型数据库的三大范式
2018-01-24

😎P03 DB 数据库的约束条件、表关系、修改表语法以及复制表😎

内容概要约束条件表与表之间建立关系(约束)修改表的完整语法复制表约束条件default默认值"""# 补充:在插入数据的时候可以指定字段create table t1 ( id int, name varchar(16));insert into
😎P03 DB 数据库的约束条件、表关系、修改表语法以及复制表😎
2019-03-17

Sphinx搜索与关系型数据库的集成应用(Sphinx如何与关系型数据库结合使用?)

Sphinx,一个开源全文搜索引擎,可与关系型数据库集成以增强搜索功能。这种集成提供快速、相关性高的搜索,可扩展性、灵活的查询语法等优势。通过创建索引、轮询更新和集成到应用程序中,开发人员可以利用Sphinx的强大功能,从而改善用户体验、提高效率并获得更深入的数据洞察。Sphinx在电子商务、媒体和医疗保健等行业中得到广泛应用。
Sphinx搜索与关系型数据库的集成应用(Sphinx如何与关系型数据库结合使用?)
2024-04-02

Xunsearch搜索与关系型数据库的集成应用(如何将Xunsearch搜索与关系型数据库集成使用?)

通过将开源全文搜索引擎Xunsearch与关系型数据库集成,企业可以实现强大的搜索功能。集成过程包括创建索引、定义字段、导入数据和执行查询。集成的好处包括提高搜索性能、支持复杂搜索、可扩展性和数据冗余。具体应用场景包括电子商务、内容管理、CRM和数据分析。实现指南建议选择合适字段、优化结构、定期更新、优化查询和监控性能。
Xunsearch搜索与关系型数据库的集成应用(如何将Xunsearch搜索与关系型数据库集成使用?)
2024-04-02

Elasticsearch分布式搜索与关系型数据库的集成应用(如何将Elasticsearch分布式搜索与关系型数据库集成使用?)

Elasticsearch分布式搜索与关系型数据库集成可增强搜索能力、丰富数据、优化性能和提高灵活性。集成方法包括数据复制、同步、Join查询和混合查询。在电子商务、日志分析、客户服务和社交媒体分析等领域有广泛应用。最佳实践包括适当的数据分割、格式化、高可用性和监控。
Elasticsearch分布式搜索与关系型数据库的集成应用(如何将Elasticsearch分布式搜索与关系型数据库集成使用?)
2024-04-02

编程热搜

目录