not null 約束只能定義在列級(jí)別上犁享。
-not null 也叫非空約束 ,確保被約束列的所有行記錄都不能為空值。
-列子:
create table emp (
empno number(4),
ename varchar2(10) not null
)
UNIQUE 約束
UNIQUE 約束:也叫唯一約束 ,用來(lái)確保表中的某一列或者幾列組合的所有行數(shù)據(jù)必須唯一碗短,定義UNIQUE約束的列(列組合)被稱為唯一鍵。 每個(gè)表可以有多個(gè)UNQUE約束题涨。
例子:
create table dept (
deptno number(2),
dname varchar2(14) constraint dept_dname_uk UNIQUE,
loc varchar2(13)
);
primary key 約束
primary key 約束 : 主鍵約束偎谁,用來(lái)確保表中的某一列或者幾列組合的所有行數(shù)據(jù)必須唯一,主鍵列不能包含空值纲堵;
一個(gè)表只能創(chuàng)建一個(gè)主鍵約束巡雨。
例子:
deptno number(2) constraint dept_deptno_pk primary key,
dname varchar(10),
loc varchar2(13),
constraint dept _dname_uk UNIQUE(dname)
);
foreign key
foreign key:外鍵約束,外鍵是確保關(guān)聯(lián)的兩個(gè)列的關(guān)系席函。
外鍵列的值必須在引用值得范圍內(nèi)铐望,或?yàn)榭?br>
外鍵參照的列 ,必須是主鍵 或 唯一鍵
主鍵表主鍵值被外鍵表參照時(shí),主鍵表記錄不允許被刪除正蛙。
例子:
create table emp (
empno number(4),
ename varchar2(10) not null,
job varchar(9),
deptno number(7,2) not null constraint emp_deptno_fk references dept (deptno),
sal number (7,2)
);
foreign key : 定義在表的列中
references:針對(duì)引用的表內(nèi)
check 約束
check 約束:也叫檢查性約束督弓,確保某個(gè)列的所有行數(shù)據(jù)都必須滿足的條件
例子;sal number(8,2) constraint dept_sal_ck check(sal>0)
含義是:要求sal 的列的所有數(shù)據(jù)必須大于0
練習(xí)1:
xno number(3) constraint x_xon_pk primary key,
xzr varchar2(20) constraint x_xzr_uk unique,
xxx varchar2(20) constraint x_xxx_nn not null
);
create table class (
classno number(3) constraint class_classno_pk primary key ,
classname varchar2(20) constraint class_classname_uk unique,
ssx number(20) constraint class_ssx_fk references x(xno)
)
追加約束
追加或刪除約束,但不能修改結(jié)構(gòu)乒验;
啟動(dòng)或禁用約束愚隧;
追加外鍵約束的例子:alter table 表名 add 約束名別名 約束類型
追加NOT NULL約束: alter table 表名 modify(修改) 約束別名列 not null
刪除約束 :alter table 表名 DROP primary key|unique(受約束列的名字)
constraint 約束名 (級(jí)聯(lián)刪除)』布‘
刪除約束的例子: alter table emp drop constraint emp_mgr_fk奸攻;
刪除dept 表的外鍵約束,并且刪除相關(guān)聯(lián)在emp表deptno上的froeign key約束虱痕;
例子: alter table dept dorp primary key cascade;
啟動(dòng)約束的方法:
例子:alter table 表名 enable constraint 約束名;
約束禁用的方法:
例子:alter table 表名 disable constraint 約束名辐赞;
課后習(xí)題:
2, create table sc(
id number(10),
sno varchar2(16) not null,
cno varchar2(16) not null,
grade number(4),
constraint pk_id primary key id,
constraint fk_sno foreign key(sno) references student(sno),
constraint fk_cno foreign key(cno) references course(cno),
constraint ck_grade check (grade between 0 and 100)
)
3. create table copy_emp as (select * from emp where 1=0);
4 create table copy_dept as (select * from dept where 1=0);
5.
6. alter table copy_dept add constraint pk_dept_dept primary key(deptno) ;