问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 约束

发布网友 发布时间:2022-04-08 11:25

我来回答

4个回答

懂视网 时间:2022-04-08 15:46

  <1> 定义规则

  <2> 确保数据的完整性

· 约束

  <1> 非空约束

      ① 创建表时为字段添加非空约束

        CREATE TABLE table_name (

          column_name data_type NOT NULL, ... );

      ② 为已存在的表字段添加非空约束

        ALTER TABLE table_name MODIFY column_name data_type NOT NULL;

      ③ 删除已存在的表字段的非空约束

        ALTER TABLE table_name MODIFY column_name data_type  NULL;

   <2> 主键约束

      作用:  确保表中每条记录的唯一性

      设置为主键的字段必须非空,唯一,且一张表中只能有一个主键,但是一个主键也可以由多个字段组成,称为联合主键.  

      ① 创建表时设置主键约束

        CREATE TABLE table_name(

          column_name data_type PRIMARY KEY,  ...  );

        或        

         CREATE TABLE table_name(

          column_name data_type ,  ...

          CONSTRAINT constraint_name PRIMARY KEY(column_name1,column_name2....) );

        P:第二种方式设置的约束称为表级约束,可以设置联合主键.

           可以从数据字典user_constraints中查看某个表的约束信息.

 

      ② 在已存在的表中添加主键约束

        ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name1,column_name2 , ...); 

        (注意: 添加主键时,必须确保此字段下的数据都是非空且唯一的)

      ③ 修改主键约束的名称

        ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_constraint_name; 

      ④ 删除主键约束      

        ALTER TABLE table_name DROP CONSTRAINT constraint_name ;

        或

        ALTER TABLE table_name DROP PRIMARY KEY [CASCADE] ;        

        P: 禁用/启用 约束

        ALTER TABLE table_name DISABLE/ENABLE CONSTRAINT constraint_name ;

   <3> 外键约束

      ① 创建表时设置外键约束    

        CREATE TABLE table1 (

          column_name data_type REFERENCES table2 (column_name), ... );

        P: 一般称table1为从表,table2为主表,

        注意:  1. 设置外键时,引用的主表的字段必须是主键;

             2. 主外键必须是同一个数据类型;

             3. 外键字段的值必须来自对应的主键的值,或者为NULL; 

        或

        CREATE TABLE table1(

          column_name data_type , ...

          CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES table2 (column_name) [ON DELETE CASCADE] );          

      ② 在已存在的表中添加外键约束

        ALTER TABLE table1  ADD CONSTRAINT constraint_name

        FOREIGN KEY (column_name) REFERENCES table2(column_name) [ON DELETE CASCADE];

      ③ 删除外键约束

        ALTER TABLE table_name DROP CONSTRAINT constraint_name ;

 

 

   <4> 唯一约束  

      ① 唯一约束与主键约束的区别:

        1. 主键约束必须唯一且不能为NULL,唯一约束允许有一个NULL;

        2. 一张表中主键约束只能有一个,而唯一约束可以有多个;

      ② 创建表时设置唯一约束   

        CREATE TABLE table_name(

          column_name data_type UNIQUE , ... );

        或    

        CREATE TABLE table_name(

          column_name data_type , ...

          CONSTRAINT constraint_name UNIQUE(column_name));     

      ③ 在已存在的表中添加唯一约束

        ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);

      ④ 删除唯一约束

          ALTER TABLE table_name DROP CONSTRAINT constraint_name ; 

 

   <5> 检查约束

      作用: 使表中的值更具有实际意义

      ① 创建表时设置检查约束

        CREATE TABLE table_name(

          column_name data_type CHECK(expressions), ... );

        或

        CREATE TABLE table_name(

          column_name data_type , ...

          CONSTRAINT constraint_name CHECK(expressions));

      ② 在已存在的表中添加检查约束

        ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);

        ③ 删除检查约束

        ALTER TABLE table_name DROP CONSTRAINT constraint_name ;

 

· 小结

   <1> 主键约束一张表中只能有一个,但是一个主键可以由多个约束组成;

   <2> 外键约束是唯一一个涉及两个表之间的约束;

   <3> 只有非空约束只能在列级设置,不能再表级设置,且非空约束没有名称;

   <4> 可以通过user_constraints数据字典查看约束的名称.

(5)Oracle基础--约束

标签:

热心网友 时间:2022-04-08 12:54

因为有VALIDATE选项,所以会对表中原有的数据进行检查,所以A、B两个选项中A是正确的;
因为约束是 INITIALLY IMMEDIATE,所以不会在提交事务时才应用约束,所以C是错误的;
约束enable的过程中,禁止所有的DML操作,这是默认的特性

热心网友 时间:2022-04-08 14:12

本身就是这种功能啊,不管是数据库原有数据,还是以后的数据,都应该遵守约束的现*

热心网友 时间:2022-04-08 15:47

那位朋友说的很对啊,initially immediate表示立即校验,而不是等事务提交是再校验。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是个成本会计题,马上要考这道原题了,求大虾帮忙 财务管理类问题,求大虾帮忙,小弟感激不尽。具体问题看问题补充。_百度... 光影魔术手怎么换底色 光影魔术手换底色教程 ...米的绳子围绕一棵树干饶了6圈,还余下1.16米,这棵树干上的直径大约是... ...还余下1.16米,这棵树的树干的直径大约是多少米?求算式! ibm x3500 M5 服务器 运行时风扇声音好大,吵死了,可以下掉一个吗... IBMX3500 M5,最近老是出现自动关机的情况,需要把服务器电源拔掉半分钟... 治疗萎缩性胃炎的方法 怎么治萎缩胃炎 JYF-40FS06电饭煲190块买的是假的吗 oracle怎么约束 为什么索引会快,请高手告诉我索引的原理是什么? 索引原理面试 SqlServer应用索引的好处,c#中如何应用索引? oracle 为什么使用索引以后就可以提高查询效率?索引的工作原理是什么? windows搜索中的索引是什么意思,原理是什么 sql模糊查询的sql语句怎么写 sql模糊查询.net sql server 模糊查询语法 关于SQL语句的模糊查询 SQL千万级数据库模糊查询问题? EOS如何使用代码对命名SQL文件进行部署 程序开发中与本地的SQL sever2005数据库进行连接!!! sql server服务和sql server命名实例这两个概念有什么区别? c#怎么调用本地sql数据库 进行 查询 本地SQL查询是指什么(定义)? sql数据库重命名 我现在下了一个sql数据库 但是我怎么反映到我本地的SQL数据库里面? 什么是命名SQL oracle存储过程查找表数据插入另一个表中。。 oracle 查看约束 oracle约束 oracle表中的字段约束有哪几类 oracle约束查询语句 oracle的表级约束和列级约束的区别是什么 oracle 如何设置检查约束 ORACLE里的CHECK约束。。 请教我只安装了VS2015,怎么才能用VS2015本身自带的SQL创建数据库 请问VS2015如何动态创建ACCESS数据库? vs2015怎么添加数据库 vs2015 mvc ef怎么创建数据库 用2015版本的VS创建数据库 vs2015怎么建立数据库访问,shift alt c为什么不行 vs2015创建数据库后不能添加新表 visual studio 2015的数据库不能创建,求大神 新手刚用C#VS2015怎么连数据库 Visual studio 2015与wampserver如何建立sql数据库连接? 求助,VS2015怎么连接SQLite数据库,大神来吧 VS2015创建SQL Server时出现在与 SQL Server建立连接时出现与网络相关的特定 第一次安装vs2015 sql建立数据库失败 就是那个服务器的原因吧