8.数据完整性

本文详细介绍了数据库中的数据完整性,包括实体完整性、域完整性和引用完整性。实体完整性通过主键约束、唯一约束和自动增长列确保每行数据的唯一性。唯一约束允许数据不重复,而自动增长列则确保数据在删除后仍能自动递增。域完整性通过数据类型约束和非空约束限制单元格数据的正确性。此外,参照完整性通过主键和外键关系维护不同表之间的数据一致性。文章还提供了SQL语句示例,展示了如何在创建和修改表时添加这些完整性约束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据完整性介绍

  • 数据完整性:保证用户输入的数据保存到数据库中是正确的。
  • 如何添加数据完整性:在创建表时在表中添加约束
  • 完整性分类:实体完整性、域完整性、引用完整性

实体完整性

  • 实体(entity):表中每一行的记录都代表一个实体。
  • 实体完整性的作用:不重复的表示每一行数据。行极约束
  • 约束类型:主键约束、唯一约束、自动增长列

主键与联合主键约束

  • 特点:每个表中要有一个主键,数据唯一且不为NULL。用于区分每行数据。
  • 格式:
CREATE TABLE 表名(字段名1 数据类型 primary key,字段2 数据类型)CREATE TABLE 表名(字段名1 数据类型,字段2 数据类型,primary key(要设置主键的字段))-- 联合主键-两个主键合在一起作为一个主键
CREATE TABLE 表名(字段名1 数据类型,字段2 数据类型,primary key(主键1,主键2))-- 先创建表,再去修改表-添加主键
ALTER TABLE student ADD CONSTRAINT PRIMARY KEY(id);
-- 实例 第二种
CREATE TABLE person(ID BIGINT PRIMARY KEY,name VARCHAR(50),age INT,PRIMARY KEY(ID));
-- 实例 第三种
CREATE TABLE student(ID BIGINT, s_num BIGINT,name VARCHAR(50),PRIMARY KEY(ID,s_num));

唯一约束

  • 特点:指定列的数据不能重复,但可以为null
  • 格式:
CREATE TABLE 表名(字段名1 数据类型 字段名2 数据类型 UNIQUE;
CREATE TABLE student(id INT PRIMARY KEY,name VARCHAR(50) UNIQUE);

自动增长列

  • 特点:指定列的数据自动增长,即使数据删除,还是从删除的序号继续往下。
  • 格式:
CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT 字段名2 数据类型 UNIQUE);
CREATE TABLE student(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) UNIQUE
);

域完整性

  • 作用:限制此单元格的数据正确,不对照此列的其他单元格比较。
  • 域:当前单元格。

域完整性约束

  • 数据类型约束:数值类型、日期类型、字符串类型
  • 非空约束:为空即报错,无法保存
CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT,字段名2 数据类型 UNIQUE NOT NULL;
  • 默认值约束:
CREATE TABLE student(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) UNIQUE NOT NULL,
	gender CHAR(1) DEFAULT '男'
);

参照完整性

简介

参照完整性

  1. 表与表中之间的一种对应关系;
  2. 通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现;
  3. 有对应参照完整性的两张表格,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改的表格域另一张对应表格进行对照,从而阻止一些不正确数据的操作。
  • 数据库的主键和外键类型要一致
  • 两个表必须是InnoDB类型
  • 设置参照完整性后,外键当中的内值必须是主键中的内容
  • 一个表设置当中的字段设置为主键,设置主键的为主表
  • 创建表时,设置外键,设置外键的为子表

添加

CREATE TABLE student(id INT PRIMARY KEY,name VARCHAR(50),age INT);
CREATE TABLE score(sid INT,score INT,
	CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES student(id) # 设置约束
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值