sql数据库管理

本文介绍了数据库完整性的概念及其重要性,详细阐述了四种主要的完整性约束:实体完整性、域完整性、引用完整性和用户自定义完整性,并举例说明了各种约束的应用场景。

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

数据的完整性=精确性+可靠性

数据丧失完整性体现在:数据可中存在不符合规定的数据或错误的信息,例如:学号重复,身份证号重复,年龄为负数,薪水为负数,性别不存在

数据丧失完整性:是在设计表结构的时候造成的。

保证数据的完整性:在设计表结构的时候,添加约束。

约束的分类:
1.实体[行]完整性约束:保证行记录的唯一
 主键约束 primary key
 自动增长列约束 identity(起点,步长)
 唯一约束 unique

2.域[列,字段]完整性约束:保证列的数据类型,格式,取值范围,长度正确
 检查约束 
 外键约束
 默认值约束
 非空约束
 
3.引用完整性约束:建立在主外键关系之上,保证表与表之间的数据完整性
 作用:
  1.禁止在子表中,添加主表中不存在的记录
  2.禁止修改主表中,被子表引用的记录
  3.禁止删除主表中,被子表引用的记录
 
4.用户自定义完整性约束:高级约束
 触发器
 存储过程
 规则

1.主键约束 primary key
 作用:添加了主键约束的列,行记录具有唯一性

 问题:一个表中允许有几个主键?
 答案:一个表中只允许存在1个主键

 问题:选取某列作为主键列的原则?
 答案:
  1.最少性:尽可能选择单列,作为主键
  2.稳定性:尽可能选取,更新比较少的列
   
 当一个表中,不存在,行记录唯一的列,没有符合作为主键列原则的列时?
 答案:为该表添加一个标识列,作为主键,唯一的标识行记录,没有实际意义。
 
*****由多列组成的主键,称为,组合 主键   此做法不推荐


2.唯一约束 unique
 作用:添加了唯一约束的列,行记录具有唯一性
 使用场合:一般是非主键列

 区别:唯一约束和主键约束的区别
 唯一约束的列,行记录允许空值,但只允许有1个空值
 主键约束的列,行记录不允许有空值


3.标识列约束 identity(起点,步长)
 作用:添加了标识列约束的列,行记录不需要赋值,会自动增长
 使用场合:一般用在 整形的列上

==========================
4.检查约束 check
 作用:约束当前列的取值范围,格式,长度
 例如:
  check(age>0 and age<200) 限制年龄为0-200
  check(sex='男' or sex='女') 限制性别
  check(tel like '0716%' and len(tel)=11) 限制荆州电话格式以0716开头,长度为11个字符
  check(tel like '186%' or tel like '159%')

 

5.默认值约束 default
 作用:用于向列中,插入默认值,有默认值约束的列,可赋值,可不赋值
 例如:
  default(18) 年龄默认为18
  default('男')性别默认是 男
  default('地址不详') 地址默认 不详
  default(getdate()) 默认为当前时间

6.非空约束 not null
 作用:约束当前列的值,不允许为空
 注意:空格也算一个字符,不是null


7.外键约束 foreign key
 作用:
  1.禁止在子表中,添加主表中不存在的记录
  2.禁止修改主表中,被子表引用的记录
  3.禁止删除主表中,被子表引用的记录

 外键所在的表是子表,此子表是相对于主表而言的。
 问:一个表中允许有几个主键?几个外键?
 1个主键,N个外键

 语法:
 子表中的外键列 int foreign key references 主表名(主表中的主键)
 
 注意:
 1.建立主外键关系的列,列名可不同,但是数据类型和长度必须相同
 2.被引用的列,必须是主键,而且,具有唯一性
  

 

经验:
1.如何辨别主表,子表
主表和子表都是相对的。
 a.看表的关系图,钥匙指向的是主表
 b.逻辑判断,先存在一定是主表

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值