Oracle添加主键、删除主键、修改主键

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表的作用及其联系 

 

一、前提

主键解释:

       一个表的唯一关键字 比如一个学生表 学号不能重复且唯一 ,学号就是关键字,即为主键。

区别于外键:

       外键就是跟其他表联系的字段 ,还是比如有一张学生表 还有一张选课表,这个时候要修改学生表中的学号 ,选课表里对应的就也得变,这样就需要给选课表加学号作为外键约束,这样当你修改学号时 所有外键关联的就都改了

二、回归主题,主键的添加、删除等操作

1.有命名主键

1)有命名主键的添加

①建表时添加主键(yy为主键“ID”的主键名称)


   
   
   
   
  1. CREATE TABLE table_test(
  2. id INT NOT NULL, --注意:主键必须非空
  3. name VARCHAR( 20) NOT NULL,
  4. address VARCHAR( 20),
  5. constraint yy PRIMARY KEY( id)
  6. );

②建表后添加主键


   
   
   
   
  1. alter table table_test add constraint yy primary key( id);
  2. 公式: alter table 表名 add constraint yy primary key(主键 1,主键 2);

2)有命名主键的删除


   
   
   
   
  1. ALTER TABLE table_test DROP CONSTRAINT yy;
  2. 公式: ALTER TABLE 表名 DROP CONSTRAINT 主键名;

3)有命名主键的修改

需先删除主键,再进行添加
   
   
   
   

2.无命名主键

1)无命名主键的创建

①建表时添加主键(主键“ID”的主键名称需要查询出来,下文有方法)


   
   
   
   
  1. CREATE TABLE table_test(
  2. id INT NOT NULL, --注意:主键必须非空
  3. name VARCHAR( 20) NOT NULL,
  4. address VARCHAR( 20),
  5. PRIMARY KEY( id)
  6. );

②建表后添加主键


   
   
   
   
  1. alter table table_test add primary key ( id);
  2. 公式: alter table 表名 add primary key(主键字段 1,主键字段 2...);

2)无命名主键的删除

①先查出来主键名(constraint_name),user_cons_columns表会在文末给出解释


   
   
   
   
  1. SELECT t.* from user_cons_columns t where t.table_name  = 'TABLE_TEST' and t.position is not null;
  2. 公式: SELECT t.* from user_cons_columns t where t.table_name  = '表名' and t.position is not null; --表名必须大写,如:TABLE_TEST

②再执行删除的SQL


   
   
   
   
  1. ALTER TABLE table_test DROP CONSTRAINT SYS_C0056038;
  2. 公式: ALTER TABLE 表名 DROP CONSTRAINT 主键名;

3)无命名主键的修改

需先删除主键,再进行添加
   
   
   
   

附加:

user_constraints 和user_cons_columns表的作用及其联系 


        user_constraints:是表约束的视图,描述的是约束类型(constraint_type)是什么,属于哪些表(table_name),如果约束的类型为R(外键)的话,那么r_constraint_name字段存放的就是被引用主表中的主键约束名。   
        user_cons_columns:是表约束字段的视图,说明表中的和约束相关的列参与了哪些约束。这些约束有主键约束,外键约束,索引约束.
        两者可以通过(owner,constraint_name,table_name)关联 

 

你可能感兴趣的:(oracle)