189 8069 5689

oracle怎么主键约束,oracle主键约束导入导出

oracle的主键和索引的关系是什么?

在oracle中,我们创建一个主键,则同时自动创建了一个同名的唯一索引;删除主键,则主键约束和对应的唯一索引都删除了。这是我们经常见到的现象。\x0d\x0a \x0d\x0a发出一个创建主键的sql,oracle其实执行了两步:创建主键约束、创建/关联 唯一索引。步骤是这样的:\x0d\x0a创建主键约束时,检查该主键字段上是否已经存在唯一索引。若不存在,则自动创建同名唯一索引;若存在,则直接创建主键约束,并将该约束和已经存在的唯一索引对应上。 \x0d\x0a删除主键约束时,可以决定是否保留对应的索引;删除唯一索引时,若存在对应的主键约束,则不能删除。\x0d\x0a \x0d\x0a总之,存在主键约束,则肯定存在与之对应的唯一索引,而存在唯一索引,不一定对应着有主键约束。\x0d\x0a \x0d\x0a下面我们验证一下:\x0d\x0a \x0d\x0aSQL create table test_pri(a number(1), b number(1));\x0d\x0a \x0d\x0a表已创建。\x0d\x0a \x0d\x0a--1.创建主键,则自动创建同名唯一索引\x0d\x0a--1.1创建主键,主键约束和唯一索引同时创建\x0d\x0aSQL alter table test_pri add constraint pk_test_pri_a primary key(a);\x0d\x0a \x0d\x0a表已更改。\x0d\x0a\x0d\x0aSQL select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME\x0d\x0a 2 from user_constraints where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0aCONSTRAINT_NAME TABLE_NAME INDEX_NAME \x0d\x0a----------------- ------------ -------------\x0d\x0aPK_TEST_PRI_A TEST_PRI PK_TEST_PRI_A\x0d\x0a \x0d\x0aSQL select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS\x0d\x0a 2 from user_indexes where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0aINDEX_NAME INDEX_TYPE TABLE_NAME UNIQUENES\x0d\x0a---------------- ------------ ------------ ---------\x0d\x0aPK_TEST_PRI_A NORMAL TEST_PRI UNIQUE\x0d\x0a \x0d\x0a--1.2 删除主键,主键约束和对应的唯一索引都删除了\x0d\x0aSQL alter table test_pri drop constraint pk_test_pri_a;\x0d\x0a \x0d\x0a表已更改。\x0d\x0a \x0d\x0aSQL select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME\x0d\x0a 2 from user_constraints where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0a未选定行\x0d\x0a \x0d\x0aSQL select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS\x0d\x0a 2 from user_indexes where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0a未选定行\x0d\x0a \x0d\x0a--1.3其实删除主键时可以选择保留索引的\x0d\x0aSQL alter table test_pri add constraint pk_test_pri_a primary key(a);\x0d\x0a \x0d\x0a表已更改。\x0d\x0a \x0d\x0aSQL alter table test_pri drop constraint pk_test_pri_a keep index;\x0d\x0a \x0d\x0a表已更改。\x0d\x0a \x0d\x0aSQL select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME\x0d\x0a 2 from user_constraints where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0a未选定行\x0d\x0a \x0d\x0aSQL select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS\x0d\x0a 2 from user_indexes where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0aINDEX_NAME INDEX_TYPE TABLE_NAME UNIQUENES\x0d\x0a--------------- ----------- ----------- ---------\x0d\x0aPK_TEST_PRI_A NORMAL TEST_PRI UNIQUE\x0d\x0a\x0d\x0a--2.在存在唯一索引的列上创建主键,则只创建主键约束,同时将该约束与已有唯一索引关联上(名称可以不一致)\x0d\x0aSQL drop index pk_test_pri_a;\x0d\x0a \x0d\x0a索引已丢弃。\x0d\x0a \x0d\x0a--2.1 先创建唯一索引,再创建主键,名称可以不一致\x0d\x0aSQL create unique index pk_test_pri_a on test_pri(a);\x0d\x0a \x0d\x0a索引已创建。\x0d\x0a \x0d\x0aSQL alter table test_pri add constraint pk_test_pri primary key(a);\x0d\x0a \x0d\x0a表已更改。\x0d\x0a \x0d\x0aSQL select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS\x0d\x0a 2 from user_indexes where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0aINDEX_NAME INDEX_TYPE TABLE_NAME UNIQUENES\x0d\x0a--------------- ----------- ------------ ---------\x0d\x0aPK_TEST_PRI_A NORMAL TEST_PRI UNIQUE\x0d\x0a \x0d\x0aSQL select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME\x0d\x0a 2 from user_constraints where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0aCONSTRAINT_NAME TABLE_NAME INDEX_NAME\x0d\x0a------------------ ------------ -------------\x0d\x0aPK_TEST_PRI TEST_PRI PK_TEST_PRI_A\x0d\x0a \x0d\x0a--2.2 不可删除存在主键约束的唯一索引\x0d\x0aSQL drop index PK_TEST_PRI_A;\x0d\x0adrop index PK_TEST_PRI_A\x0d\x0a *\x0d\x0aERROR 位于第 1 行:\x0d\x0aORA-02429: 无法删除用于强制唯一/主键的索引\x0d\x0a \x0d\x0a--2.3虽然两者名称不一致,但也是关联在一块的:删除约束,则对应的索引同时删除\x0d\x0aSQL alter table test_pri drop constraint pk_test_pri; \x0d\x0a \x0d\x0a表已更改。\x0d\x0a \x0d\x0aSQL select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS\x0d\x0a 2 from user_indexes where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0a未选定行\x0d\x0a \x0d\x0aSQL select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME\x0d\x0a 2 from user_constraints where table_name = 'TEST_PRI';\x0d\x0a \x0d\x0a未选定行\x0d\x0a \x0d\x0aSQL

