程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle的primarykey主鍵約束

oracle的primarykey主鍵約束

編輯:Oracle教程

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 );
表已創建。





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved