数据完整性(一)

news2024/11/15 20:40:27

目录

数据完整性:

        什么是数据完整性:

数据完整性的类型

        1:实体完整性

        2:域完整性:

        3、引用完整性:

        4、自定义完整性:

完整性约束:

               数据完整性的实现方式:

                                实体完整性:

                                                        主键约束、唯一值约束

                                域完整性:

                                                        检查约束、默认值约束

                                引用完整性:

                                                        外键约束

                                用户自定义约束:

                                                        以上约束的自由组合

什么是约束:

约束的分类:

MySQL常用约束:

完整性约束

                怎样添加或修改约束?

非空约束:

唯一约束:

复合唯一约束


数据完整性:

 

        什么是数据完整性:

                数据完整性是指存储在数据库中的数据要能正确反映实际情况,规定输入的数据不能是无效值,错误值或者乱码等。

数据完整性的类型

        1:实体完整性

                                        标识符或者主键的完整性,使其值唯一。

        2:域完整性:

                                        限制类型、格式和取值范围等。

        3、引用完整性:

                                        保持原表和引用表数据的一致性。

        4、自定义完整性:

                                        用户自定义的业务规则

完整性约束:

               数据完整性的实现方式:

                                实体完整性:

                                                        主键约束、唯一值约束

                                域完整性:

                                                        检查约束、默认值约束

                                引用完整性:

                                                        外键约束

                                用户自定义约束:

                                                        以上约束的自由组合

什么是约束:

                                数据完整性约束也就是创建表时(create table)的约束条件,是用来限制属性或者表中数据的,也可以通过修改语句(alter table)修改约束条件。

约束的分类:

                约束又分为行级约束和表级约束,行级约束和表级约束本质上是一样的,只是约束的效力和范围不同

                非空约束、默认值约束、主键约束一般为行级约束;

                外键约束(联合主键)是表级约束;

                检查约束(check)既可以是行级约束也可以是表级约束;

MySQL常用约束:

        各种约束及其描述如下所示:

完整性约束

        MYSQL添加或修改约束的方式

                怎样添加或修改约束?

                        1:创建表时添加约束

                        2:修改表时添加或修改约束

                        3:删除表的约束

                        4:查询表的约束

非空约束:

                确保当前约束的属性不为空值,非空约束只能出现在表对象的列中,是行级约束。表示该属性的取值不能为空,如果插入的数据为空,会被系统阻止插入。

                非空约束关键字:not null

                创建非空约束的语法格式:

                create table <table_name>(

                        no int not null,

                        name varchar(20) not null);

                #创建一个表,使编号和名称不能为空

-- 非空约束not null(行级约束)
-- 非空约束使属性的取值不能为空

-- 创建一个数据表,使表中的某个属性取值不能为空
create table staff(-- 员工表
staff_id int not null, -- 工号(非空)
staff_name varchar(20), -- 员工姓名
staff_age int
);

insert into staff values(1,"张三","男",33);
insert into staff(staff_name) values("李四");
-- 以修改表结构的方式为某个属性添加非空约束
alter table staff modify column staff_name varchar(30) not null;
insert into staff(staff_id) values(2);
-- 以修改表结构的方式去掉某个属性的非空约束
alter table staff modify column staff_name varchar(30);
-- 如果属性的取值已经存在空值,那么就不允许为这个属性添加非空约束
-- 如果属性被添加了非空约束,那么这个属性的取值就不能为空。
desc staff;

唯一约束:

                指定某列或者某几列数据的取值不能重复。

                唯一约束关键字:unique

                1、创建表时添加唯一约束

                create table teacher_tb(

                        t_no int not null unique,

                        t_name varchar(20));

                2、指定列添加唯一约束:

                        alter table<表名> add 约束类型(属性名);

                #示例:可以通过constraint给约束取别名

                        alter table<表名> add constraint <约束名> unique(属性名);

                3、删除唯一约束:

                        alter table<表名> drop index <属性名/约束名>;

-- 创建一个数据表,使表中的某个属性取值不能重复
create table staff( -- 员工表
staff_id int unique,-- 工号(唯一)
staff_name varchar(30),-- 员工姓名
staff_age int
-- unique(staff_id)-- 添加唯一约束
);

-- 以修改表结构的方式为某个属性添加唯一约束
alter table staff add unique(staff_id);
insert into staff(staff_id,staff_name) values(2,"李四");
-- 以修改表结构的方式去掉某个属性的唯一约束
alter table staff drop index staff_id;
desc staff;

复合唯一约束

                创建复合唯一约束(表级约束)

                可以对多个列进行唯一约束,约束两个以上的字段(属性)不能同时一致。

                1、在创建表时添加复合唯一约束

                constraint <约束名> unique(<属性>)[,属性2] [,...属性n])

                2、在创建表后添加复合唯一约束

                alter table <表名> add constraint <约束名> unique (<属性1>[,属性2] [,...属性n]);

                # 这里也就是约束属性1、属性2到属性n中可以允许其中存在取相同值的属性,但不能同时相同,至少要有一个不同。

                #数据库默认第一个非空且唯一的属性为主属性(主键)

        

