数据完整性和约束的分类

一、约束的概述

1.为什么需要约束
数据完整性是指数据的精确性和可靠性。它是防止数据库 中存在不符合 语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
实体完整性:例如,同一个表中,不能存在两条完全相同无法区分的记录。
域完整性:例如,年龄范围0-120,性别范围“男/女”
引用完整性:例如,员工在部门,在部门表中要能找到这个部门
用户自定义完整性:例如,用户名唯一,密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5倍。

在这里插入图片描述
1.3约束的分类:
角度1:约束的字段的个数
单列约束 VS 多列约束

角度2:约束的作用范围
列级约束:将此约束声明在对应字段的后面
表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束

角度3:约束的作用(功能)
① not null (非空约束)
②unique (唯一性约束)
③ primary key(主键约束)
④foreign KEY (外键约束)
⑤check (检查约束)
⑥default(默认值约束)

如何添加/删除约束?
CREATE TABLE 时添加约束
ALTER TABLE 时增加约束,删除约束

二、约束的分类

not null (非空约束)

特点:
在这里插入图片描述

#数据完整性和约束的分类
/*
什么叫约束?对表中字段的限制

约束的分类:
角度1:约束的字段的个数
单列约束 VS  多列约束

角度2:约束的作用范围
列级约束:将此约束声明在对应字段的后面
表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束

角度3:约束的作用(功能)
① not null (非空约束)
②unique (唯一性约束)
③ primary key(主键约束)
④foreign KEY (外键约束)
⑤check (检查约束)
⑥default(默认值约束)

如何添加/删除约束?
CREATE TABLE 时添加约束
ALTER TABLE 时增加约束,删除约束
*/

#如何查看表中的约束
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'employees';

CREATE DATABASE dbtest13;
USE dbtest13;
#not null (非空约束)
#在CREATE TABLE 时添加约束
CREATE TABLE  test1(
id INT NOT NULL,
last_name VARCHAR(15) NOT NULL,
email VARCHAR(25),
salary DECIMAL(10,2)
);

DESC test1;

INSERT INTO test1(id,last_name,email,salary)
VALUES(1,'Tom','tom@126.com','3400');

#错误: Column 'last_name' cannot be null
INSERT INTO test1(id,last_name,email,salary)
VALUES(2,NULL,'tom@126.com','3400');

UPDATE test1
SET last_name = NULL
WHERE id = 1;
#在ALTER TABLE 时增加约束
DESC test1;

ALTER TABLE test1
MODIFY email VARCHAR(25) NOT NULL;
#Column 'last_name' cannot be null
UPDATE test1
SET last_name = NULL
WHERE id = 1;

SELECT * FROM test1;

#在ALTER TABLE 时删除约束
ALTER TABLE test1
MODIFY email VARCHAR(25) NULL;

unique (唯一性约束)

#在CREATE TABLE 时添加约束

CREATE TABLE test2(
id INT UNIQUE, #列级约束
last_name VARCHAR(15),
email VARCHAR(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值