1.查找主键:
select constraint_name from user_constraints where constraint_type='P' and owner='数据库用户名' and table_name='表名';
2.删除主键:
ALTER TABLE 表名 DROP PRIMARY KEY;
3.增加主键
ALTER TABLE 表名 ADD PRIMARY KEY (字段1, 字段2, 字段3);
目录
一、前提
二、回归主题,主键的添加、删除等操作
1.有命名主键
1)有命名主键的添加
2)有命名主键的删除
3)有命名主键的修改
2.无命名主键
1)无命名主键的创建
2)无命名主键的删除
3)无命名主键的修改
附加:
user_constraints 和user_cons_columns表的作用及其联系
主键解释:
一个表的唯一关键字 比如一个学生表 学号不能重复且唯一 ,学号就是关键字,即为主键。
区别于外键:
外键就是跟其他表联系的字段 ,还是比如有一张学生表 还有一张选课表,这个时候要修改学生表中的学号 ,选课表里对应的就也得变,这样就需要给选课表加学号作为外键约束,这样当你修改学号时 所有外键关联的就都改了
①建表时添加主键(yy为主键“ID”的主键名称)
-
CREATE
TABLE table_test(
-
-
id
INT
NOT
NULL,
--注意:主键必须非空
-
-
name
VARCHAR(
20)
NOT
NULL,
-
-
address
VARCHAR(
20),
-
-
constraint yy PRIMARY
KEY(
id)
-
-
);
②建表后添加主键
-
alter
table table_test
add
constraint yy primary
key(
id);
-
公式:
alter
table 表名
add
constraint yy primary
key(主键
1,主键
2);
-
ALTER
TABLE table_test
DROP
CONSTRAINT yy;
-
公式:
ALTER
TABLE 表名
DROP
CONSTRAINT 主键名;
需先删除主键,再进行添加
①建表时添加主键(主键“ID”的主键名称需要查询出来,下文有方法)
-
CREATE
TABLE table_test(
-
-
id
INT
NOT
NULL,
--注意:主键必须非空
-
-
name
VARCHAR(
20)
NOT
NULL,
-
-
address
VARCHAR(
20),
-
-
PRIMARY
KEY(
id)
-
-
);
②建表后添加主键
-
alter
table table_test
add primary
key (
id);
-
公式:
alter
table 表名
add primary
key(主键字段
1,主键字段
2...);
①先查出来主键名(constraint_name),user_cons_columns表会在文末给出解释
-
SELECT t.*
from user_cons_columns t
where t.table_name =
'TABLE_TEST'
and t.position
is
not
null;
-
公式:
SELECT t.*
from user_cons_columns t
where t.table_name =
'表名'
and t.position
is
not
null;
--表名必须大写,如:TABLE_TEST
②再执行删除的SQL
-
ALTER
TABLE table_test
DROP
CONSTRAINT SYS_C0056038;
-
公式:
ALTER
TABLE 表名
DROP
CONSTRAINT 主键名;
需先删除主键,再进行添加
user_constraints:是表约束的视图,描述的是约束类型(constraint_type)是什么,属于哪些表(table_name),如果约束的类型为R(外键)的话,那么r_constraint_name字段存放的就是被引用主表中的主键约束名。
user_cons_columns:是表约束字段的视图,说明表中的和约束相关的列参与了哪些约束。这些约束有主键约束,外键约束,索引约束.
两者可以通过(owner,constraint_name,table_name)关联