数据完整性的基本概念
1,什么是数据完整性?
数据完整性是指存储在数据库中的数据要能正确反映实际情况,规定输入的数据不能无效值、错误值或者乱码等。
2,数据完整性的类型必须准确
3,实体完整性:标识符或者主键的完整性,使其值唯一
4,域完整性:限制类型、格式和取值范围等
5,引用完整性:保持原表和引用表数据的一致性
6,自定义完整性:用户自定义的业务规则
数据完整性的实现方式
实体完整性:主键约束、唯一值约束
域完整性:检查约束、默认值约束
引用完整性:外键约束
用户自定义完整性:以上约束的自由组合。
定义约束
数据完整性约束也就是创建表( create table )时的约束条件,是用来限制属性或者表中数据的,也可以通过修改语句( alter table )修改约束条件。
常见的约束
约束名 | 描述 | 名称 |
---|---|---|
not null | 非空约束 | 表示该数据类型不能为空NULL |
default | 默认值 | 约束用于保证该字段有默认值 |
auto_increment | 自增列 | 数据自动进行增长,必须要有唯一约束 |
unique | 唯一约束 | 用于保证该字段的值具有唯一性,可以为空 |
primary key | 主键 | 用于保证该字段的值具有唯一性并且非空,一张表只能有一个主键 |
foreign key | 外键 | 连接主键,用于限制两个表的关系 |
check | 检查约束 | 检查字段的值是否为指定的值(MySQL不支持) |
语句格式
在列名(属性名)中添加约束
1,创建表时定义约束
2,修改表时定义约束
3,删除表的约束
4,查询表的约束
非空约束
表示该类型不能为空,如果插入的数据为空的话,会被系统阻止插入
1,创建语法格式
创建一个表,使编号不能为空
create table table_name(
t_no int not null,
t_name varchar(20) not null
);
2,表的修改
修改表属性的时候,会和原来的表中的数据,进行一个检查,如果出现冲突,则无法修改
##修改表中的属性约束不为空
alter table <表名> modify column <属性名> <数据类型> (约束)
# 修改表中的属性约束不为空
alter table teachar modify column t_name varchar(20) not null;
#通过修改表使其去掉非空属性约束
alter table teachar modify column t_no varchar(20);
唯一约束
指定某列或者某几列数据不能重复
#创建
create table teacher_tb(
t_no int not null unique,
t_name varchar(20)
);
#指定列添加唯一约束:
alter table 表名 add constraint 约束名 约束类型(属性名);
#示例
alter table 表名 add constraint 属性名 unique(属性名);
#删除唯一约束:
alter table 表名 drop index 属性名;
自增列
语句 auto_increment
自增列的使用条件,必须是一个有主键或者是唯一约束的属性名
属性给空值时,初始默认值从1开始,之后的每一个在其基础上+1。
在创建时可以在表后设置初始默认值: auto_increment=100
#示例
create table 表格名( 属性名 类型 auto_increment )auto_increment=100;
#添加自增列
alter table 表名 modify 属性名 类型 (auto_increment)
#删除
alter table 表名 modify 属性名 类型
默认值约束
语句 default
表在创建时没有插入元素,则指定默认给定的一些元素,让其不为空
#创建表的默认属性
create table 表名( s_subject varchar(20) default 数据 );
#添加或者删除默认值约束
alter table 表名 modify column 列名 类型 (default 数据);
主键约束
语句 primary key
特点:非空约束,唯一约束,每个表只能有一个主键约束(表级)
在多列联合的主键约束时,联合主键的值不能重复。
#设置单列主键
create table 表名 ( 属性名 int primary key, );
#添加主键约束
alter table 表名 add constraint 主键名 primary key (属性名);
#删除主键约束
alter table 表格名 drop primary key;
外键约束
语句: foreign key
外键约束是指一个表中的属性值参考另一个表中的主属性的值,也就是外键值参考主键值,由于外键约束是表级约束,所以要在创建表之前先创建参考表。外键和参考表的主键数据类型、长度和精度要保持一致。
#在创建的时候定义外键
<属性名> <类型> (约束),
foreign key(属性名) references 被引用的表(主键属性);
#添加外键约束
alter table 表名 add constraint 属性名 foreign key( 属性名) references 被引用的表(主键属性);
#删除外键约束
alter table 表名 drop foreign key 属性名;
总结
1,约束的使用
2,如何通过约束进行数据的规范话操作
3, 如何查询约束
4,通过主键和外键来联系两张表