对表的约束的修改的基本SQL语句
--3表约束的修改,基于1中建立的表进行的修改操作,[]内容可以不存在 --3.1主键 --3.1.1设置某列为主键-1 ALTER TABLE EMP MODIFY EMPNO PRIMARY KEY; --3.1.2设置某列为主键-2 ALTER TABLE EMP ADD CONSTRAINT pk_emp_empno PRIMARY KEY(EMPNO); --3.1.3删除主键约束-1 ALTER TABLE EMP DROP PRIMARY KEY; --3.1.4删除主键约束-2 ALTER TABLE EMP DROP CONSTRAINT pk_emp_empno; --3.1.5注意事项 /* 3.1.4中是根据约束的名字来删除,约束的名字可以通过3.1.2方法在增加约束时指定名字, 若通过3.1.1中方法增加约束,则系统会有一个默认的约束名称,可以通过查系统表USER_CONSTRAINTS 得知在该表有的约束的详细信息 */ SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='EMP'; /* USER_CONSTRAINTS需要了解的字段: OWNER:所属用户 CONSTRAINT_NAME:约束名,在3.1.4中删除约束时根据这个名字 CONSTRAINT_TYPE:约束类型[P:primary key,R:foreign key, U:unique, C:check(unique约束为C类型)] */ --3.2外键 --3.2.1设置外键约束-1 ALTER TABLE EMP MODIFY FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO); --3.2.2设置外键约束-2 ALTER TABLE EMP ADD CONSTRAINT rk_emp_deptno FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO); /* 外键约束存在一个级联删除的问题,意思为当所依附的表的数据记录删除时, 依附于那条被删除的记录的数据也要被删除,举例:当某个部门被删除时,该部门的所有员工也删除 需要达到这种效果:可以在建立外键约束时添加ON DELETE CASCADE */ ALTER TABLE EMP ADD CONSTRAINT rk_emp_deptno FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO) ON DELETE CASCADE; --3.2.3删除外键约束 ALTER TABLE EMP DROP CONSTRAINT SYS_C0017586;--SYS_C0017586为系统默认名字,性质同3.1.4 --3.3NOT NULL --3.3.1添加NOT NULL约束-1 ALTER TABLE EMP MODIFY HIREDATE NOT NULL; --3.3.2添加NOT NULL约束-2 ALTER TABLE EMP ADD CONSTRAINT NN_EMP_HIREDATE CHECK(HIREDATE IS NOT NULL); /*注意:在添加非空约束通过通用方法时需要变更为check约束*/ --3.4UNIQUE --3.4.1添加UNIQUE约束-1 ALTER TABLE EMP MODIFY ENAME UNIQUE; --3.4.1添加UNIQUE约束-2 ALTER TABLE EMP ADD CONSTRAINT U_EMP_ENAME UNIQUE(ENAME); --3.5CHECK:假设的EMP表有SEX性别这一列,值只能为男,女 --check约束举例-1 ALTER TABLE EMP MODIFY SEX CHECK(SEX IN ('男', '女')); --check约束举例-2 ALTER TABLE EMP ADD CONSTRAINT C_EMP_SEX CHECK(SEX IN ('男','女')); --总结 --对表约束修改有两种方法 --1:ALTER TABLE 表名 MODIFY 约束 --2:ALTER TABLE 表名 ADD [CONSTRAINT 约束名] 约束 --删除表约束 --通用:ALTER TABLE 表名 DROP CONSTRAINT 约束名