MySQL的约束和索引

来源:互联网 发布:java学生管理系统源码 编辑:程序博客网 时间:2024/05/16 06:31

一、约束:
1.非空约束 not null;
2.唯一约束 unique(); uk
unique约束的字段,要求必须是唯一的,但null除外。
3.主键约束 primary key (); pk
主键约束=not null+unique
4.外键约束:foreign key() references (参考),fk
constraint fk_dept_id foreign key (dept_id)
references dept(dept_id) ;
示例:
//constraint uk_name 可以省略不写
//uk_name 唯一约束名;
//pk_name 主键约束名
create table member(
id int(10),
phone int(15) unsigned zerofill,
name varchar(30) not null,
constraint uk_name unique(name),
constraint pk_id primary key (id),
constraint fk_dept_id foreign key (dept_id,字段2)
references dept(主表1)(dept_id)
);

二、数据库索引
作用:提高查询速度,确保数据的唯一性
可以加速表和表之间的连接,实现表与表之间的参照完整性
使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
全文检索字段进行搜索优化;
1.索引的种类
1.1.主键索引(Primary key)
1.2.唯一索引(unique)
1.3.常规索引(index)
作用:快速定位特定数据
//添加一个索引 index_name。
alter table emp add index index_name(name);
create index index_name on emp (name);
//删除表emp中的index_emp索引。
drop index_name on emp;
alter table emp drop primary key;
1.4.全文索引(full text)
2.索引的准则:
1.索引不是越多越好;
2.不要对经常变动的数据加索引;
3.小数据量的表建议不要加索引;
4.索引一般应加在查找条件的字段;
3.什么时候添加索引?
在 where、order by 子句中经常使用的字段;
字段的值是多个(例如性别字段则不适合);
字段内容不是经常变化的,经常变化的字段,添加索引反而降低性能;
不宜过多添加索引,每添加一条索引都会占用磁盘空间;
个人了解:
存储器、触发器、定时器、视图。
0 0
原创粉丝点击