MySQL数据库完整性

这篇具有很好参考价值的文章主要介绍了MySQL数据库完整性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库的完整性是指数据的正确性和相容性。

数据的正确性是指数据符合现实世界语义,反映当前实际情况;数据的相容性是指数据库在同一对象的不同关系表中的数据是符合逻辑的。

数据的完整性:为了防止数据库中存在不和语义的数据

数据的安全性:为了保护数据库防止恶意破坏和非法存取。

1.实体完整性

关系数据库中每个元组应该是可区分的,是唯一的。

关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。

2.参照完整性

参照完整性规则就是定义外码和主码之间的引用规则。

关系模型的参照完整性在CREATE TABLE 中用FOREIGN KEY 短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码。

FORGEIGN KEY(sno) REFERENCES course(sno)

3.用户定义完整性

用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

3.1属性上的约束条件

在CREATE TABLE中定义属性的同时,可以根据应用要求定义属性上的约束条件。包括:

列值非空(NOT NULL)

Sno CHAR(9) NOT NULL,

列值唯一(UNION)

Dname CHAR(9) UNIQUE NOT NULL,

检查列值是否满足一个条件表达式(CHECK短语)

#sex只允许取男女

Ssex CHAR(2) CHECK(Ssex IN('男','女')),

当往表中插入元组或修改属性的值时,关系数据库管理系统将检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行。

3.2元组上的约束条件

在CREATE TABLE语句中可以使用CHECK短语定义元组上的约束条件,元组级的限制可以设置不同属性之间的取值的相互约束条件。

#创建表时规定性别是男性时名字不能以Ms打头

CHECK (Ssex='女'OR Sname NOT LIKE 'Ms.%')

4.完整性约束子句

SQL在CREATE TABLE 语句中提供了完整性约束子句CONSTRAINT,用来对完整性约束条件命名,从而可以灵活的增加或删除一个完整性约束条件。

CONSTRAINT 完整性约束条件名 完整性约束条件

#完整性约束条件包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK短语等

修改表中的完整性限制

#删除

ALTER TABLE table_name DROP CONSTRAINT 完整性约束条件名

#添加

ALTER TABLE table_name ADD CONSTRAINT 名 条件

5.断言

SQL使用CREATE ASSERTION语句,通过声明性断言来指定更具一般性的约束,可以涉及多个表或聚集操作的约束,使断言不为真值的操作都会被拒绝执行。

CREATE ASSERTION 断言名 CHECK子句

例子:

CREATE ASSERTION num

        CHECK(

        60>=(

                SELECT COUNT(*)

                FROM course,sc

                WHERE sc.cno=course.cno AND course.name='数据库'

                )

);

删除断言:

DROP ASSERTION 断言名

6.触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊过程,一旦定义,触发器将被保存在数据库服务器中,任何用户对表的增删查改均由服务器自动激活相应的触发器,在关系数据库管理系统核心层进行集中的完整性控制。

CREATE TRIGGER 触发器名#每当触发事件发生时,触发器被激活

{BEFORE|AFTER} 触发事件 ON 表名#指明触发器激活的时间在执行触发事件前或后

REFERENCING NEW|OLD ROW AS 变量#REFERENCING指出引用的变量

FOR EACH{ROW|STATEMENT}#定义触发器的类型,指明动作执行的频率,EACH ROW是行级触发器,EACH STATEMENT是语句级触发器

[WHEN 触发条件] 触发动作体#仅当触发条件为真时才执行触发动作体

触发事件:触发事件可以是INSERT,UPDATE,DELETE,也可以是这几个事件的组合,如INSERT OR UPDATE;还可以是UPDATE OF 列名表明修改哪些列时触发服务器

REFERENCING NEW|OLD ROW AS 变量:的ROW也可以是TABLE等,用来指明处理后的触发事件的对象和处理前的触发事件的对象。

例子:当对表SC的grade值进行修改时,若分数增加10%,则将此处操作记录到另一个表中,其中oldgrade是修改前的分数,newgrade是修改后的分数。

CREATE TRIGGER sc_t

AFTER UPDATE OF grade ON SC

 

REFERENCING 

        OLD ROW AS oldtuple

        NEW ROW AS newtuple

FOR EACH ROW

