本帖最后由 xioaxu790 于 2014-1-22 10:25 编辑
一、约束类型 非空约束、唯一约束、主键约束、外键约束、检查约束 二、创建约束 1、创建主键约束语法为: ALTER TABLE table_name ADD CONSTRAINT primary_key_name PRIMARY KEY column_name 删除主键约束语法为: ALTER TABLE table_name DROP PRIMARY KEY 2、创建唯一约束语法为: ALTER TABLE table_name DROP PRIMARY KEY -----必须先删除该列上的的主键约束,才能创建唯一约束 ADD CONSTRAINT constraint_nameUNIQUE(column_name) 删除唯一约束语法为: ALTER TABLE table_name DROP UNIQUE unique_name
3、创建检查约束语法为: ALTER TABLE table_name ADD CONSTRAINT check_name CHECK (logical_expression) -----列名及其检查条件 ENFORCED ----强制此约束 ENABLE QUERY OPTIMIZATION -----在查询优化期间考虑此约束 删除检查约束语法为: ALTER TABLE table_name DROP CONSTRAINT check_name 4、创建外键约束语法为: ALTER TABLE table_name ADD CONSTRAINT foreign_name FOREIGN KEY column_name REFERENCES 主表名(列名) ON DELETE [NO ACTION | RESTRICT | CASCADE | SET NULL] ON UPDATE [NO ACTION | RESTRICT] ENABLE QUERY OPTIMIZATION 删除外键约束语法为: ALTER TABLE table_name DROP FOREIGN KEY foreign_key_name 说明: 在更新规则中: RESTRICT:如果从表中的任何行与改建的原始值相匹配,会拒绝更新。 NO ACTION :如果从表中的任何行没有相应的父键,会拒绝更新。 在删除规则中: RESTRICT或NO ACTION:发生错误时不会删除任何行。 CASCADE:删除操作会传播至从表中的父键。 SET NULL:从表中的外键的每个可空列被设置为空。 三、索引 1、创建索引语法为: CREATE [UNIQUE] INDEX index_name ON table_name( column_name [ASC | DESC] ) NOT PARTITIONED ----指定索引必须搜索表的所有数据分区,table_name必须是数据分区的表名 IN tablespace_name INCLUDE( column_name ) ----只能在唯一索引上使用 CLUSTER ----一个表只能有一个集群索引 PCTFREE 10 | PCTFREE( integer1 ) ----integer1取值为0—99 MINPCTUSED( integer2 ) -----integer2取值为0—99,推荐采用小于等于50的值 ALLOW REVERSE SCANS | DISALLOW REVERSE SCANS ---前者指定支持前向和反向索引,后者指定仅支持前向索引 PAGE SPLIT SYMMETRIC ---默认值,指定按关键字将索引页对称的分开 COLLECT STATISTICS DETAILED SAMPLED
2、查看已创建的索引: SELECT * FROM SYSIBM.SYSINDEXES WHERE NAME=’index_name’ AND CREATOR=’schema_name’ ---必须大写
3、重命名索引: RENAME INDEX old_index_name TO new_index_name
4、删除索引: DROP INDEX index_name |