当前位置:操作系统 > Unix/Linux >>

数据库约束和视图问题


数据库约束和视图问题
 
[sql] 
--约束  
--****************************************************************
--非空约束:(not null)  
   * 确保字段值不允许为空  
   * 与其他约束相比是唯一只能在字段级定义  
     
  --在列级定义   
  create table EMPLOYEESNOTNULL  
  (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20) not null,--在列级定义   
    LAST_NAME      VARCHAR2(25)  
  )  
    www.zzzyk.com  
  --在表的外部定义约束  
  create table EMPLOYEESNOTNULL_01  
  (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25)  
  )  
    
  alter table EMPLOYEESNOTNULL_01  
  modify FIRST_NAME not null  
--******************************************************************************************  
--唯一性约束(UNIQUE)  
  * 唯一性约束条件确保所在的字段或者字段组合不出现重复值  
  * 唯一性约束条件的字段允许出现(1或多个)空值  
  * Oracle将为唯一性约束条件创建对应的唯一性索引  
       注:如果字段有值,要唯一,但空值可以出现多个  
  
--方法一 在列级定义  
  create table emp_un_01  
  (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20) unique,  --列级定义  
    LAST_NAME      VARCHAR2(25)  
  )  
    
--方法二  在表级定义约束  
   --在表级定义约束额语法格式  
      constraint  约束的名称    约束的类型(字段1,字段2)  
        * 约束的名称 自定义  
        * 约束的类型(unique,primary key)  
        * (字段1,字段2) 如果有多个字段,中间用,隔开  
          
 create table emp_un_02  
 (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25),  
    constraint  un_emp_un_02  unique(first_name)  --在表级定义约束  
 )  
   www.zzzyk.com  
--方法三 在表的外部定义约束  
 --语法结构:  
   alter table table_name  
   add  constraint  约束的名称    约束的类型(字段1,字段2)  
        * 约束的名称 自定义  
        * 约束的类型(unique,primary key)  
        * (字段1,字段2) 如果有多个字段,中间用,隔开  
 create table emp_un_03  
 (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25)  
 )  
   
 alter table emp_un_03  
 add constraint  un_emp_un_03  unique(first_name)  
  www.zzzyk.com  
 --方法四(在表级定义联合唯一)  
 create table emp_un_04  
 (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25),  
    constraint  un_emp_un_04  unique(first_name,LAST_NAME)  --在表级定义约束  
 )  
   
--方法五(在表的外部定义)  
 create table emp_un_05  
 (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25)  
 )  
    www.zzzyk.com  
 alter table  emp_un_05  
 add constraint  un_emp_un_05  unique(first_name,LAST_NAME)  
  
--******************************************************************************************  
--主键约束( PRIMARY KEY)  
  * 主键从功能上看相当于非空且唯一  
  * 一个表中只允许一个主键  
  * 主键是表中能够唯一确定一个行数据的字段  
  * 主键字段可以是单字段或者是多字段的组合  
  * Oracle为主键创建对应的唯一性索引  
    
--方法一 在列级定义  
 create table emp_pk_01  
 (  
    EMPLOYEE_ID    NUMBER(6) primary key,  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25)  
 )  
   
 --方法二 在表级定义  
 create table emp_pk_02  
 (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25),  
    constraint pk_emp_pk_02 primary key(EMPLOYEE_ID)  
 )  
    www.zzzyk.com  
--方法三  在外部定义  
 create table emp_pk_03  
 (  
    EMPLOYEE_ID    NUMBER(6),  
    FIRST_NAME     VARCHAR2(20),  
    LAST_NAME      VARCHAR2(25)  
 )  
 alter table emp_pk_03  
 add constraint pk_emp_pk_03 primary key(EMPLOYEE_ID)  
  
--方法四(联合主键) 在表级定义  
--账号表  
create table account_01  
(  
  accounid varchar2(18) primary key,  --账号  
  balance  number(10,2)    --余额  
)  
  
--存款信息表  
create table inaccount_01  
(  
  accounid   varchar2(18),    --账号  
  inbalance  number(10,2),    --存入金额  
  indate     timestamp,        --存款时间  
  constraint pk_inaccount_01 primary key(accounid,indate)  
)  
  
insert into inaccount_01(accounid,inbalance,indate) values('1111
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,