1.数据的完整性

1. 什么是数据的完整性

保证用户输入的数据保存到数据库中是正确的

2.添加数据完整性

在创建表的时候给表添加约束

3.完整性分类

实体完整性、域完整性、引用完整性


2.完整性的分类

1.实体完整性

  • 表中的一行(一条记录)代表一个实体 (entity)

  • 实体完整性的作用:标记每一行数据不重复。行级约束

  • 约束类型:

    • 主键约束(primary key):

      • 每个表中要有一个主键,数据唯一,且不能为null

      • 创建主键的方式:

        • create table pe(ID BIGINT PRIMARY key, name VARCHAR(50));
        • create table pe2(ID BIGINT, name VARCHAR(50), PRIMARY KEY(ID));
        • 联合主键:两个字段数据同时相同时,才违反联合主键约束。 create table stu2(ID BIGINT,snum BIGINT, name VARCHAR(50), PRIMARY KEY(ID, snum));

        • 更改表结构,设置主键:ALTER TABLE student ADD CONSTRAINT PRIMARY KEY(sid);

    • 唯一约束

      • 指定列的数据不能重复,可以为空值
      • CREATE TABLE table1(id int PRIMARY KEY, name VARCHAR(50) UNIQUE); name不能重复
    • 自动增长列

      • 指定列的数据自动增长,即使数据删除,依然继续增长

      • CREATE TABLE table1(
        id int PRIMARY KEY auto_increment,
        name varchar (20) UNIQUE
        );

2.域完整性

使用:限制此单元格的数据正确,不对照此列的其他单元格比较

域,代表当前单元格

域完整性约束:

  • 数据类型:数值、日期、字符串

  • 非空约束(not null) CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null);

  • -- 默认值约束 (default)
    CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null,sex char(1) default '男')
    -- 设置默认值为 男


3. 参照完整性

什么是参照完整性

  • 指表与表之间的一种对应关系
  • 通常情况下可以通过设置两张表之间的主键、外键关系,或者编写两表的触发器来实现。
  • 有对应参照完整性的两张表,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改表格与另一张对应表格继续对照,从而阻止一些不正确的数据操作

数据库的主键和外键类型要一致

两个表必须是 InnoDB 类型

设置参照完整性后,外键当中的内值,必须得是主键当中的内容

-- 设置外键
CREATE TABLE score(
sid int PRIMARY KEY score int,
CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id)
);
-- score 设置外键,score 里的sid 关联 stu 里的 id
-- 设置外键
alter table score add CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id);
-- 多对多关系创建
CREATE TABLE teach(tid int PRIMARY KEY, name VARCHAR(50));
CREATE TABLE stu(sid int PRIMARY KEY, name VARCHAR(50));
CREATE TABLE tea_stu_rel(tid int, sid int); ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(tid) REFERENCES teach(tid);
ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(sid) REFERENCES stu(sid);

为什么要将表拆分:避免冗余数据


SQL数据完整性的更多相关文章

  1. 你真的会玩SQL吗?三范式、数据完整性

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  2. SQL Server-数据库架构和对象、定义数据完整性(二)

    前言 本节我们继续SQL之旅,本节我们如题来讲讲一些基本知识以及需要注意的地方,若有不妥之处,还望指出,简短的内容,深入的理解,Always to review the basics. 数据库架构和对 ...

  3. SQL server 数据库的数据完整性

    存储在数据库中的所有数据值均正确的状态.如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性. 详细释义 数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或 错误信息 ...

  4. SQL Server-数据库架构和对象、定义数据完整性

    前言 本节我们继续SQL之旅,本节我们如题来讲讲一些基本知识以及需要注意的地方,若有不妥之处,还望指出,简短的内容,深入的理解,Always to review the basics. 数据库架构和对 ...

  5. SQL Server 数据完整性的实现——约束

    SQL Server数据库采用的是关系数据模型,而关系数据模型本身的优点之一就是模型本身集成了数据完整性.作为模型一部分而实施的数据完整性(例如在创建数据表时的列属性定义)称作为声明式(Declara ...

  6. mysql使用基础 sql语句与数据完整性(二)

    二.DML:Data Manipulation Language 数据操作语言 作用:操作表中的数据的. 关键:INSERT UPDATE DELETE 注意:日期或字符串.字符要使用单引号引起来. ...

  7. SQL Server 基础 02 确保数据完整性

    本章总结目的:    为了巩固 约束.事务! 约 束 使用数据库约束就是保证数据库的完整性的方法,SQL Server 涉及的完整性有三个: 1.实体完整性 : (不能为空且重复,即唯一的,例如身份证 ...

  8. SQL Server 第四章 存储过程(Procedure),触发器(Trigger),数据完整性(Data Integrity)

    use electric go --变量 --局部变量的声明格式 --declare @局部变量名 数据类型 --局部变量赋值 declare @littlepage int )) ) select ...

  9. T-SQL :SQL Server 定义数据完整性 6大约束(三)

    1.创建一客户张表 IF OBJECT_ID('dbo.Employees', 'U') IS NOT NULL DROP TABLE dbo.Employees; CREATE TABLE dbo. ...

随机推荐

  1. 简单实现 ArrayList

    java中提供了多个集合框架 其中就有ArrayList  下面简单的实现一下 只写了添加,获取长度和根据下标获取元素的方法 public class MyArrayList { //定义一个obje ...

  2. PHP SECURITY CALENDAR 2017 学习总结-更新中

    这篇文章主要以审计代码为主来分析每道题目中所存在的漏洞点,记录一下自己的学习: 1.Day 1 - Wish List class Challenge { const UPLOAD_DIRECTORY ...

  3. 【SoapUI】http接口测试

    一.接口介绍 API(Application Programming Interface,应用程序编程接口) 1.硬件接口 USB接口 硬盘接口 SD卡接口 LAN口和WAN口 CONSOLE口 .. ...

  4. 使用mini-define实现前端代码的模块化管理

    这篇文章主要介绍了使用mini-define实现前端代码的模块化管理,十分不错的一篇文章,这里推荐给有需要的小伙伴. mini-define 依据require实现的简易的前端模块化框架.如果你不想花 ...

  5. 深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP

    前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第5篇,依赖倒置原则LSP(The Dependency Inversion Principle ). 英文原文:htt ...

  6. js 获取 Url.Action 设置area

    var url = '@Url.Action("UserEdit","User",new { Area = "Setup", id = 1} ...

  7. 4、Angular2 pipe

    1. stateless pipe 2.stateful pipe

  8. 从零开始编译属于你的FFmpeg

    一.前提: 编译FFmpeg可以是初学者,尤其是对C语言项目,Linux编译不熟悉的的初学者的一道门槛. 我曾经找过很多博客,文章,有些能编译成功,有些则不能.编译通过,能够运行也是云里雾里的.其实最 ...

  9. vue-cli脚手架和webpack-simple模板项目

    vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目. GitHub地址是:https://github.com/vuejs/vue-cli 一. ...

  10. html-超链接标签

    链接资源 - <a href="01-hello.html">只是一个超链接1</a> ** href:链接的资源的地址 ** target:设置打开的方式 ...