<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
    約束作用:用來保持數據的完整性,防止無效數據進入到數據庫中。
    oracle數據庫中提供的5種約束,都是限定某個列或者列的組合的。
    1、主鍵約束(PRIMARY KEY):
    在一個表中能唯一的標識一行。主鍵可以限定在多個列上。
    3、唯一鍵約束(UNIQUE key):在一個表中能唯一的標識一行,唯一鍵也可以限定在多個列上。
    主鍵和唯一鍵的區別:
    a、一個表中最多只能有一個主鍵。可以多個唯一鍵。
    b、主鍵所限定的列不能為null,唯一鍵所限定的列可以為null.
    2、外鍵約束(FOREIGN key):
       引用表:有外鍵約束的列所在的表。
       被引用表:外鍵所引用的列。被引用的列只能是主鍵或者唯一鍵。
    4、非空約束(NOT null):表示該列上的數據不能有null值。
    5、檢查性約束(check):表示該列上的數據必須滿足某一個條件表達式。

    如何創建約束:
    1、在創建表的同時創建約束
       a.列級別約束:在每個列寫完之后寫約束。
              CREATE TABLE t_08132(id NUMBER(10) PRIMARY KEY ,
                                    NAME CHAR(10) NOT NULL,
                                    gender CHAR(2) CHECK (gender IN ('男','女')),
                                    email CHAR(20) UNIQUE
                                    )
              INSERT INTO t_08132 VALUES(1,'a','男','1@neusoft.com')                               
              INSERT INTO t_08132 VALUES(2,'a','男','2@neusoft.com')                               
              INSERT INTO t_08132 VALUES(3,'c','男','3@neusoft.com')                               
              INSERT INTO t_08132 VALUES(4,'d','','4@neusoft.com')                               
              INSERT INTO t_08132 VALUES(5,'e','妖','5@neusoft.com')       
              //外鍵約束
              CREATE TABLE t_08133( id NUMBER(10) PRIMARY KEY ,
                                    NAME CHAR(10) NOT NULL,
                                    deptno NUMBER(2) REFERENCES dept(deptno)                               
                                    )
              INSERT INTO t_08133 VALUES(1,'a',20) 
              //給約束命名         
              CREATE TABLE t_08134(id NUMBER(10) CONSTRAINT t4_id_pk PRIMARY KEY ,
                                    NAME CHAR(10) CONSTRAINT t4_name_nn NOT NULL,
                                    gender CHAR(2) CONSTRAINT t4_gen_ck CHECK (gender IN ('男','女')),
                                    email CHAR(20) CONSTRAINT t4_em_uk UNIQUE,
                                    deptno NUMBER(2) CONSTRAINT t4_deptno_fk REFERENCES dept(deptno)                               
                                    )
              INSERT INTO t_08134 VALUES(5,'e','男','5@neusoft.com',NULL)                      
              INSERT INTO t_08134 VALUES(6,'e','男','6@neusoft.com',NULL)                      
       b.表級別約束:在所有列寫完之后寫約束。注意,notnull約束不能寫在表級別上。
          CREATE TABLE t_08135(id NUMBER(10)  ,
                                    NAME CHAR(10) CONSTRAINT t5_name_nn NOT NULL,
                                    gender CHAR(2) ,
                                    email CHAR(20) ,
                                    deptno NUMBER(2) ,
                                    CONSTRAINT t5_id_pk PRIMARY KEY (ID),
                                    CONSTRAINT t5_gen_ck CHECK (gender IN ('男','女')),
                                    CONSTRAINT t5_em_uk UNIQUE(email),
                                    CONSTRAINT t5_deptno_fk FOREIGN KEY (deptno) REFERENCES dept(deptno)                               
                                   )
    約束的名字:一般規則 約束所在的表_約束所在的列_約束類型
     emp_empno_pk,通常只給主鍵、外鍵、唯一鍵命名。

    2、在創建表之后創建約束
    語法:
    Alter TABLE 表名 ADD [CONSTRAINT 約束名] 約束類型 [(列名列表)]
    CREATE TABLE t08161 (ID NUMBER,NAME CHAR(10),sex CHAR(2) ,email CHAR(10),deptno NUMBER)
    //在ID字段上添加主鍵約束
    ALTER TABLE t08161 ADD CONSTRAINT t1_id_pk PRIMARY KEY(ID)
    //在sex字段上添加檢查性約束
    ALTER TABLE t08161 ADD CONSTRAINT t1_email_ck CHECK (sex IN ('男','女'))
    //在email上添加唯一性約束
    ALTER TABLE t08161 ADD CONSTRAINT t1_email_uk UNIQUE (email)
    //在deptno上添加外鍵約束,引用于dept的deptno字段。
    ALTER TABLE t08161 ADD CONSTRAINT t1_deptno_fk FOREIGN KEY (deptno) REFERENCES dept(deptno)
    //在name上添加非空約束
    ALTER TABLE t08161 ADD CONSTRAINT t1_name_nn NOT NULL (NAME)    //加不上

    ALTER TABLE t08161 MODIFY NAME NULL  
    ALTER TABLE 表名 MODIFY 字段名 NULL/NOT NULL   //通過該語法設置某一個字段為null或者not NULL.
    //練習:
    創建表學生表,里面包含學號(主鍵),姓名(非空),年齡,入班日期,
    班級編號(外鍵,引用于dept表部門編號)
    要求,在創建完表之后建立約束。
    CREATE TABLE t08162 (sno NUMBER ,sname CHAR(10) ,sage NUMBER ,indate DATE,classno NUMBER)
    ALTER TABLE t08162 ADD PRIMARY KEY (sno)
    ALTER TABLE t08162 MODIFY sNAME NOT NULL
    ALTER TABLE t08162 ADD FOREIGN KEY(classno) REFERENCES dept(deptno)
    4、如何刪除約束
    ALTER TABLE 表名 DROP PRIMARY KEY|UNIQUE (列)|CONSTRAINT 約束名
    ALTER TABLE t08162 DROP PRIMARY KEY
    練習:刪除t08162上的classno上的外鍵約束
    ALTER TABLE t08162 DROP CONSTRAINT sys_c005467
    5、約束的啟用和禁用。
    語法:
    Alter TABLE 表名 Disable|ENABLE CONSTRAINT 約束名

    posted on 2012-09-04 23:08 abin 閱讀(2171) 評論(0)  編輯  收藏 所屬分類: DatabaseIndex
    主站蜘蛛池模板: 在线观看免费国产视频| 久久毛片免费看一区二区三区| 国产午夜精品免费一区二区三区 | 免费一级毛片不卡在线播放| 亚洲熟妇AV一区二区三区浪潮| 69pao强力打造免费高清| 婷婷精品国产亚洲AV麻豆不片| 无码国产精品一区二区免费模式| 日韩亚洲一区二区三区| 日本免费一区二区久久人人澡| 亚洲av永久无码精品表情包| 亚洲一区免费观看| 亚洲国产日韩在线一区| 成人免费视频网址| 色吊丝免费观看网站| 国产亚洲av人片在线观看| 97人妻精品全国免费视频| 91亚洲va在线天线va天堂va国产 | 四虎影视精品永久免费网站| 一级毛片a免费播放王色| 国产性爱在线观看亚洲黄色一级片 | 亚洲午夜在线电影| 最近中文字幕完整免费视频ww | 又硬又粗又长又爽免费看 | 日韩免费一区二区三区在线| 亚洲熟妇无码AV不卡在线播放 | 亚洲色图黄色小说| 永久免费av无码网站大全| 一本一道dvd在线观看免费视频| 亚洲AV日韩AV永久无码久久| 国产精品免费观看久久| 一级中文字幕免费乱码专区| 亚洲激情中文字幕| 日韩中文字幕免费| 久久国产乱子伦精品免费强| 香蕉大伊亚洲人在线观看| 国产亚洲人成网站在线观看| 18国产精品白浆在线观看免费 | 国精无码欧精品亚洲一区| 国产1024精品视频专区免费| a免费毛片在线播放|