`
董宗磊
  • 浏览: 65636 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

当前位置 :| 建站学>数据库>数据库综合> 数据库的约束简介

阅读更多

 

约束的简介

数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。

完整性约束是一种规则,不占用任何数据库 空间。完整性约束存在数据字典中,在执行SQL 或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。

约束类型

总的来说有五种:唯一性和主键约束、外键约束、检查约束、空值约束、默认值约束,

有五大关键词,UNIQUE和Primary Key, Foreign Key, CHECK, NOT NULL, DEFAULT

1。唯一性和主键约束。

要求某一列,或几列不能有重复的值,建立主键约束和唯一约束时,Oralce会基于约束列自动建立唯一索引;主键约束不允许为NULL,唯一约束允许为NULL,一张表只能建立一个主键约束。唯一性和主键约束类似,只是关键词不同而已,语法一致。

创建约束

CREATE TABLE TABLE_NAME
(
    COL1 VARCHAR2(32) NOT NULL PRIMARY KEY,
)

CREATE TABLE TABLE_NAME
(
    COL1 VARCHAR2(32) NOT NULL CONSTRAINT PK_ID PRIMARY KEY,
)

CREATE TABLE TABLE_NAME
(
    COL1 VARCHAR2(32) NOT NULL,
    COL2 VARCHAR2(32) NOT NULL Foreign Key,
    CONSTRAINT PK_TABLE_NAME PRIMARY KEY(COL1,COL2)
)

修改约束

ALTER TABLE Table_Name
ADD CONSTRAINT PK_Table_Name PRIMARY KEY NONCLUSTERED (Col1)【这里表明了是聚集还是非聚集主键索引】

如果唯一性约束保护多个数据列,那么唯一性约束要作为表约束增加。语法如下:
CONSTRAINT CONSTRAINT_NAME (COL1,COL2) UNIQUE USING INDEX TABLESPACE (TABLESPACE_NAME) STORAGE (STORED CLAUSE)

 2。外键约束。

剩下的约束写法都是差不多,这里就不多举例了。

CREATE TABLE TABLE_NAME
(
    COL1 VARCHAR2(32) NOT NULL REFERENCES PRIMARY_TABLE(PRIMARY_COL) ON DELETE CASCADE,
)

CREATE TABLE TABLE_NAME
(
    COL1 VARCHAR2(32) NOT NULL,
    CONSTRAINT FK_TABLE_NAME FOREIGN KEY REFERENCES PRIMARY_TABLE(PRIMARY_COL) ON DELETE SET NULL
)

这里需要注意的是ON 后面的内容。这个是关联的关键。与删除修改密切相关。

  • NO ACTION:更新或删除父表中的数据时,如果会使子表中的外键违反引用完整性,该动作将被禁止执行。
  • CASCADE: 当父表中被引用列的数据被更新或删除时,子表中的相应的数据也被更新或删除。
  • SET NULL:当父表数据被更新或删除时,子表中的相应数据被设置成NULL值,前提是子表中的相应列允许NULL值。
  • SET DEFAULT:当父表数据被更新或删除时,子表中的数据被设置成默认值。前提是子表中的相应列设置有默认值。

3。检查约束。

检查列的类型和范围。语法:CONSTRAINT [constraint_name] CHECK (condition); 比如:check(Age >2)

还有两种方式,一种是默认值(default sysdate或者 default 1),一种是限制空值Not Null【NOT NULL只能在列级定义】, 这也可以看成是约束,它的作用也是进行数据的完整性控制。

修改默认约束:

ALTER TABLE TABLENAME
ADD CONSTRAINT DF_TABLENAME_COL1 DEFAUIT('22') FOR COL1

修改NOT NULL是四个约束当中最特殊的,直接用Modify Col_Name NOT NULL 即可

删除、禁用、启用约束、修改约束名

  1. ALTER TABLE table_name
  2. DROP CONSTRAINT constraint_name(删除约束)
  3. DISABLE CONSTRAINT constraint_name;(启用约束)
  4. ENABLE CONSTRAINT constraint_name;(禁用约束)ALTER TABLE table_name
  5. RENAME CONSTRAINT old_constraint_name TO new_constraint_name(修改约束名)

select  ' alter table  ' || table_name || '  disable constraint  ' || constraint_name || ' ; '  from user_constraints  where  constraint_type = ' R ' ;【禁用所有外键约束】

select  ' alter table  ' || table_name || '  enable constraint  ' || constraint_name || ' ; '  from user_constraints  where  constraint_type = ' R ' ;【启用所有外键约束】

select  ' alter table  ' || table_name || '  drop constraint  ' || constraint_name || ' ; '  from user_constraints  where  constraint_type = ' R ' ;【 删除所有外键约束 】

所有约束信息:SELECT * FROM user_constraints

分享到:
评论

相关推荐

    省市县数据库sql生成代码

    在IT行业中,数据库是存储和管理数据的核心工具,尤其在处理地理位置信息时,如省市县数据,一个良好的数据库设计显得尤为重要。"省市县数据库sql生成代码"是指通过SQL语句来创建包含中国省市县信息的数据库结构。这...

    SQL之-建库、建表、建约束、关系SQL基本语句大全.doc

    ### SQL之-建库、建表、建约束、关系SQL基本语句大全 #### 建库 在SQL Server中创建数据库(简称“建库”)是一项基础且重要的任务。根据给定的部分内容,我们可以看到一种典型的建库方法: ```sql IF EXISTS...

    phpwind9.x如何从数据库更改用户名或者用户ID?共

    在PHPWind 9.x这个流行的开源社区建站系统中,管理员有时可能需要对数据库中的用户信息进行修改,比如更改用户名或用户ID。这通常是为了管理需求、数据迁移或解决特定问题。下面将详细介绍如何操作。 首先,理解...

    公交查询系统—数据库课程设计报告.pdf

    1. 建数据库和表:使用SQL语句创建数据库和对应的表,定义每个字段的数据类型、长度、约束等属性。 2. 数据填充:导入或手动输入初始数据,如线路信息、站点信息等,以便系统能提供查询服务。 3. 视图和索引:为了...

    phpwind73数据库结构手册(UTF8)

    PHPWind是一款广泛使用的开源社区建站软件,它基于PHP和MySQL开发,旨在帮助用户快速构建功能强大的互动社区。在PHPWind 7.3版本中,数据库设计经过精心优化,以提高性能和稳定性,同时满足社区功能的多样性需求。 ...

    公交查询系统—数据库课程设计分析方案.doc

    使用SQL语句创建数据库和对应的表,设置主键、外键约束,确保数据的一致性和完整性。 5.2 **查询实现** 编写SQL查询语句,实现线路查询、站点查询等功能。例如,使用JOIN操作连接Route、Stop和Timetable表,根据...

    MySQL 数据库设计复习笔记及项目实战

    论坛)、ECSHOP(电子商务系统)、SUPESITE(社区建站系统)、UCHOME(社交网络平台)以及UCENTER(用户中心)的数据库结构,可以从这些成熟系统中学习到如何设计用户管理、权限控制、内容发布等功能的数据库结构。...

    JSP+SQL建站实训

    在“JSP+SQL建站实训”项目中,我们将深入探讨如何使用Java Server Pages (JSP) 和 SQL Server 数据库来构建一个功能完善的网站。这是一个非常适合短期暑期实训的课程,旨在帮助学员掌握Web开发的基本技能。 JSP是...

    SQL之-建库、建表、建约束、关系SQL基本语句大全[归类].pdf

    #### 修改表格添加约束: ```sql ALTER TABLE wf ADD CONSTRAINT 约束名 约束类型 具体的约束说明; ``` #### 示例: ```sql ALTER TABLE tableok ADD CONSTRAINT Pk_cola_primary PRIMARY KEY(cola_primary, col1);...

    网站建站免费模版-8套

    网站建站免费模版是许多初学者和小型企业构建在线存在的重要资源,它们提供了一种快速、经济且高效的方式,让没有深厚编程基础的人也能创建专业级别的网站。在这个压缩包中,你将找到8套精心设计的网站模板,涵盖了...

    藏经阁-阿里一键建站技术解密.pdf

    通过阿里云的自研建站平台,用户可以在基础设施准备就绪后,短时间内完成包括运维系统、数据库、缓存、中间件、会员、交易、导购等多个电商核心系统的部署,整个过程自动化程度极高,几乎无需人工介入。 这项技术的...

    Apple WEB建站需求说明书

    Apple WEB建站需求说明书是为构建一个针对Apple公司的商业网站而制定的重要文档,它详尽地阐述了项目的目标、功能需求、技术规格以及运行环境要求。这份文档的目的是确保开发团队能够按照用户的需求来设计和实施网站...

    深色橱柜企业网站自助管理建站系统无限制版

    【标题】"深色橱柜企业网站自助管理建站系统无限制版" 提供了一套全面的解决方案,旨在帮助橱柜行业的企业快速建立并管理自己的官方网站。这个系统的特点在于其深色主题设计,通常深色调能够展现出专业且高端的形象...

    双鱼林图书信息管理系统学习版.zip

    数据库的设计包括表格结构定义、字段类型选择以及数据完整性约束等,确保信息的准确性和一致性。 3. 用户界面设计:友好的用户界面是系统易用性的关键。双鱼林系统采用图形用户界面(GUI),通过菜单、按钮、对话框...

    2021-2022计算机二级等级考试试题及答案No.10254.docx

    10. 参照完整性的约束:实施参照完整性后,子表的相关字段不能包含主表主键中不存在的值,防止了数据不一致。 11. WWW的性质:WWW(World Wide Web)是基于超文本的,但不单纯是一种信息检索工具,它还包括超链接、...

    Catfish(鲶鱼) Blog v4.0.0.zip

    如果是开源项目,常见的许可协议有MIT、GPL、Apache等,每种许可协议对用户的行为有不同的约束。 `application` 目录通常包含了博客系统的核心业务逻辑和控制层。在这里,你可以找到处理用户请求、管理数据、实现...

    服务器安全管理办法.doc

    操作系统安装与配置,服务器安全设置,补丁更新,系统安全检测 WEB服务(IIS)安装与配置,ASP/ASPX网站配置,数据库(MSSQL)安装与配置 主站网站维护(网站) 网站服务器维护(所有建站服务器及正在运行VPS) ...

    MySQL 5.1中文参考手册(pdf)

    MySQL 5.1中文参考手册是一本非常宝贵的资源,它为使用MySQL数据库的开发者和管理员提供了详尽的...同时,"jz123.cn.txt"和"建站之家.url"可能是额外提供的网站链接或资源,可能有关于MySQL的更多信息或者社区支持。

    衡器公司网站源码

    【衡器公司网站源码】是一个专为衡器行业设计的网站模板,包含了构建一个完整且功能丰富的在线平台所需的所有代码资源。...如果你不具备这些技能,可能需要寻求专业开发者的帮助,或者使用可视化建站工具来辅助操作。

    aspcms2.52

    综上所述,AspCms2.52是一个全面的功能强大的ASP内容管理系统,采用Access数据库,适合小型企业和个人建站使用。通过提供的文本文件,用户可以了解系统的标签用法、更新内容、安装步骤以及版权信息,而“upload”...

Global site tag (gtag.js) - Google Analytics