在Oracle中的约束类型:
NOT
NULL
UNIQUE
Key
PRIMARY
KEY
FOREIGN
KEY
CHECK
create table emp--创建表格
,注意约束
(
empno
number(4) primary key,--主键约束
ename
varchar2(11) not NULL,--非空约束
job1
varchar2(9),
mgr
number(2) references dept(deptno),
hiredage date default sysdate,
sal number(10,2) check(sal > 500),--check约束
comm number(9,0) default
null
)
alter table emp--
删除表的列
drop column
comm
cascade
constraints checkpoint 1000;--约束删除
定义约束
主码或主键约束可以定义在列或表上(
PRIMARY KEY )
CREATE TABLE
dept(
deptno
NUMBER(2),
dname
VARCHAR2(14),
loc
VARCHAR2(13),
CONSTRAINT
dept_dname_uk UNIQUE (dname),定义约束
CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));定义约束
create table
dept
(
deptno number(2),
dname varchar2(14),
location varchar2(14),
CONSTRAINT dept_dname_uk UNIQUE(dname));--
唯一约束
)
定义外键约束
CREATE TABLE
emp(
empno
NUMBER(4),
ename
VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(7,2) NOT NULL,(reference
dept(deptno) )//括号中也声明其引用外键
CONSTRAINT emp_deptno_fk
FOREIGN KEY (deptno)
REFERENCES dept (deptno));
CHECK约束:定义表的每一行必须满足的条件(上面有check约束的例子)
CHECK表达是不允许:
引用伪列
CURRVAL, NEXTVAL, LEVEL, 和ROWNUM
调用SYSDATE, UID,
USER,和USERENV函数
参照其它行的查询结果
增加约束(可以增加或删除约束但是不能修改约束)
ALTER
TABLE emp
ADD
CONSTRAINT emp_mgr_fk(约束名)
FOREIGN KEY(mgr) REFERENCES
emp(empno);
...................................................................
ALTER
TABLE emp//删除约束
DROP
CONSTRAINT emp_mgr_fk;
...................................................................
ALTER
TABLE dept//删除在表DEPT上的PRIMARY
KEY约束并且删除在表EMP的DEPTNO列上的 FOREIGN KEY约束。
DROP PRIMARY
KEY CASCADE;
创建和管理约束:约束使能或使不能
ALTER
TABLE emp
ENABLE CONSTRAINT emp_empno_pk;
ALTER
TABLE emp
DISABLE CONSTRAINT emp_empno_pk
CASCADE;
查看约束
查询表USER_CONSTRAINTS可以察看所有的约束和名称
SELECT
constraint_name, constraint_type,
2
search_condition
3
FROM user_constraints
4
WHERE table_name = ‘EMP‘;