1.简述索引的概念与作用
索引:是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表
作用:在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应行的位置,从而快速的找到数据
2.索引的好处以及可能带来的弊端
索引的好处:
1、索引能够提高数据检索的效率,降低数据库的IO成本。
2、索引还有一个非常重要的用途,就是降低数据的排序成本。
每个索引中的索引数据都是按照索引键值进行排序后存放的,所以,当我们的query语句中包含排序分组操作的时候,如果我们的排序字段和索引字段刚好一致,MySQL Query Optimizer就会告诉mysqld在取得数据后不用排序了。分组操作没办法直接利用索引完成,但是分组操作是需要先进行排序后才分组的,所以如果Query包含这些操作,那么分组操作就省去了排序的过程。
排序分组操作主要消耗的是我们的内存和 CPU 资源,如果我们能够在进行排序分组操作中利用好索引,将会极大的降低 CPU 资源的消耗。
索引的弊端:
1、需要增加IO和调整索引所计算的量。索引占用存储空间,随着table数据里增长,索引数据量也会增长,带来存储空间的消耗。
3.索引有哪几类?简述各类索引的特点
(1)普通索引index:最基本的索引类型,没有唯一性之类的限制
(2)唯一性索引unique:基本和普通索引类似,但是索引列的所有值都只能出现一次,即必须是唯一的
(3)主键primary key:主键是唯一性索引,每个表只能有一个主键
(4)全文索引fulltext:只能够在varchar和text类型的列上创建
4.primary key和unique索引有什么不同?
主键一定是唯一性索引,唯一性索引并不一定就是主键。一个表只能有一个主键,但可以有多个候选索引
- 主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
- 一个表中可以有多个唯一性索引,但只能有一个主键。
- 主键列不允许空值,而唯一性索引列允许空值
5.有几种方法创建索引,它们有什么不同?
1.直接
create index 索引名 on 表名(列名,...);
2.在建表时创建
create table 表名
(
...
index 索引名(列名)
);
3.使用alter table 创建
alter table 表名
add index 索引名(列名,...)
4.删除索引
(1)
drop index 索引名 on 表名
(2)
alter table 表名
drop 索引名
不同之处?
6.简述完整性的概念和作用
数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
7.简述数据完整性分类
数据完整性分为四类:实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)、用户自定义完整性(User-definedIntegrity)。
8.简述什么是外键和参照表,以及他们的关系
外键所在的表叫做参照表
9.可采用那些方法实现数据完整性
可采用外键、束约、规则和触发器。
主键约束、主键索引
替代键约束、唯一性索引
参照完整性约束、外键索引
check完整性约束
命名完整性约束