欢迎投稿

今日深度:

oracle的primarykey主键约束

oracle的primarykey主键约束


primary key约束是指主键约束,用于唯一标识一行记录。在一个表中只能定义一个primary key约束,该约束可以定义在单独的列上,也可以定义在多个列上(表级约束)。定义了primary key约束的列或组合不能有重复的值,也不能有null值。


添加primary key
在创建表时,为列添加primary key约束,形式如下:
column_name data_type [constraint constraint_name]
primary key
或
create table table_name(
column_name data_type,[...,]
[constraint constraint_name] primary key(column_name)
[,...]
)

也可以为自己常见的表中添加primary key约束,形式如下:
alter table table_name add [constraint constraint_name] primary key(column_name);


删除primary key
删除列上的primary key约束,需要使用alter table ... drop 语句,不过形式上只能采取指定的约束名的方式,如下:
alter table table_name drop constraint constraint_name;
如果在添加约束时使用constraint子句为其指定了约束名,那么这里就可以直接使用该名称,而如果没有使用constraint子句,则约束名由oracle自动创建,此时就可以通过数据字典user_cons_columns和user_constraints来查看约束的名称。


具体的操作如下:
SQL> create table person(
pid number(4) not null,
pname varchar(20),
 psex char(2)
 );


表已创建。


SQL> desc person;
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------
PID NOT NULL NUMBER(4)
PNAME VARCHAR2(20)
PSEX CHAR(2)


SQL> alter table person add constraint person_pk primary key(pid);


表已更改。
SQL> insert into person values(1,'aaa','女');
已创建 1 行。
SQL> insert into person values(1,'aaa','女');
insert into person values(1,'aaa','女') //外键不允许有重复值
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (SYSTEM.PERSON_PK) //外键不允许有重复值
SQL> insert into person values(2,'aaa','女');


已创建 1 行。
SQL> alter table person drop constraint person_pk; //删除外键
表已更改。
SQL> insert into person values(2,'aaa','女'); //删除后可以添加重复值
已创建 1 行 。
SQL>

SQL> create table p2(
2 pid number(4) primary key,
3 pname varchar(20),
4 psex char(2)
5 );
表已创建。

SQL> create table p3(
2 pid number(4) not null,
3 pname varchar(20),
4 psex char(2),
5 constraint pk_p3 primary key (pid)
6 );
表已创建。

SQL> create table p4(
2 pid number(4) not null,
3 pname varchar(20),
4 psex char(2),
5 constraint pk_p4 primary key (pid,pname)
6 );
表已创建。





www.htsjk.Com true http://www.htsjk.com/oracle/23171.html NewsArticle oracle的primarykey主键约束 primary key约束是指主键约束,用于唯一标识一行记录。在一个表中只能定义一个primary key约束,该约束可以定义在单独的列上,也可以定义在多个列上(表级约束...
相关文章
    暂无相关文章
评论暂时关闭