-- 复合唯一约束(表级约束)
-- 为两个或两个以上的属性添加一个唯一约束,使它们的取值不能同时重复,可以有部分重复
-- 创建一个数据表,使表中的某几个属性取值不能同时重复
create table staff( -- 员工表
staff_id int, -- 工号(唯一)
staff_name varchar (30),-- 员工姓名
staff_gender varchar(4), -- 员工性别
staff_age int,
unique(staff_id,staff_name-- 添加复合唯一约束
);

-- 以修改表结构的方式为某几个属性添加复合唯一约束
alter table staff add constraint uni_sidname unique (staff_id,staff_name);
insert into staff(staff_id,staff_name) values(2,"李四");
insert into staff(staff_id,staff_name) values(1,"张三");
-- 以修改表结构的方式为某几个属性去掉复合唯一约束
alter table staff drop index uni_sidname;

desc staff;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抽象⼯⼚模式

抽象⼯⼚模式 1.抽象工厂模式介绍 抽象⼯⼚模式与⼯⼚⽅法模式虽然主要意图都是为了解决&#xff0c;接⼝选择问题。但在实现上&#xff0c;抽象⼯⼚是⼀ 个中⼼⼯⼚&#xff0c;创建其他⼯⼚的模式。 2.案例场景模拟 2.1场景简述 很多时候初期业务的蛮荒发展&#xff0c;也…

NLP中隐性语义分析及奇异值分解(SVD)-学习笔记

目录 1、隐性语义分析 2、奇异值分解 2.1 左奇异向量U 2.2 奇异值向量S 2.3 右奇异值向量V^T 2.4 SVD矩阵的方向 2.5 主题约简 1、隐性语义分析 隐形语义分析基于最古老和最常用的降维技术–奇异值分解(SVD)。SVD将一个矩阵分解成3个方阵&#xff0c;其中一个是对角矩阵…

网络类型实验报告

实验拓扑 实验要求 1.R2为ISP&#xff0c;其上只能配置IP地址 2.R1-R2之间为HDLC封装 3.R2-R3之间为ppp封装&#xff0c;pap认证&#xff0c;R2为主认证方 4.R2-R4之间为PPP封装&#xff0c;chap认证&#xff0c;R2为主认证方 5.R1、R2、R3构建MGRE环境&#xff0c;仅R1P地址固…

【C++】-- C++11基础常用知识点

目录 C11简介 统一的列表初始化 &#xff5b;&#xff5d;初始化 std::initializer_list std::initializer_list使用场景&#xff1a; 声明 auto decltype nullptr 范围for循环 STL中一些变化 新容器 array容器 forward_list容器 容器中的一些新方法 C11简介 在…

TDK | RoboKit1-DK 开发平台为实现未来机器人的多样性扫清障碍

机器人行业正在飞速发展&#xff0c;新技术亦层出不穷。TDK 现推出了 TDK RoboKit1-DK 机器人开发平台&#xff0c;该平台配备了机器人精确操作所必需的各种传感器&#xff0c;有助于在各种机器人开发中提高效率和性能。 在技术快速进步与成长的环境中&#xff0c;机器人开发所…

计算机组成原理实验——二、寄存器实验

一、实验目的 1.掌握寄存器堆的工作原理和接口。 2.掌握寄存器堆的实现方法。 3.掌握寄存器堆在微处理器中承担的功能。 二&#xff0e;实验内容 设计一32*32bit 的寄存器文件&#xff0c;即32 个 32 位的寄存器文件&#xff08;寄存器组&#xff09; –具备两组读端口及一组…

【王道操作系统】2.2.1 处理机调度的概念与层次

处理机调度的概念与层次 文章目录处理机调度的概念与层次1.调度的基本概念2.调度的三个层次2.1 高级调度(作业调度)2.2 中级调度(内存调度)2.3 进程的挂起状态与七状态模型2.4 低级调度(进程调度)2.5 三层调度的联系和对比1.调度的基本概念 2.调度的三个层次 2.1 高级调度(作业…

GroundTrue和里程计输出的位姿的参考坐标系不一致的情况

这里写目录标题前言数据集描述使用TF工具包获取使用Eigen库计算置换输出误差对比没做转换之前转换之后前言 最近遇到一个数据集的ground true参考坐标和vSLAM输出的位姿的参考坐标不一样的问题&#xff0c;记录一下。 在之前参加的一个PRCV 2022的多传感器融合SLAM挑战赛中也同…

MATLAB读取tif格式图像

tif格式数据本质上就是带有地理信息的矩阵数据。 geotiffread函数 MATLAB帮助-geotiffread 语法Syntax&#xff1a; [A,R] geotiffread(filename) [X,cmap,R] geotiffread(filename) [A,refmat,bbox] geotiffread(filename) [X,cmap,refmat,bbox] geotiffread(filenam…

Symbol详解

Symbol Symbol是es6引入的一个新的原始数据类型&#xff0c;是一个独一无二的值。 目前为止&#xff0c;js的数据类型有以下几种&#xff1a; 数据类型说明undefinedundefinednullnullboolean布尔值string字符串number数字Bigint大整数Object对象SymbolSymbol Symbol通过Symb…

[go学习笔记.第十八章.数据结构] 2.约瑟夫问题,排序,栈,递归,哈希表,二叉树的三种遍历方式

一.约瑟夫问题 josephu 问题: 设编号为1, 2 &#xff0c;... n 的n个人围坐一圈, 约定编号为 k (1<k<n &#xff09;的人从 1 开始报数&#xff0c;数到m的那个人出列&#xff0c;它的下一位又从1开始报数&#xff0c;数到 m 的那个人又出列&#xff0c;依次类推&#xf…

ActivityManagerService

1 AMS 家族 ActivityManagerService&#xff08;AMS&#xff09;主要负责系统中四大组件的启动、切换、调度以及应用程序的管理和调度工作&#xff0c;其职责与操作系统中的进程管理和调度模块类似。ActivityManagerService 进行初始化的时机很明确&#xff0c;就是在 system_…

计算机组成原理“上分秘籍”——数据的表示和运算

前言 上分地图 目录 前言 上分地图 猜你想问 Q1&#xff1a;为何要研究数据表示问题&#xff1f; Q2&#xff1a;什么叫数据表示&#xff1f;计算机中又有哪些方法&#xff1f; 正文 上分突破口1&#xff1a;进位计数法 例&#xff1a;二进制转为十进制 例&#xff…

路由综合实验

目录需求分析解决方法1&#xff0c;环回配置2&#xff0c;路由接口ip配置3&#xff0c;配置DHCP服务4&#xff0c;配置缺省5&#xff0c;静态路由配置6.浮动路由配置7&#xff0c;nat的配置8&#xff0c;远程服务及端口进行映射需求分析 一&#xff0c;原始需求如图&#xff1…

基于React Native开发的非法App破解记录

目标app YUhSMGNITTZMeTloWm1ZdWJIVnNkWE5wY2k1dFpTOD0 使用jadx反编译&#xff0c;找了一圈没有找到相应代码&#xff0c;看AndroidManifest.xml也不像有加壳的样子。。。 在lib目录下找到libreactnativejni.so文件&#xff0c;看似和react相关&#xff0c;莫非这app是大前端…

C++ Primer Plus 第六版(中文版)第五、六章(重置版)编程练习答案

//本博主所写的代码仅为阅读者提供参考&#xff1b; //若有不足之处请提出&#xff0c;博主会尽所能修改&#xff1b; //附上课后编程练习题目&#xff1b; //若是对您有用的话请点赞或分享提供给它人&#xff1b; //-----------------------------------------------------…

JavaScript奇淫技巧:反调试

JavaScript奇淫技巧&#xff1a;反调试 本文&#xff0c;将分享几种JS代码反调试技巧&#xff0c;目标是&#xff1a;实现防止他人调试、动态分析自己的代码。 检测调试&#xff0c;方法一&#xff1a;用console.log检测 代码&#xff1a; var c new RegExp ("1"…

Cesium 定位到图层(ImageryLayer)报错 DeveloperError: normalized result is not a number

Cesium 定位到图层&#xff08;ImageryLayer&#xff09;报错 DeveloperError: normalized result is not a number错误原因调试定位问题过程问题解决总结在使用 Cesium 封装代码的时候&#xff0c;遇到个奇怪的问题。 使用 viewer.flyTo(ImageryLayer) 报错&#xff1a;Devel…

【2022年度悲报】-回望2022,展望2023

文章目录一、前言-想对大家说的话二、有感而谈2022年-新年开端&#xff08;同销万古愁&#xff09;2022年-前中期&#xff08;再进再困&#xff0c;再熬再奋&#xff09;2022年-年后半段&#xff08;玉骨那愁瘴雾&#xff0c;冰姿自有仙风&#xff09;2022年-年末尾声&#xff…

简单总结:Flink和Kafka是如何做到精准一致性的

Flink CheckPoint机制 CheckPoint本质上就是检查点&#xff0c;类似于玩游戏的时候&#xff0c;需要偶尔存档&#xff0c;怕家里断电导致自己白玩。 Flink也是一样的&#xff0c;机器也是可能宕机&#xff0c;那么Flink如何保证自身不受宕机影响呢&#xff1f; 一般来说&am…