57. 定义非空约束1). 非空约束只能定义在列级.2). 不指定约束名create table emp2 (name varchar2(30) not null, age number(3));3). 指定约束名 create table emp3(name varchar2(30) constraint name_not_null not null, age number(3));58. 唯一约束1). 列级定义①. 不指定约束名create table emp2 (name varchar2(30) unique, age number(3));②. 指定约束名create table emp3 (name varchar2(30) constraint name_uq unique, age number(3));2). 表级定义: 必须指定约束名①. 指定约束名create table emp3 (name varchar2(30), age number(3), constraint name_uq unique(name));58.1 主键约束:唯一确定一行记录。表明此属性:非空,唯一 59. 外键约束1). 列级定义①. 不指定约束名create table emp2(emp_id number(6), name varchar2(25), dept_id number(4) references dept2(dept_id))②. 指定约束名create table emp3(emp_id number(6), name varchar2(25), dept_id number(4) constraint dept_fk3 references dept2(dept_id))2). 表级定义: 必须指定约束名①. 指定约束名create table emp4(emp_id number(6), name varchar2(25), dept_id number(4),constraint dept_fk2 foreign key(dept_id) references dept2(dept_id))60. 约束需要注意的地方1). ** 非空约束(not null)只能定义在列级2). ** 唯一约束(unique)的列值可以为空3). ** 外键(foreign key)引用的列起码要有一个唯一约束 61. 建立外键约束时的级联删除问题:1). 级联删除:create table emp2(id number(3) primary key, name varchar2(25) unique, dept_id number(3) references dept2(dept_id) on delete cascade)2). 级联置空create table emp3(id number(3) primary key, name varchar2(25) unique, dept_id number(3) references dept2(dept_id) on delete set null)
1. 向表emp2的id列中添加PRIMARY KEY约束(my_emp_id_pk)
ALTER table emp2
ADD constraint my_emp_id_pk primary key(id);2. 向表dept2的id列中添加PRIMARY KEY约束(my_dept_id_pk)
ALTER table dept2
ADD constraint my_dept_id_pk primary key(id)3. 向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,与之相关联的列是dept2表中的id列。
ALTER table emp2
ADD (dept_id number(10) constraint emp2_dept_id_fk references dept2(id));准备工作:create table emp2 as select employee_id id, last_name name, salary from employeescreate table dept2 as select department_id id, department_name dept_name from departments