成都创新互联公司是一家业务范围包括IDC托管业务,网站空间、主机租用、主机托管,四川、重庆、广东电信服务器租用,德阳机房服务器托管,成都网通服务器托管,成都服务器租用,业务范围遍及中国大陆、港澳台以及欧美等多个国家及地区的互联网数据服务公司。

ORACLE 更改主键怎么改?

1、首先应该删除已有的主键约束\x0d\x0a ①若已知道该主键命名\x0d\x0a\x0d\x0a alter table 表名 drop constraint 主键名;\x0d\x0a\x0d\x0a ②若不知道朱建命名\x0d\x0a\x0d\x0a SELECT * from user_cons_columns c where c.table_name = '表名';\x0d\x0a\x0d\x0a 找到主键字段column对应的主键名,再执行①\x0d\x0a\x0d\x0a2、增加新的主键约束\x0d\x0a alter table 表名 add constraint 主键名 primary key(字段名);

Oracle查看表索引、主键、外键、约束

查看表索引、主键、外键、约束

(包括索引名,类型,构成列)

SELECT T.*, I.INDEX_TYPE

FROM USER_IND_COLUMNS T,USER_INDEXES I

WHERE T.INDEX_NAME = I.INDEX_NAME

AND T.TABLE_NAME = I.TABLE_NAME

AND T.TABLE_NAME = 'ORG_DLF' ----指定表

AND T.TABLE_OWNER= 'ODSRPT_SIT2'; ----指定用户

(包括名称,构成列)

SELECT CU.*

FROM DBA_CONS_COLUMNS CU, DBA_CONSTRAINTS AU

WHERE CU.CONSTRAINT_NAME = AU.CONSTRAINT_NAME

AND AU.CONSTRAINT_TYPE = 'P'

AND AU.TABLE_NAME = 'LOAN_APPLICATION_FEE' -----指定表名

AND CU.OWNER='ODSRPT_SIT2'; -----指定用户名

(包括表名称,构成列)

SELECT CU.COLUMN_NAME,AU.TABLE_NAME

FROM DBA_CONS_COLUMNS CU, DBA_CONSTRAINTS AU

WHERE CU.CONSTRAINT_NAME = AU.CONSTRAINT_NAME

AND AU.CONSTRAINT_TYPE = 'U'

AND AU.OWNER='RPT_UAT2' -----指定用户名

AND AU.TABLE_NAME = 表名 ; -----指定表名

Select a.Owner 外键拥有者,

a.Table_Name 外键表,

c.Column_Name 外键列,

b.Owner 主键拥有者,

b.Table_Name 主键表,

d.Column_Name 主键列,

c.Constraint_Name 外键名,

d.Constraint_Name 主键名

From User_Constraints a,

 user_Constraints b,

user_Cons_Columns c, --外键表

user_Cons_Columns d --主键表

Where a.r_Constraint_Name = b.Constraint_Name

And a.Constraint_Type = 'R'

And b.Constraint_Type = 'P'

And a.r_Owner = b.Owner

And a.Constraint_Name = c.Constraint_Name

And b.Constraint_Name = d.Constraint_Name

And a.Owner = c.Owner

And a.Table_Name = c.Table_Name

And b.Owner = d.Owner

And b.Table_Name = d.Table_Name;

Oracle如何添加主键约束

工具/材料

SQL Developer

01

首先打开SQL Developer软件,找一个没有主键约束的表,如下图所示

02

然后我们新建一个查询,在界面中输入如下的约束修改语句,如下图所示,主要通过add constranint来添加约束

03

编写完约束添加语句以后,点击工具栏中的执行按钮,如下图所示,如果输出栏显示已变更则证明主键约束创建成果

04

然后我们进入STUDENT表的约束添加页中可以看到,我们加的主键约束已经添加进去了,如下图所示

05

另外,创建表的时候可以直接添加主键约束,如下图所示,直接在表创建语句中添加constraint即可

06

表创建完以后,记得在左侧刷新数据库信息,如下图所示,因为你创建的信息不刷新的话不会更新

07

最后打开你所创建的表,看到你添加的主键约束已经加入进来了,这种方式的效果alter的方式是一样的

oracle主键怎么插入

1、创建表的同时创建主键约束

(1)无命名

create

table

student

(

studentid

int

primary

key

not

null,

studentname

varchar(8),

age

int);

(2)有命名

create

table

students

(

studentid

int

,

studentname

varchar(8),

age

int,

constraint

yy

primary

key(studentid));

2、删除表中已有的主键约束

(1)无命名

可用

SELECT

*

from

user_cons_columns;

查找表中主键名称得student表中的主键名为SYS_C002715

alter

table

student

drop

constraint

SYS_C002715;

(2)有命名

alter

table

students

drop

constraint

yy;

3、向表中添加主键约束

alter

table

student

add

constraint

pk_student

primary

key(studentid);


分享标题:oracle怎么主键约束,oracle主键约束导入导出
网页网址:http://cdxtjz.cn/article/dsccpjd.html

其他资讯