<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
    主站蜘蛛池模板: 国产v片免费播放| 妞干网在线免费观看| 四虎1515hm免费国产| 亚洲一级大黄大色毛片| 足恋玩丝袜脚视频免费网站| 久久久久亚洲av无码尤物| 久久久久国色AV免费观看| 黑人大战亚洲人精品一区| 免费人成视频在线播放| 免费在线观看黄色毛片| 在线播放免费人成视频网站| 亚洲成年看片在线观看| 一级黄色片免费观看| 国产美女亚洲精品久久久综合| 一区二区免费在线观看| 亚洲色爱图小说专区| 久久免费观看国产99精品| 久久精品国产亚洲AV香蕉| 五月亭亭免费高清在线| 亚洲人xxx日本人18| 成年女人毛片免费观看97| 亚洲永久网址在线观看| 国产gav成人免费播放视频| 一级特黄录像免费播放中文版| 亚洲日韩乱码中文无码蜜桃臀网站 | 337P日本欧洲亚洲大胆精品 | 毛片高清视频在线看免费观看| 国产精品亚洲精品| gogo全球高清大胆亚洲| 国产做国产爱免费视频| 亚洲精品国产福利在线观看| 最近2019中文字幕mv免费看| 免费人人潮人人爽一区二区| 亚洲va久久久噜噜噜久久男同| 亚洲免费黄色网址| 午夜在线亚洲男人午在线| 国产成人精品日本亚洲| 性做久久久久久久免费看| 五月婷婷免费视频| 亚洲成人动漫在线观看| 免费一级毛片一级毛片aa|