主键、外键和索引的区别?
主键 | 外键 | 索引 | |
---|---|---|---|
定义: | 唯一标识一条记录,不能有重复的,不允许为空 | 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 | 该字段没有重复值,但可以有一个空值 |
作用: | 用来保证数据完整性 | 用来和其他表建立联系用的 | 是提高查询排序的速度 |
个数: | 主键只能有一个 | 一个表可以有多个外键 | 一个表可以有多个惟一索引 |
聚集索引和非聚集索引的区别?
聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。
聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。
Mysql和Oracle创建主键:
1、MySQL
create table user_test
(id int auto_increment primary key not null,
name varchar2(15));
2.Oracle
create table user_test (
id int,
name varchar2(15),
constraint PK_ user_test primary key (id) );
修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名),前提是原先没有设置主键。
创建外键:
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;
创建组合键:
alter table tb_name add primary key (字段1,字段2,字段3);
ORACLE支持五种类型的完整性约束
NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束. POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.