oracle创建约束

CONSTRAINT

添加约束类型

创建表时定义约束

语法:create table 表名 (列名1 数据1类型 [default 默认值] [constraint 列约束],列名2 数据2类型 [default 默认值] [列约束] ...)

列级别约束,紧跟在创建字段名后面:CONSTRAINT 约束名 约束类型 (约束字段1)

表级别约束,逗号单独出来的子项,若括号内有多个约束字段,则是关联约束:CONSTRAINTS 约束名 约束类型 (约束字段1,约束字段2)

注:关联约束仅在列约束中出现

注:在字段名后直接写约束类型叫列级别约束(not null 只能存在于列级别约束)

注:单独逗号一个CONSTRAINTS叫表级别约束,在表级别约束时需要写约束名和约束字段,若括号内写了多个约束自动,则为

1
2
3
4
5
CREATE TABLE 表名
        (column datatype [DEFAULT expr]
        [column_constraint],
        ...
        [table_constraint][,...]);

主键约束,

注:联合主键约束写在一个括号呢!!!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
   --【主键约束】:唯一约束+非空约束
    CREATE TABLE STUDENT(
          SNO NUMBER(6) CONSTRAINTS PK_STUDENT PRIMARY KEY,--列级别约束
          SNAME VARCHAR2(20)
    );

    CREATE TABLE STUDENT(
          SNO NUMBER(6) PRIMARY KEY,--简写方式,主键名称会自动生成
          SNAME VARCHAR2(20)
    );

    CREATE TABLE STUDENT(
          SNO NUMBER(6) ,
          SNAME VARCHAR2(20),
    CONSTRAINT PK_STUDENT PRIMARY KEY(SNO)--表级别约束
    );


    --联合主键
    --联合主键不能设置列级别约束
     CREATE TABLE STUDENT(
          SNO NUMBER(6),
          SNAME VARCHAR2(20),
    CONSTRAINT PK_STUDENT PRIMARY KEY(SNO,SNAME)--表级别约束
    );  

创建表级别约束

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
create table emp7 (
  id number default 100,
  name varchar2(20) default 'test',
  age number default 0 ,
  comm varchar2(20) default 'nul',
  constraint emp4_id primary key (id),
  constraint emp4_name unique (name),
  constraint emp4_age unique (age),
  constraint emp4_comm unique (comm)
  );

创建联合约束,(譬如一个组里有多个组员)

1
2
3
4
5
6
7
8
9
create table emp9 (
  id number default 100,
  name varchar2(20) default 'test',
  age number default 0 ,
  comm varchar2(20) default 'nul',
  constraint emp4_id1 primary key (id,name),
  constraint emp4_age1 unique (age),
  constraint emp4_comm1 unique (comm)
  );

修改表,追加约束!

ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...);

1
2
3
4
5
6
    --添加唯一约束
    SQL> alter table  emp1111 add constraint emp_222 unique (ID,NAME);


    ALTER TABLE STUDENT ADD CONSTRAINT PK_STUDENT PRIMARY KEY(SNO);
    ALTER TABLE STUDENT ADD CONSTRAINT UK_STUDENT_EMAIL UNIQUE(EMAIL);

修改约束类型

语法:alter table 表名 modify (字段名 constrain 约束名 约束类型)

1
2
SQL> ALTER TABLE EMP1111 MODIFY (constraint emp_2_id PRIMARY KEY (ID));
Table altered

删除约束类型

ALTER TABLE 表名 DROP CONSTRAINT 约束名;

1
2
SQL> ALTER TABLE EMP1111 DROP CONSTRAINT EMP_2_ID ;
Table altered