Unique約束

Unique約束可應用于一列或多列字段上。如果字段值存在,必須為唯一的,可以取null值
1、一張表只能有一個PK約束但可以有多個Unique約束
2、作為PK的字段不能為null,但作為Unique的字段可以為null,但不為null的行必須是Unique的
3、當創(chuàng)建一個PK時,創(chuàng)建一個Index,創(chuàng)建一個Unique時也創(chuàng)建一個Index
4、PK和Unique約束字段可以作為FK的父親。FK約束字段引用PK約束,也引用Unique約束

創(chuàng)建語句:
  CREATE TABLE temp (pk NUMBER PRIMARY KEY, a NUMBER, b NUMBER);
     ALTER TABLE temp ADD CONSTRAINT uk_temp_a_b UNIQUE (a, b);

Example:
CREATE TABLE students
 (student_id    VARCHAR2(10) NOT NULL,
  student_name  VARCHAR2(30) NOT NULL,
  college_major VARCHAR2(15) NOT NULL,
  status        VARCHAR2(15) NOT NULL,
  state         VARCHAR2(2),
  license_no    VARCHAR2(30)) TABLESPACE student_data;

ALTER TABLE students
  ADD CONSTRAINT pk_students PRIMARY KEY (student_id)
  USING INDEX TABLESPACE student_index;

ALTER TABLE students
  ADD CONSTRAINT uk_students_license
  UNIQUE (state, license_no)
  USING INDEX TABLESPACE student_index;

ALTER TABLE students
   ADD CONSTRAINT ck_students_st_lic
   CHECK ((state IS NULL AND license_no IS NULL) OR
          (state IS NOT NULL AND license_no is NOT NULL));