oracle 之 约束(第三章)

本文介绍Oracle数据库中的五种约束类型:检查、非空、唯一、主键及外键约束,并演示如何创建、查询及修改这些约束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle 之 约束

   oracle的constraint有五种:

       1:检查约束

       2:非空约束

       3:唯一约束

       4:主键约束

       5:外键约束

         一)   下面通过操作说明约束的创建方法:

 

SQL> create table bookinfo(
  2  bookid number(13),   
  3  bookname varchar2(20),
  4  publish varchar2(30),
  5  pubdate date,
  6  price number(9,3),
  7  author varchar2(20),
  8  store number not null,
  9  reader number(20),
 10  remarks varchar2(25),
 11  constraint chk2_key check(price>10 and price<=200),
 12  constraint unique_key unique(bookname),
 13  constraint prima_key primary key (bookid),
 14  constraint foreign_key foreign key(publish) references PUBLISHINFO (PUBLISHID)
 15  );

Table created.

SQL> 


         二)查询该用户下创建的约束信息:

SQL> r
  1* select owner,constraint_name,constraint_type,table_name from user_constraints where table_name='BOOKINFO'

OWNER                          CONSTRAINT_NAME                C TABLE_NAME
------------------------------ ------------------------------ - ------------------------------
RHYS                           SYS_C0011171                   C BOOKINFO
RHYS                           CHK2_KEY                       C BOOKINFO
RHYS                           PRIMA_KEY                      P BOOKINFO
RHYS                           UNIQUE_KEY                     U BOOKINFO
RHYS                           FOREIGN_KEY                    R BOOKINFO

SQL> 

在user_constraints视图中C列表示:C代表检查约束,P代表主键约束,U代表唯一索引约束,R代表外键约束

 通过user_cons_columns这个视图可以看到该用户下所有的每个约束对应的表列的名字关系情况。

   eg:

     

SQL> select * from user_cons_columns;
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME                                                                        POSITION
------------------------------ ------------------------------ ------------------------------ -------------------------------------------------------------------------------- ----------
RHYS                           BIN$2V5HaJApQoLgQyfgEwp/yg==$0 BIN$2V5HaJAsQoLgQyfgEwp/yg==$0 BOOKNAME                                                                                  1
RHYS                           BIN$2V5HaJAoQoLgQyfgEwp/yg==$0 BIN$2V5HaJAsQoLgQyfgEwp/yg==$0 BOOKID                                                                                    1
RHYS                           BIN$2V5HaJAnQoLgQyfgEwp/yg==$0 BIN$2V5HaJAsQoLgQyfgEwp/yg==$0 PRICE                                                                            
RHYS                           BIN$2V5HaJAmQoLgQyfgEwp/yg==$0 BIN$2V5HaJAsQoLgQyfgEwp/yg==$0 STORE                                                                            
RHYS                           FOREIGN_KEY                    BOOKINFO                       PUBLISH                                                                                   1
RHYS                           UNIQUE_KEY                     BOOKINFO                       BOOKNAME                                                                                  1
RHYS                           PRIMA_KEY                      BOOKINFO                       BOOKID                                                                                    1
RHYS                           BIN$2V5HaJAiQoLgQyfgEwp/yg==$1 BIN$2V5HaJAlQoLgQyfgEwp/yg==$0 BOOKNAME                                                                                  1
RHYS                           BIN$2V5HaJASQoLgQyfgEwp/yg==$0 BIN$2V5HaJATQoLgQyfgEwp/yg==$0 STORE                                                                            
RHYS                           BIN$2V5HaJARQoLgQyfgEwp/yg==$0 BIN$2V5HaJATQoLgQyfgEwp/yg==$0 BOOKNAME                                                                         
RHYS                           BIN$2V5HaJAQQoLgQyfgEwp/yg==$0 BIN$2V5HaJATQoLgQyfgEwp/yg==$0 BOOKID                                                                           
RHYS                           BIN$2V5HaJAhQoLgQyfgEwp/yg==$1 BIN$2V5HaJAlQoLgQyfgEwp/yg==$0 BOOKID                                                                                    1
RHYS                           BIN$2V5HaJAgQoLgQyfgEwp/yg==$1 BIN$2V5HaJAlQoLgQyfgEwp/yg==$0 PRICE                                                                            
RHYS                           BIN$2V5HaJAfQoLgQyfgEwp/yg==$1 BIN$2V5HaJAlQoLgQyfgEwp/yg==$0 STORE                                                                            
RHYS                           BIN$2V5HaJAOQoLgQyfgEwp/yg==$0 BIN$2V5HaJAPQoLgQyfgEwp/yg==$0 STORE                                                                            
RHYS                           PRI_KEY                        PUBLISHINFO                    PUBLISHID                                                                                 1
RHYS                           UNIQUE_CHK_KEY                 BOOKINFO_03                    BOOKID                                                                                    1
RHYS                           SYS_C0011147                   BOOKINFO_03                    BOOKID                                                                           
RHYS                           BIN$2V5HaJAeQoLgQyfgEwp/yg==$1 BIN$2V5HaJAlQoLgQyfgEwp/yg==$0 PUBLISH                                                                          
RHYS                           SYS_C0011145                   BOOKINFO_02                    STORE                                                                            
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME                                                                        POSITION
------------------------------ ------------------------------ ------------------------------ -------------------------------------------------------------------------------- ----------
RHYS                           BIN$2V5HaJAdQoLgQyfgEwp/yg==$1 BIN$2V5HaJAlQoLgQyfgEwp/yg==$0 BOOKID                                                                           
RHYS                           FK_DEPTNO                      EMP                            DEPTNO                                                                                    1
RHYS                           PK_DEPT                        DEPT                           DEPTNO                                                                                    1
RHYS                           SYS_C0011142                   TAIAN                          SUBJECT                                                                          
RHYS                           PK_EMP                         EMP                            EMPNO                                                                                     1
 
