oracle之數據處理之約束練習

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 employees

	create table dept2 as select department_id id, department_name dept_name from departments

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章