(5)数据完整性

什么是数据完整性
  保证用户输入的数据保存到数据库中是正确的
如何添加数据完整性
  在创建表时给表中添加约束

完整性分类

实体完整性

什么是实体完整性
  表中的一行(一条记录)代表一个实体(entity)
实体完整性作用
  标识每一行数据不重复,行级约束
约束类型:

主键约束(primary key)
每个表中要有一个主键,数据唯一,且不能为null
写法1:
CREATE TABLE 表名 (字段名1 数据类型 primary key, 字段名2 数据类型)

CREATE TABLE person (
	ID BIGINT PRIMARY KEY,		#ID字段设为主键
	name VARCHAR(50)
);

写法2:
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,primary key(要设置主键的字段));

CREATE TABLE person (
	ID BIGINT,
	name VARCHAR(50),
	age INT,
	PRIMARY KEY(ID)
);

联合主键
将多个字段联合在一起作为主键
CREATE TABLE 表名 (字段1 数据类型, 字段2 数据类型,primary key(主键1,主键2));

CREATE TABLE student (
	ID BIGINT,
	stu_number BIGINT,
	name VARCHAR(50),
	PRIMARY KEY(ID,stu_number)
);

在这里插入图片描述
已有没有主键的表,修改表,添加主键

ALTER TABLE student MODIFY CONSTRAINT PRIMARY KEY(ID);

唯一约束(unique)
指定列数据不能重复,但可以为null
CREATE TABLE 表名 (字段名1 数据类型 , 字段名2 数据类型 UNIQUE);

CREATE TABLE student (
	id BIGINT PRIMARY KEY,
	name VARCHAR(50) UNIQUE
);

自动增长列(auto increment))
指定的列的数据自动增长
即使数据删除,还是从删除的序号继续往下
例如 7行记录删除,再添加新记录,序号从8开始
在这里插入图片描述
CREATE TABLE 表名 (字段名1 数据类型 primary key auto_increment, 字段名2 数据类型)

CREATE TABLE student (
	id BIGINT PRIMARY KEY auto_increment,
	name VARCHAR(50) UNIQUE
);

域完整性

限制此单元格的数据正确,不对此列其他单元格比较
域代表当前单元格
域完整性约束
数据类型
  数值类型、日期类型、字符串类型
非空约束(not null)
默认值约束(default))

CREATE TABLE student (
	id BIGINT PRIMARY KEY auto_increment,
	name VARCHAR(50) UNIQUE NOT NULL,
	gender CHAR(1) DEFAULT '男'
);

参照完整性

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

CREATE TABLE `stu` (
  `ID` int(255) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `stu_score` (
  `id` int(11) NOT NULL,
  `score` double NOT NULL,
  `科目` varchar(255) NOT NULL,
  `stu_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

在这里插入图片描述在这里插入图片描述

 CREATE TABLE stu (
 	id int PRIMARY KEY,
 	name varchar(50),
 	age INT
 );
create TABLE score (
	sid int,	#外键类型 与 学生表id 类型一直
	score INT,
	CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id)
);

外键的值选项
在这里插入图片描述
在已有的表中,添加外键约束

alter table score add CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值