===约束是什么?===
约束是在数据库中保证数据库里表中数据完整性的手段。在Oracle 11g中使用的约束有主键约束、外键约束、唯一约束、检查约束、非空约束。其中主键约束
和唯一约束都被认为是参照约束。
---1主键约束---
主键约束是在每个数据表中只能有一个,但是一个主键约束可以由多个列组成,通常把由多个列组成的主键又叫做复合主键或组合主键。主键约束可以保证
主键列的数据没有重复值且值不为空,也可以说是唯一标识表中的一条数据。
---2外键约束---
外键约束之所以被认为是参照约束,是因为它主要用作把一个表中的数据和另外一个表中的数据进行关联,表和表之间的关联是为了保证数据库中数据的完
整性,使用外键保证数据完整性,也叫参照完整性。
---3唯一约束---
唯一约束和主键约束一样都是设置表中的列不能重复的约束,区别就是一个表中只能有一个主键约束,而却可以由多个唯一约束。通常情况下设置唯一约束
的目的就是使非主键列没有重复值。唯一约束与主键约束的另一个区别就是如果数据表中的某一列中有空值,那么久不能把这个列设置为主键值,而可以设置成唯一
约束。例如,如果在商品信息表中吧商品编号设置成了主键,但是还要保证商品的名称不重名时,就可以把商品名称设置为唯一约束。
---4检查约束---
检查约束是用来指定表中列的值的取值范围的。例如在员工信息表中员工年龄的列,如果要使员工年龄列的值为18~50,就可以检查约束进行设置,当输入
的值不能再有效范围内时,就会出现错误。这样就保证了数据库中数据的有效性。
---5非空约束---
非空约束是用来约束表中的列不允许为空的。例如,在员工信息表中员工身份证号码列,要求员工必须输入时,可以使用非空约束来保证该列不能为空。
好了,下面实战:
===1主键约束===
---使用ALTER TABLE语句为表添加主键约束---
在创建表时如果没有创建主键约束,可以在修改表时为表添加主键约束。
添加主键约束语法:
ALTER TABLE table_name
ADD CONSTRAINTS constraint_namePRIMARY KEY(column_name);
说明:
constraint_name:主键约束指定数据表的列名。
column_name:主键约束指定数据表的列名。
例:
SQL> ALTERTABLE scott.catetoryinfo
2 ADD CONSTRAINTSpk_category primarykey(categoryid);
SQL>表已修改
这样就创建了主键约束,主键约束名的名称是pk_category,创建的主键列是categoryid.
---移除主键约束---
ALTERTABLE table_name
DROPconstraint constraint_name;
说明:table_name表名
constraint_name要移除的约束名称
===外键约束===
---使用外键约束创建商品信息表---
外键约束是建立在两张表中的约束,需要在创建表的语句后面加上如下语句:
CONSTRAINTconstraint_name FOREIGNKEY(column_name)
REFERENCEtable_name(column_name)
ONDELETE CASCADE;
说明:
constraint_name:创建外键约束名字
FOREIGNKEY:指定外键约束的列名
REFERENCE:要引用的表名
ON DELETE CASCDE:设置级联删除,当主键字段被删除时,外键所对应的字段被同时删除。
例:
SQL>CREATE TABLEPRODUCTINFO1
1(productid varchar2(10),
2productname varchar2(20),
3productprice number(8,2),
4quantity number(10),
5....
6primary key (productid),
7constraint fk_proFOREIGN KEY(categoryid)
8REFERENCE categoryinfo(categoryid)
9ON DELETECASCADE);
---在修改数据库表时添加外键约束---
ADD CONSTRAINTconstraint_name FOREIGNKEY(column_name)
REFERENCEtable_name(column_name)
ONDELETE CASCDE;
---移除外键约束---
ALTER TABLEproductinfo1
DROPCONSTRAINT fk_pro;