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

数据库完整性基本概念及MySql语法

1.什么是数据库的完整性?
数据库的完整性是指数据库数据的正确性和相容性。相容性是指数据对象在不同关系表中的数据是相同的一致的。
2.数据库的完整性概念与数据库的安全性概念有什么区别和联系?
联系是都是为了保护数据库。
区别:1.完整性是防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据安全性是保护数据库防止恶意的破坏和非法的存取。
2.防范的对象:完整性是不正确不合语义的数据,安全性防范的对象是非法用户和非法操作。
3.什么是数据库的完整性约束?
是指数据库中的数据必须满足的语义条件。
4.关系数据库管理系统的完整性控制机制应具备哪三方面的功能?
1.提供定义完整性约束的机制。
2.提供检查完整性约束的方法。如在进行了insert,update,delete后要检查数据是否仍然符合完整性约束条件。
3.提供完整性的违约处理方法。有拒绝或者级联执行。
5.关系数据库管理系统在实现参照完整性时需要考虑哪些方面?
要提供定义主码和外码的机制,还需要提供不同的策略供用户选择。
这些策略包括:
举个例子有一张选课表,还有一张学生表,选课表的学号是外码,参照了学生表的主码(学号)。
1.当选课表插入元组时,违约处理为拒绝执行。
2.当选课表要修改外码值时,违约处理为拒绝执行。
3.当学生表要删除元组时,相应违约处理为拒绝执行或者说级联删除(删除选课表中的相应元组),或者说将选课表中的外码给设置为空值。
4.当学生表要修改主码值时,同上。
级联删除就是说我要在学生表中删除一个元组这个元组的学号要在选课表中找到相应值然后将选课表的元组一起删了。
6.假设有下面两个关系模式:
职工(职工号,姓名,出生日期,职务,工资,部门号),其中职工号为主码;
部门(部门号,名称,经理姓名,电话),其中部门号为主码。
用SQL定义这两个关系模式,要求在模式中完成以下完整性约束的定义:
①定义每个模式的主码。
②定义参照完整性约束。
③定义职工年龄不超过65岁。
CREATE TABLE 职工 (
    职工号 INT PRIMARY KEY,  -- 主码
    姓名 VARCHAR(50),
    出生日期 DATE,
    职务 VARCHAR(50),
    工资 DECIMAL(10, 2),
    部门号 INT,
    CONSTRAINT fk_部门号 FOREIGN KEY (部门号) REFERENCES 部门(部门号),  -- 参照完整性约束
    CONSTRAINT chk_年龄 CHECK (TIMESTAMPDIFF(YEAR, 出生日期, CURDATE()) <= 65)  -- 年龄不超过65岁
);


CREATE TABLE 部门 (
    部门号 INT PRIMARY KEY,  -- 主码
    名称 VARCHAR(50),
    经理姓名 VARCHAR(50),
    电话 VARCHAR(20)
);

最难的:CONSTRAINT chk_年龄 CHECK (TIMESTAMPDIFF(YEAR, 出生日期, CURDATE()) <= 65)

解释如下:

  • CONSTRAINT chk_年龄

    • CONSTRAINT是一个SQL关键字,用于定义一个约束并为其命名。chk_年龄是这个约束的名字。给约束命名是可选的,但它有助于在以后需要修改或删除约束时更容易识别。
  • CHECK (TIMESTAMPDIFF(YEAR, 出生日期, CURDATE()) <= 65)

    • CHECK是一个SQL关键字,用于定义一个条件,该条件必须为真才能插入或更新数据。如果条件不为真,则操作会失败。
  • TIMESTAMPDIFF(YEAR, 出生日期, CURDATE())

    • TIMESTAMPDIFF是一个SQL函数,用于计算两个日期或时间之间的差异。它的语法是TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2),其中unit表示要计算的时间单位,datetime_expr1datetime_expr2是要比较的两个日期或时间。
    • 在这个例子中,unitYEAR,表示计算年份之间的差异。
    • 出生日期是数据库表中的一列,表示职工的出生日期。
    • CURDATE()是一个SQL函数,返回当前的日期。

    所以,TIMESTAMPDIFF(YEAR, 出生日期, CURDATE())计算的是从出生日期到当前日期的年份差异,即职工的年龄。

  • <= 65

    • 这是一个比较操作符,用于检查计算出来的年龄是否小于或等于65。

7.在关系数据库管理系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束时,一般是
如何分别进行处理的?
违反用户定义的完整性:会拒绝执行。
违反实体完整性:会拒绝执行。
参照完整性违反后:
这些策略包括:
举个例子有一张选课表,还有一张学生表,选课表的学号是外码,参照了学生表的主码(学号)。
1.当选课表插入元组时,违约处理为拒绝执行。
2.当选课表要修改外码值时,违约处理为拒绝执行。
3.当学生表要删除元组时,相应违约处理为拒绝执行或者说级联删除(删除选课表中的相应元组),或者说将选课表中的外码给设置为空值。
4.当学生表要修改主码值时,同上。

相关文章:

  • MYSQL数据库安装
  • SpringBoot整合SpringDataRedis
  • 使用Jetpack Compose和DummyJSON加速你的Android开发
  • Python Virtualenv:创建独立的 Python 开发环境
  • 天地图 uniapp使用笔记
  • dbForge Studioor MySQL v6 解锁版 安装教程(MYSQL数据库客户端)
  • ubuntu换镜像源方法
  • 课程设计---哈夫曼树的编码与解码(Java详解)
  • Stable diffusion 3 正式开源
  • 嵌入式硬件VS软件,到底哪个更难?
  • 详解 HBase 的安装部署及命令行操作
  • C语言从头学22——main( )函数
  • VMR,支持30+种编程语言的SDK版本管理器,支持Windows/MacOS/Linux。
  • 嵌入式开发十八:USART串口通信实验
  • 22种常用设计模式示例代码
  • Building wheels for collected packages: mmcv, mmcv-full 卡住
  • Mamaba3--RNN、状态方程、勒让德多项式
  • Vue CLI,Vue Router,Vuex
  • 如何配置node.js环境
  • Vue59-全局事件总线:任意组件间通信
  • 上海市委常委会会议暨市生态文明建设领导小组会议研究基层减负、生态环保等事项
  • 报告:4月份新增发行的1763亿元专项债中,投向房地产相关领域约717亿元
  • “仓促、有限”,美英公布贸易协议框架,两国分别获得了什么?
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • 美联储宣布维持基准利率不变
  • 特色茶酒、非遗挂面……六安皋品入沪赴“五五购物节”