分享

RDBMS之完整性约束、索引与别名

xioaxu790 发表于 2014-1-22 10:22:46 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 5320
本帖最后由 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 :如果从表中的任何行没有相应的父键,会拒绝更新。
在删除规则中:
RESTRICTNO 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取值为099
MINPCTUSED( integer2 )         -----integer2取值为099,推荐采用小于等于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

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条