SQL> create table cheng1
2 (name varchar(5),id number);
Table created.
SQL> alter table cheng1 add constraint ccc unique(name);
Table altered.
SQL> insert into cheng1 values ('nameg',1);
1 row created.
SQL> /
insert into cheng1 values ('nameg',1)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.CCC) violated
SQL> insert into cheng1 values (null,1);
1 row created.
SQL> select * from cheng1;
NAME ID
----- ----------
nameg 1
1
SQL> alter table cheng1 drop constraint ccc;
Table altered.
SQL> insert into cheng1 values ('nameg',1);
1 row created.
SQL> select * from cheng1;
NAME ID
----- ----------
nameg 1
1
nameg 1
primary key(主键):当定义主键约束后,该列不但不能重复而且不能为null。一张表最多只能有一个主键,但是可以由多个unique约束。
SQL>
alter table cheng1 add constraint ccc primary key(name);
alter table cheng1 add constraint ccc primary key(name)
*
ERROR at line 1:
ORA-01449: column contains NULL values; cannot alter to NOT NULL
SQL> delete from cheng1 where id=1;
3 rows deleted.
SQL> alter table cheng1 add constraint ccc primary key(name);
Table altered.
SQL> alter table cheng1 add constraint ccc primary key(id);
alter table cheng1 add constraint ccc primary key(id)
*
ERROR at line 1:
ORA-02260: table can have only one primary key
SQL> insert into cheng1 values ('nnnn',1);
1 row created.
SQL> /
insert into cheng1 values ('nnnn',1)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.CCC) violated
SQL> insert into cheng1 values (null,1);
insert into cheng1 values (null,1)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYS"."CHENG1"."NAME")
SQL> insert into cheng1 values ('cccc',1);
1 row created.
SQL> select * from cheng1;
NAME ID
----- ----------
nnnn 1
cccc 1
foreign key(外键):用于定义主表和从表之间的关系,外键约束要定义在从表上,主表侧必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null;
SQL> create table fk_cheng1 (name varchar(5),id number);
Table created.
SQL> alter table fk_cheng1 add constraint bbb foreign key(name) references cheng1(name);
Table altered.
SQL> select * from cheng1;
NAME ID
----- ----------
nnnn 1
cccc 1
SQL> insert into fk_cheng1 values(
'aaaa',1);
insert into fk_cheng1 values('aaaa',1)
*
ERROR at line 1:
ORA-02291: integrity constraint (SYS.BBB) violated - parent key not found
SQL> insert into fk_cheng1 values(null,1);
1 row created.
SQL> insert into fk_cheng1 values
('nnnn',1);
1 row created.
SQL> insert into fk_cheng1 values
('cccc',1);
1 row created.
SQL> select * from fk_cheng1;
NAME ID
----- ----------
1
nnnn 1
cccc 1