3-表约束修改

对表的约束的修改的基本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 约束名

 

posted @ 2015-12-31 12:26  MIASDZ  阅读(203)  评论(0编辑  收藏  举报