oracle數據庫約束

          約束用于確保數據庫數滿足業務規則。

          約束包括:NOT NULL,UNIQUE,PRIMARY KEY,FOREIGN KEY以及CHECK等5種類型。

          建立主鍵約束和唯一約束時,Oralce會基于約束列自動建立唯一索引;主鍵約束不允許為NULL,唯一約束允許為NULL。

          一張表只能建立一個主鍵約束。

          建表約束:NOT NULL只能在列級定義;其它4種既可以在列級定義,也可以在表級定義。復合主鍵約束只能在表級定義。

          維護約束:增加NOT NULL約束時必須使用MODIFY子句,而增加其它約束時需要使用ADD子句。

           

          第一, 定義約束

          ---------------------------------------------

          語法

          CREATE  TABLE  [SCHEMA.]table_name(

          column_name  datatype  [DEFAULT  expr]  [column_constraint],

          ...

          [table_constraint][, ...]

          );

           

          例子

          CREATE TABLE tt_user_info
          (
            ID    VARCHAR2(20 BYTE),
            NAME  VARCHAR2(20 BYTE)                       NOT NULL,
            category_id VARCHAR2(20 BYTE)  REFERENCES tb_out_service(serviceid),
            remark   VARCHAR2(1000)
          );

          ALTER TABLE tt_user_info ADD (
            CHECK ( LENGTH(NAME)>2),
            PRIMARY KEY (ID),
            UNIQUE (NAME)
            );

           

          說明

          1. NOT NULL,非空約束

          not null

          2. UNIQUE,唯一約束

          UNIQUE (COL_NAME)

          3. PRIMARY KEY,主鍵約束

          primary key (col_name1 [, col_name2])

          4. FOREIGN KEY,外鍵約束

          它有三種類型:

          references  primary_table(primary_col)

          on delete cascade

          on delete set null

          5. CHECK,檢查約束

          check (money > 1000)

           

          第二, 維護約束

          ----------------------------------------

          1. 增加約束

          NOT NULL使用ALTER MODIFY子句,其它的使用ALTER  ADD子句

          -------------------------------

          CREATE TABLE tt_user(NAME VARCHAR2(20));

          ALTER TABLE tt_user MODIFY user_name NOT NULL;
          ALTER TABLE tt_user ADD CONSTRAINT constraint_name UNIQUE(NAME);
          ALTER TABLE tt_user ADD CONSTRAINT constraint_name PRIMARY KEY(NAME);
          ALTER TABLE tt_user ADD parentid VARCHAR2(20)
              CONSTRAINT constraint_name
                  REFERENCES tb_out_service(serviceid);

           

          2. 修改約束名

          ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_constraint_name

           

          3. 刪除約束

          ALTER TABLE table_name DROP CONSTRAINT constraint_name

           

          4. 禁止約束

          ALTER TABLE table_name DISABLE CONSTRAINT constraint_name  [CASCADE];

           

          5.激動約束

          ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

           

          第三. 顯示約束信息

          所有約束信息

          SELECT *
            FROM user_constraints

           

          用戶約束所對應的表列

          SELECT *
            FROM user_cons_columns;

          posted on 2009-03-12 15:03 JavaBegger 閱讀(936) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乡宁县| 金寨县| 中西区| 永济市| 密云县| 龙口市| 遵义县| 万载县| 古丈县| 错那县| 翁牛特旗| 电白县| 崇州市| 尼木县| 鄯善县| 洪泽县| 杭锦后旗| 沁源县| SHOW| 宜良县| 霍山县| 平定县| 务川| 南川市| 庄河市| 大英县| 法库县| 雷山县| 南靖县| 西充县| 喀喇沁旗| 永川市| 大理市| 安图县| 九江县| 清镇市| 城固县| 张家川| 拜城县| 耿马| 综艺|