`
董宗磊
  • 浏览: 64604 次
  • 性别: 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

分享到:
评论

相关推荐

    Educoder数据库设计-博客系统.pdf

    ⽤户信息表(t_user) 设计⽤户信息表是设计数据库的第⼀步,和⼀般的⽹站类似,博客系统的⽤户信息有如下内容: 字段名称 字段名称 类型 类型 备注 备注 约束 约束 userId bigint ⽤户ID 主键,⾃增长,增量为1 ...

    服务器安全管理办法.doc

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

    深度学习(asp)网址导航系统 3.1.2(最新更新完美版)

    用本软件为他人建站并收取一定费用;用本软件提供SaaS(软件做为服务)服务。 2.3 不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。 2.4 禁止任何以获利为目的的分发本软件的行为。 2.5 未获...

    YIXUNCMS v2.0.4.9 SD版.zip

    “YIXUNCMS网站建站系统2.0.4.9SD版”是“2.0.4.8增强版”的升级版本,“2.0.4.9SD版”重新规划了前端视图与控制器,将 模块划分为“单页”“文章”“图片”“下载”“视频”五个主要模块,同时引入了公共缓存机制,...

    YIXUNCMS企业网站建设系统SD中英双语版 v2.0.4.9.zip

    “YIXUNCMS网站建站系统2.0.4.9SD中英双语版”是“2.0.4.9SD简体中文版”的姊妹版本,是为了迎合企业对于多语言网站版本的需求而发布的,“2.0.4.9中英双语版”使用了中英数据单条并存的设计方法,以简化管理员在...

    【批量下载】【优秀论文9】《中国人口增长预测模型》等.zip

    建 立直达数据库 Q 作为数据基库,根据用户需求建立不同目标的 0-1 规划模型运用邻接 算法与 Lingo 分别求解,最终方案集通过多目标分层序列排序输出到用户终端。 第一问,在数据处理阶段将直行、环行线路分别抽象为...

    ShuipFCMS内容管理系统 v1.3.0.rar

    强大的内容模型可以适应不同的内容需求,让您快速建站! 模块扩展 根据自身需求不同,可以很方便的开发模块进行扩展。 插件扩展 为网站运营中实现各种各样的方便与快捷。 安全防护 基于ThinkPHP框架,严格的代码书写...

    iwebshop电子商务系统

    结合iWebExchanger,iWebShop不仅可以与iWebAX家族产品组合建站,也可以与其他建站程序方便整合。 5、方便二次开发 iWebShop采用php5的mvc程序架构,代码结构清晰,注释明确,易于理解,并提供完整的开发文档,便于...

    Arliclecms 网站系统 v0.62 stable

    <p><fontface>Arlicle是小的,为中小企业,学校,个人的灵活建站,不是为门户类型的站来解决的问题,网站管理人员真正可以做到很方便的网站维护,一键备份,恢复,灵活的信息发布,要是你在外地出差,你也可以通过...

    开源电子商务iWebShop系统(网店) v3.1.15030300

    iWebShop集成了一切网店必要的功能模块,且不臃肿,是您首选建站绿色程序。其 100% 的源码开放性更使得无数开发者和模板设计者参与其中! 作为开源的LAMP网店系统,iWebShop提供了一套轻量级的支持库,这使...

    开源电子商务iWebShop系统(网店) v5.5.190303.zip

    iWebShop是一款基于【PHP语言】 【MYSQL数据库】开发的开源的WEB电商B2B2C(平台自营 商家入驻)建站系统,采用MVC架构(Yii框架思想)设计模式精心设计的一款产品,它功能丰富,使用简单,架构优良,安全性高,具有...

    YIXUNCMS网站建设系统

    “YIXUNCMS网站建站系统2.0.4.9SD版”是“2.0.4.8增强版”的升级版本,“2.0.4.9SD版”重新规划了前端视图与控制器,将 模块划分为“单页”“文章”“图片”“下载”“视频”五个主要模块,同时引入了公共缓存机制,...

    网店源代码 很方便安装哦!

    面向对象:1) 建站程序人员或开独立网店者:各类企业,个体,个人、店主和淘宝易趣等C2C平台上的专业卖家,深受他们青睐。可通过此网店源码或后台简单设置下,即可变成更具有自己风格或个性化的网店,所以可通过此源码...

Global site tag (gtag.js) - Google Analytics