WHEN(newtuple.grade>=1.1*oldtuple.grade)

INSERT INTO SCNEW(……)

VALUES(……)

删除触发器:DROP TRIGGER 触发器名 ON 表名文章来源地址https://www.toymoban.com/news/detail-556670.html

到了这里,关于MySQL数据库完整性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库系统头歌实验八 数据库完整性、安全设计

    第1关:执行 CREATE USER 创建以2022100904为用户名的用户,同时设置其密码为root1234 第2关:给予创建的用户2022100904在mydata数据库中授予\\\"J\\\" 表 SELECT 权限(注意创建权限时的用户名为\\\'用户名\\\'@\\\'localhost\\\'),不允许转授此权限给其它用户。 第3关:给予创建的用户2022100904、2022100908在

    2024年02月05日
    浏览(103)
  • 实验四 数据库安全性和完整性

    一.实验目的 1.加深对数据库安全性和完整性理解; 2.学会授权与回收; 4.理解并体会数据库实体完整性、参照完整性、用户定义的完整性约束条件的作用。 二. 实验内容 对已建好的各表和用户进行权限的授权和回收操作,进行完操作之后检查授权过的用户是否真正具有授予

    2024年02月08日
    浏览(47)
  • 深入理解数据库事务:确保数据完整性与一致性

    在现代信息系统中,数据是至关重要的资产之一。作为一名后端开发人员,与数据库的交道必不可少,为了确保数据的完整性、一致性和可靠性,数据库引入了事务的概念。本次将带您深入了解数据库事务的重要性、特性以及如何在应用程序中正确地使用事务来维护数据的稳

    2024年02月12日
    浏览(45)
  • 【数据库 Microsoft SQL Server】实验五 数据库安全性与完整性实验

    一、实验目的 1、掌握数据库的自主存取控制方法,学会使用SQL数据控制语句来进行授权控制和权限回收,理解视图安全机制。 2、掌握数据库的三类完整性约束,定义数据库完整性及违约处理,通过违约操作实验来理解数据库完整性机制。 二、实验环境与实验准备工作 实验

    2024年02月08日
    浏览(45)
  • mysql索引--普通索引,唯一索引,主键索引,参照完整性约束,数据完整性约束

    -- 方法1:create index -- 对employee表的员工部门号列创建普通索引depart_ind -- create index depart_ind on employees(员工部门号); -- 对employee表的姓名和地址列创建复合索引ad_ind; -- create index ad_ind on employees(姓名,地址); -- 对departments表的部门名称列创建唯一索引un_ind; -- create unique index un_ind

    2023年04月21日
    浏览(44)
  • 【MySQL事务】保证数据完整性的利器

    事务: 事务就是将多个SQL给打包在一起,组成一个整体。组成这个整体的各个SQL,要么全部成功,要么全部失败。 举例说明: 情人节到了,滑稽老铁打算给他女朋友小美发给红包,但是他又害怕小美不收,于是他想到了一个办法就是通过银行卡进行转账。他给小美转账了

    2024年02月08日
    浏览(40)
  • MySQL修炼手册11:事务处理:确保数据的一致性与完整性

    在探索数据管理的世界中,理解如何在数据库中使用事务处理,无疑是一项关键的能力。在处理复杂的数据库操作,尤其是在你试图在多个表或数据库中更新数据时,事务可以确保这些更改具有原子性、一致性、隔离性和持久性,即ACID。因此,掌握事务对任何数据库专业人员

    2024年01月21日
    浏览(78)
  • 软件测试|MySQL主键约束详解:保障数据完整性与性能优化

    简介 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种数据约束,其中主键约束是其中最重要的之一

    2024年02月02日
    浏览(48)
  • Mysql列的完整性约束(调整列的完整性约束)

    目录 一、 主键PK、外键FK和 唯一键UK 新增 删除         修改         修改默认值DEFAULT、自增长和非空NK 总结 alter table [table_name] add constraint [constraint_name] [unique key| primary key|foreign key] ([column_name])         1.通过如下命令查询键值的约束名:                 

    2024年02月01日
    浏览(53)
  • 软件测试/测试开发/全日制|MySQL主键约束详解:保障数据完整性与性能优化

    简介 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种数据约束,其中主键约束是其中最重要的之一

    2024年02月19日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包