25 rows selected
 
SQL> 

注意:带BIN开头的约束名都是已经放入回收站的,可以不用管它,如果想清空的话,可以purge该用户的回收站。如删除当前用户下回收站信息:purge recyclebin;

       三)修改已创建的约束情况:

       1)添加约束命令格式

            

alter table table_name add constraint  primariy_name primary key (column_name);
alter table table_name add constraint foreign_name foreign key (column_name) references table_name(column_name;
alter table table_name add constraint unique_name unique(column);
alter table table_name add constraint check_name check(value);
alter table table_name modify column not null;

     2)删除表的约束条件

          

alter table table_name drop constraint constraint_name;


   eg:

        

SQL> select owner,constraint_name,constraint_type,table_name from user_constraints where table_name='BOOKINFO';

OWNER                          CONSTRAINT_NAME                C TABLE_NAME
------------------------------ ------------------------------ - ------------------------------
RHYS                           CHK2_KEY                       C BOOKINFO
RHYS                           PRIMA_KEY                      P BOOKINFO
RHYS                           UNIQUE_KEY                     U BOOKINFO
RHYS                           FOREIGN_KEY                    R BOOKINFO

SQL> alter table bookinfo drop constraint CHK2_KEY;

Table altered.

SQL> select owner,constraint_name,constraint_type,table_name from user_constraints where table_name='BOOKINFO';

OWNER                          CONSTRAINT_NAME                C TABLE_NAME
------------------------------ ------------------------------ - ------------------------------
RHYS                           PRIMA_KEY                      P BOOKINFO
RHYS                           UNIQUE_KEY                     U BOOKINFO
RHYS                           FOREIGN_KEY                    R BOOKINFO

SQL> 

 

    注意:如果想把表中某一列的非空约束去掉,那么可以使用:alter  table  table_name modify column_name NUll;

eg:

         

SQL> desc bookinfo;
 Name                                                                          Null?    Type
 ----------------------------------------------------------------------------- -------- ----------------------------------------------------
 BOOKID                                                                        NOT NULL NUMBER(13)
 BOOKNAME                                                                               VARCHAR2(20)
 PUBLISH                                                                                VARCHAR2(30)
 PUBDATE                                                                                DATE
 PRICE                                                                                  NUMBER(9,3)
 AUTHOR                                                                                 VARCHAR2(20)
 STORE                                                                         NOT NULL NUMBER
 READER                                                                                 NUMBER(20)
 REMARKS                                                                                VARCHAR2(25)

SQL> alter table bookinfo modify STORE NULL;

Table altered.

SQL> DESC BOOKINFO;
 Name                                                                          Null?    Type
 ----------------------------------------------------------------------------- -------- ----------------------------------------------------
 BOOKID                                                                        NOT NULL NUMBER(13)
 BOOKNAME                                                                               VARCHAR2(20)
 PUBLISH                                                                                VARCHAR2(30)
 PUBDATE                                                                                DATE
 PRICE                                                                                  NUMBER(9,3)
 AUTHOR                                                                                 VARCHAR2(20)
 STORE                                                                                  NUMBER
 READER                                                                                 NUMBER(20)
 REMARKS                                                                                VARCHAR2(25)

SQL> 


   注意:数据库没有修改约束这种情景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值