维护数据完整性,约束
NOT NULL
UNIQUE 不可重复,但可以为NULL,可以有多个NULL
PRIMARY KEY 主键,不可重复,不能为NULL,自动充当索引列。 (一个表只能有一个主键,但可以有多个UNIQUE)
FOREIGN KEY 外键,指向主键也可以指向UNIQUE列,可以为NULL
CHECK() , CHECK(expr)
ALTER TABLE table_name MODIFY column_name 约束名
ALTER TABLE table_name ADD CONSTRAINT 约束名 约束类型(columns)
ALTER TABLE table_name DROP CONSTRAINT 约束名
当删除主键时,如果有外键关联, 可以先把关联的表的外键设为NULL。 或者 使用 CASCADE 级联删除。
SEQUENCE
自增长, SQLSERVER 使用的是 IDENTITY(1,1); MYSQL 使用的是 AUTO_INCREMENT
在ORACLE 中 SEQUENCE 是作为一个对象来使用的可以便于管理。
CREATE SEQUNCE seq_name START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE n CYCLE NOCACHE
CYCLE 当seq到MAXVALUE时重新开始。
NOCACHE 不使用缓存,(如果使用缓存,会一次性取出多个值,可能存在并发问题)
seq_name.nextval 取出下一个值
seq_name.currval 取出当前值, 注意如果还没有调用nextval就调用currval 会报错,也就是说在使用currval之前必须先使用nextval。
索引
CREATE INDEX index_name ON table_name(columns) // 单列索引,多列索引
索引分类 : B tree 索引,反向索引,位图索引,唯一索引,非唯一索引
http://www.cnblogs.com/shouwangzhe-/p/3680752.html
权限和角色
权限分为系统权限,对象权限。
系统权限 : 对数据库管理操作,以及对数据对象创建和修改
对象权限 : 对数据对象的操作,INSERT UPDATE, DELETE ...
角色,指的是多个权限的集合,为了简化操作。
预定义角色
自定义角色。