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

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

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

    少年阿賓

    那些青春的歲月

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

    如何創(chuàng)建約束:
    1、在創(chuàng)建表的同時(shí)創(chuàng)建約束
       a.列級(jí)別約束:在每個(gè)列寫(xiě)完之后寫(xiě)約束。
              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.表級(jí)別約束:在所有列寫(xiě)完之后寫(xiě)約束。注意,notnull約束不能寫(xiě)在表級(jí)別上。
          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)                               
                                   )
    約束的名字:一般規(guī)則 約束所在的表_約束所在的列_約束類型
     emp_empno_pk,通常只給主鍵、外鍵、唯一鍵命名。

    2、在創(chuàng)建表之后創(chuàng)建約束
    語(yǔ)法:
    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   //通過(guò)該語(yǔ)法設(shè)置某一個(gè)字段為null或者not NULL.
    //練習(xí):
    創(chuàng)建表學(xué)生表,里面包含學(xué)號(hào)(主鍵),姓名(非空),年齡,入班日期,
    班級(jí)編號(hào)(外鍵,引用于dept表部門(mén)編號(hào))
    要求,在創(chuàng)建完表之后建立約束。
    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
    練習(xí):刪除t08162上的classno上的外鍵約束
    ALTER TABLE t08162 DROP CONSTRAINT sys_c005467
    5、約束的啟用和禁用。
    語(yǔ)法:
    Alter TABLE 表名 Disable|ENABLE CONSTRAINT 約束名

    posted on 2012-09-04 23:08 abin 閱讀(2171) 評(píng)論(0)  編輯  收藏 所屬分類: DatabaseIndex
    主站蜘蛛池模板: 亚洲欧洲日本在线观看| 亚洲黄色三级网站| 无遮挡呻吟娇喘视频免费播放| 一个人免费观看视频www| 亚洲人成影院在线高清| 香蕉97超级碰碰碰免费公| 亚洲av乱码一区二区三区 | 亚洲天堂2016| 欧美日韩国产免费一区二区三区 | 99久久精品国产亚洲| 亚洲一区二区三区免费观看| 亚洲最新黄色网址| 最新欧洲大片免费在线| 亚洲欧美不卡高清在线| 亚洲成?v人片天堂网无码| 免费国产污网站在线观看| 亚洲成a人片77777老司机| 在线精品一卡乱码免费| 亚洲精品乱码久久久久蜜桃 | 国产成人精品123区免费视频| 美女黄频a美女大全免费皮| 伊人久久大香线蕉亚洲五月天| 日韩精品免费视频| 中文字幕无码亚洲欧洲日韩| 国产三级免费观看| 72pao国产成视频永久免费| 亚洲色欲色欲综合网站| 午夜影视在线免费观看| 一级午夜a毛片免费视频| 亚洲色四在线视频观看| 免费激情视频网站| 99re6在线精品免费观看| 亚洲综合色区中文字幕| 亚洲人成色77777在线观看大| 伊人久久免费视频| 久久久久久亚洲精品无码| 亚洲va无码专区国产乱码| 成人性生活免费视频| 成人A片产无码免费视频在线观看| 亚洲人成电影网站| 在线观看亚洲成人|