怎么检查数据库的完整性约束

怎么检查数据库的完整性约束,第1张

数据完整性强制数据完整性可确保数据库中的数据质量。例如,如果输入了 employee_id 值为 123 的职员,那么该数据库不应允许其他职员使用同一 ID 值。如果计划将 employee_rating 列的值范围设定为从 1 到 5,则数据库不应接受 6。如果表有一 dept_id 列,该列存储职员的部门编号,则数据库应只允许接受公司中的有效部门编号。

用户定义完整性实体完整性实体完整性将行定义为特定表的唯一实体。实体完整性强制表的标识符列或主键的完整性(通过索引、UNIQUE 约束、PRIMARY KEY 约束或 IDENTITY 属性)。域完整性域完整性是指给定列的输入有效性。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可能值的范围(通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则)。引用完整性在输入或删除记录时,引用完整性保持表之间已定义的关系。在 Microsoft® SQL Server™ 2000 中,引用完整性基于外键与主键之间或外键与唯一键之间的关系(通过 FOREIGN KEY 和 CHECK 约束)。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。

强制引用完整性时,SQL Server 禁止用户进行下列 *** 作:

当主表中没有关联的记录时,将记录添加到相关表中。

更改主表中的值并导致相关表中的记录孤立。

从主表中删除记录,但仍存在与该记录匹配的相关记录。

SELECT constraint_name, table_name, r_owner, r_constraint_name

FROM all_constraints

WHERE table_name = 'TITLES' and owner = '表的schema';

这个是Oracle的,不知道你用的什么数据库,反正都是查询数据字典视图。

ADD CONSTRAINT PK_UID PRIMARY KEY(UID), 多了个逗号,在第二个IF前面就是上面这句德最后那个逗号是多余的 要去掉 可以用GO隔开两个T_Sql语句

用sql命令查看表结构

可以使用内置的存储过程sp_MShelpcolumns。

如查询表Tabel1的结构:

sp_MShelpcolumns 'Tabel1'

元数据简介

元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单一点就是"关于数据的信息",日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义。比如在管理、维护 SQL Server 或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息:

某个数据库中的表和视图的个数以及名称 ;

某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等;

某个表上定义的约束;

某个表上定义的索引以及主键/外键的信息。

下面我们将介绍几种获取元数据的方法。

获取元数据

使用系统存储过程与系统函数访问元数据

获取元数据最常用的方法是使用 SQL Server 提供的系统存储过程与系统函数。

系统存储过程与系统函数在系统表和元数据之间提供了一个抽象层,使得我们不用直接查询系统表就能获得当前数据库对象的元数据。

常用的与元数据有关的系统存储过程有以下一些:

系统存储过程 描述

sp_columns 返回指定表或视图的列的详细信息。

sp_databases 返回当前服务器上的所有数据库的基本信息。

sp_fkeys 若参数为带有主键的表,则返回包含指向该表的外键的所有表;若参数为带有外键的表名,则返回所有同过主键/外键关系与该外键相关联的所有表。

sp_pkeys 返回指定表的主键信息。

sp_server_info 返回当前服务器的各种特性及其对应取值。

sp_sproc_columns 返回指定存储过程的的输入、输出参数的信息。

sp_statistics 返回指定的表或索引视图上的所有索引以及统计的信息。

sp_stored_procedures 返回当前数据库的存储过程列表,包含系统存储过程。

sp_tables 返回当前数据库的所有表和视图,包含系统表。

常用的与元数据有关的系统函数有以下一些:

系统函数 描述

COLUMNPROPERTY 返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。

COL_LENGTH 返回指定数据库的指定属性值,如是否处于只读模式等。

DATABASEPROPERTYEX 返回指定数据库的指定选项或属性的当前设置,如数据库的状态、恢复模型等。

OBJECT_ID 返回指定数据库对象名的标识号

OBJECT_NAME 返回指定数据库对象标识号的对象名。

OBJECTPROPERTY 返回指定数据库对象标识号的有关信息,如是否为表,是否为约束等。

fn_listextendedproperty 返回数据库对象的扩展属性值,如对象描述、格式规则、输入掩码等。

由于我们无法直接利用到存储过程与函数的返回结果,因此只有在我们关心的只是查询的结果,而不需要进一步利用这些结果的时候,我们会使用系统存储过程与系统函数来查询元数据。

例如,如果要获得当前服务器上所有数据库的基本信息,我们可以在查询分析器里面运行:

EXEC sp_databases

GO

在返回结果中我们可以看到数据库的名称、大小及备注等信息。

SQL Server 的系统表非常多,其中最常用的与元数据查询有关的表有如下一些:

系统表 描述

syscolumns 存储每个表和视图中的每一列的信息以及存储过程中的每个参数的信息。

syscomments 存储包含每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的原始 SQL 文本语句。

sysconstraints 存储当前数据库中每一个约束的基本信息。

sysdatabases 存储当前服务器上每一个数据库的基本信息。

sysindexes 存储当前数据库中的每个索引的信息。

sysobjects 存储数据库内的每个对象(约束、默认值、日志、规则、存储过程等)的基本信息。

sysreferences 存储所有包括 FOREIGN KEY 约束的列。

systypes 存储系统提供的每种数据类型和用户定义数据类型的详细信息。

将系统存储过程、系统函数、信息架构视图与系统表结合使用,可以方便地让我们获得所有需要的元数据信息。

不知道你有没有pl/sql。在pl/sql的sql window 里写上你这你这个表的表名,按住ctrl键再用鼠标点这个表名,就会出现关于这个表的信息窗然后点击‘key’这个选项卡就可以看到唯一键约束,主键约束,外键,点击check可以看到其他完整性约束的名

不用写语句也很直观

这些都是建表是的一些 *** 作。其中的关系是指这张表和其他表的联系是什么,比如表a和表b之间:表a的主键在表b中为外键。这就需要在建表b的时候将外键列参照到表a的主键列。索引是为了给经常进行检索的列设置索引项,提高数据库检索性能。约束就更好理解了,比如给某一列添加什么什么的约束,就是用check约束了。比如:性别一列,值域只能是(男,女) 就是check(sex in (男,女))。大差不多,只要用的多了,自然而然的就知道这些东西了。

示例:

CREATE TABLE AA (

BB INT UNIQUE

);

SELECT

tabname AS [表名],

idxname AS [约束名称],

colname AS [约束列名]

FROM

sysindexes idx

JOIN sysindex_columns idxCol

ON (idxobject_id = idxColobject_id

AND idxindex_id = idxColindex_id

AND idxis_unique_constraint = 1)

JOIN systables tab

ON (idxobject_id = tabobject_id)

JOIN syscolumns col

ON (idxobject_id = colobject_id

AND idxColcolumn_id = colcolumn_id)

WHERE

tabname = 'AA'

结果:

表名 约束名称 约束列名

AA UQ__AA__3214B5C34460231C BB

以上就是关于怎么检查数据库的完整性约束全部的内容,包括:怎么检查数据库的完整性约束、怎么查询系统数据库pubs中titles表上都有哪些完整性约束、sql server 2005创建约束及查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10152179.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存