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 閱讀(934) 評論(0)  編輯  收藏


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


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

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 凌源市| 密云县| 张家港市| 江孜县| 黄龙县| 自治县| 谢通门县| 金塔县| 凤城市| 通州区| 恭城| 丽水市| 牟定县| 若尔盖县| 江门市| 马边| 当阳市| 周至县| 汉川市| 连江县| 微博| 晋城| 剑阁县| 伊宁市| 阿城市| 广饶县| 射洪县| 丽江市| 聂荣县| 积石山| 渝北区| 甘孜县| 秭归县| 栖霞市| 汉阴县| 吉安市| 博乐市| 陆川县| 新疆| 尼勒克县| 云林县|