iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何理解关系型数据库的约束机制
  • 735
分享到

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

2024-04-02 19:04:59 735人浏览 独家记忆
摘要

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

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

一. 关系型数据库

市场上主流的关系型数据库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约束,就是没有任何效果。

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

您可能感兴趣的文档:

--结束END--

本文标题: 如何理解关系型数据库的约束机制

本文链接: https://www.lsjlt.com/news/67423.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 如何理解关系型数据库的约束机制
    这篇文章将为大家详细讲解有关如何理解关系型数据库的约束机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一. 关系型数据库市场上主流的关系型数据库:Orac...
    99+
    2024-04-02
  • MySQL数据库的约束限制详解
    目录一、介绍二、操作添加删除外键联级操作一、介绍 数据库的约束是对表中数据进行的一种限制,为了保证数据的正确性、有效性、完整性。 无论是在添加数据还是在删除数据的时候,都能提供帮助。...
    99+
    2022-11-13
    MySQL数据库 MySQL约束
  • 如何理解数据库设计的完整性约束表现
    这篇文章将为大家详细讲解有关如何理解数据库设计的完整性约束表现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。数据完整性是指数据的正确性、完备性和一致性,是衡...
    99+
    2024-04-02
  • MySQL数据库表中的约束详解
    目录mysql表中的约束(constraint)约束分类非空约束唯一性约束复合约束主键约束自增列-AUTO_INCREMENT外键约束FOREIGN KEY约束CHECK约束DEFAULT约束MySQL表中的约束(con...
    99+
    2023-03-02
    MySQL表中的约束 MySQL数据库约束 MySQL约束的使用
  • 理解阿里云数据库中的外键约束
    外键约束是数据库中一种重要约束,用于保证数据的完整性。在阿里云数据库中,外键约束是一种非常重要的功能,可以帮助我们确保数据的一致性和准确性。本文将详细解释什么是外键约束,如何在阿里云数据库中创建和使用外键约束,以及外键约束的重要性。 一、外...
    99+
    2023-12-17
    阿里 数据库中
  • MySQL数据库如何给表设置约束详解
    目录一、PK(主键约束)1、什么是主键?2、怎么设置主键?二、FK(外键约束)1、什么是外键2、怎么设置外键三、unique(唯一约束)1、什么是唯一约束?2、如何设置唯一约束四、n...
    99+
    2024-04-02
  • {MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数据库约束1.1约束类型:1.2 NULL约束1.3unique 唯一约束1.4 DEF...
    99+
    2024-01-21
    数据库 mysql
  • sql数据库唯一约束如何设置
    在SQL数据库中,可以通过以下方式设置唯一约束:1. 在创建表时设置唯一约束:   ```sql   CREAT...
    99+
    2023-09-05
    sql数据库
  • 一文理解MySQL数据库的约束与表的设计
    目录1.数据库约束1.1 约束类型1.2 null 约束1.3 unique 唯一的约束1.4 default 默认值约束1.5 primary key 主键约束1.6 primary key auto_incremen...
    99+
    2024-04-02
  • MySQL数据库中的外键约束详解
    外键是关系数据库中一种重要的数据完整性约束,它用于建立表与表之间的关联关系。外键约束指定了一个表的列或一组列必须存在于另一个表的主键...
    99+
    2023-09-22
    MySQL
  • MySQL 数据库的约束及数据表的设计原理
    目录1. 数据库的约束1.1 介绍1.2 约束类型1.3 not null1.4 unique1.5 default1.6 primary key1.7 foreign key1.8...
    99+
    2024-04-02
  • Django项目如何给数据库添加约束
    只要你的Web开发知识不是语文老师教的,那么你应该已经知道一个合格的开发者应该永远抱着怀疑的眼光看用户提交的数据。你不仅需要在前端通过表单或其它方式进行验证,还需要在后台视图拿到用户...
    99+
    2024-04-02
  • SQL Server数据库如何创建表及约束条件
    这篇文章主要介绍“SQL Server数据库如何创建表及约束条件”,在日常操作中,相信很多人在SQL Server数据库如何创建表及约束条件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”S...
    99+
    2023-07-04
  • MySQL的约束类型、数据库操作、数据表操作大全(简述)
    目录 一.数据库的操作语法 二.MySQL数据库约束 三.数据类型 四.数据表操作 作者简介: tq02,一个想成为编程高手的梦中人作者主页: tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主学习专栏:  &...
    99+
    2023-09-14
    数据库 mysql 笔记 sql
  • GBase 8s数据库主键约束、唯一约束和唯一索引的区别解析
    主键约束(PRIMARY KEY) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键,一个表上仅只能有一个主键;不建议更新主键;主键列上没有任何两行具有相同值(即重复值)...
    99+
    2024-04-02
  • 关系型数据库和非关系型数据库的区别是什么
    这篇文章主要介绍了关系型数据库和非关系型数据库的区别是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。区别:关系型数据天然就是表格式的,因此存...
    99+
    2024-04-02
  • 关系型数据库与非关系型数据库的区别是什么
    今天就跟大家聊聊有关关系型数据库与非关系型数据库的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。关系模型指的就是二维表格模型,而一个关系型...
    99+
    2024-04-02
  • Mysql关于数据库是否应该使用外键约束详解说明
    一、前言 对于【是否使用外键约束】这个话题已经是老生常谈的了。在学校中,老师交给我们的大多是需要我们建立外键约束,但进入了实际工作很多时候并不会使用外键,而是通过代码逻辑来控制。包括...
    99+
    2024-04-02
  • mysql client如何操作MySQL关系型数据库
    这篇文章主要介绍了mysql client如何操作MySQL关系型数据库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。主要讲解mysqlclient操作MySQL关系型数据库...
    99+
    2023-06-02
  • 关系型数据库的设计规则详解
    目录表关系设计1、一对一关联(one-to-one)2、一对多关系(one-to-many)3、多对多(many-to-many)4、自我引用(Self reference)E-R(...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作