当前位置: 首页 > news >正文

【数据库原理复习】ch4 完整性约束 SQL定义

这里写目录标题

  • 基本概念
  • 实体完整性
  • 参照完整性
    • 违规处理
  • 用户自定义完整性
    • 约束条件定义
    • 完整性约束命名字句

基本概念

完整性约束主要包括

  • 实体完整性
  • 参照完整性
  • 用户自定义完整性

实体完整性

关系模型中实体完整性通常在建表时候添加primary key完成

# primary key定义
create table tab(xxxx   primary key,				# 列级完整性约束定义xxxx,xxxx....
)create table tab(xxx,xxx,xxx,primary key (var1, var2,.....)	# 表级完整性约束定义,如果有多个只能在表级定义)
  • 主键必须唯一,如果不唯一拒绝插入或修改
  • 主键各个属性不允许为空,只要有一个为空拒绝插入或修改

保证主键上述两种特点,DBMS主要采取以下方式:

  • 全表扫描
  • 索引

参照完整性

关系模型用foreign key保证

# 外键定义
create table sc(xxxx,xxxx,xxxx,foreign key (var1) references xx_tab(var2)	# 在表级定义参照完整性on delete cascade 						# 删除时候级联(被参照表)on update no action						# 在更新时候拒绝(被参照表))

违规处理

  • 修改参照表只要涉及外键字段,例如插入元组、修改外码值,都会直接拒绝
  • 对于被参照表,如果是删除元组或者修改主码值,可以拒绝可以级联可以设置为空值

用户自定义完整性

约束条件定义

  • 列值非空(not null)
  • 列值唯一(unique)
  • 列值上是否符合表达式(check)
# 主要说明check定义
create table tab(xxx,xxx,xxx,sex char(2) check(sex in ('男', '女')),			# 定死性别只能取男或者女xxx
)
# check也可以在元组上定义完整性约束
create table tab(xxx,xxx,xxx,check (sex = '女' or name not like 'Ms.%')		# 定义name与sex两个属性之间的约束条件
)
  • 如果约束条件不被满足,DBMS直接拒绝执行

完整性约束命名字句

# constaint语句
constraint <完整性约束条件名称>
[primary key 短语
|foreign key 短语
|check 短语]# e.g.
create table tab(sno numeric(6)constraint c1 check (sno between 90000 and 99999),sname char(20),constraint c2 not null,sage numeric(3),constraint c3 check(sage < 30),xx,constraint studentkey primary key (sno)
)alter table tab
add constraint c1 check xxxx
alter table tab
drop constraint c1
  • constraint可以定义任何一种完整性约束,而且为其表面名称,好处是名称自定义,可以进行删除约束条件。
  • 如果像上面直接给出not null,unique等条件,SqlServer会自动为其添加名称,一般名称都有规律。像主键约束一般叫pk_xxxx。
http://www.lryc.cn/news/37488.html

相关文章:

  • 【2023年的就业形势依旧严峻】
  • Linux下LED灯驱动模板详解
  • 【C++】你不得不爱的——继承
  • 数据库系统概论
  • 32位处理器AM6528BACDXEA、AM6548BACDXEAF基于Arm Cortex-A53内核【工业4.0嵌入式产品应用】
  • 多图片怎么转换成PDF?这招教你轻松转换
  • kali双网卡
  • 【wed前端初级课程】第一章 什么是HTML
  • sd卡格式化后数据恢复怎么操作
  • 论文阅读笔记|大规模多标签文本分类
  • 国际化翻译navigator.language与语种对照表
  • Matlab进阶绘图第6期—雷达图/蜘蛛图/星图
  • Javascript的ES6 class写法和ES5闭包写法性能对比
  • 探秘MySQL——全面了解索引、索引优化规则
  • 战斗力最强排行榜:10-30人团队任务管理工具
  • 2023-03-09干活小计
  • 基数排序算法
  • 项目实战典型案例24——xxljob控制台不打印日志排查
  • 旋转框目标检测mmrotate v1.0.0rc1 之RTMDet训练DOTA的官方问题解析整理(四)
  • 4个顶级的华为/小米/OPPO/Vivo手机屏幕解锁工具软件
  • 华为OD机试题 - 和最大子矩阵(JavaScript)| 机考必刷
  • 企业电子招标采购系统源码之项目说明和开发类型
  • Python高频面试题——装饰器(带大家理解装饰器的本质)
  • 全方位解读智能中控屏发展趋势!亚马逊Alexa语音+Matter能力成必备
  • JAVA练习74-括号生成
  • Java ORM开发 更全面的应用场景
  • SpringBoot【基础篇】---- 基础配置
  • 手机磁吸背夹散热器制冷快速方案
  • 青岛OJ(QingdaoU/OnlineJudge)部署如何直连数据库批量修改
  • 渗透测试——信息收集(详细)