1,索引
什么是索引?
索引------搜索---引导------引导着我去搜索到某个记录的
定义:
没有索引的情况下,我们查询一条记录,需要从第一条记录一直往下查询,知道查找到我们需要的记录,如果记录数特别大的话,相当于大海捞针,速度特别慢
索引:建一个索引-----指向的是数据的位置-----反映到新华字典-----记录所在的页数
优势:
查询速度快了,但是不足:
增加了维护索引的工作量-----每增加一条记录----我就要在索引列表中增加一个索引号指向这条记录的位置
查询速度快了,但是增 删除 更新 速度慢了
索引的分类:
1,主键索引:当我们创建一个表后,指定主键后,自动将主键设置为主键索引
2,普通索引:就是在一个普通的字段上建立索引
3,唯一索引:数据表中的某个字段是唯一的,没有重复----
4,全文索引:在某个字段上建立全文索引,将记录内的关键字抽取出来,然后对每个关键字进行索引 sphinx-----可以建立全文索引
创建索引:
(1)create [索引类型] index 索引名 on 表名(表的某个字段上)
(2)alter table 表名 add [索引类型] index (表的字段)
(3)删除索引 drop index 索引名 on 表名
修改索引:
只能是先删除在增加
外键:
什么是外键:
学生举例:
每个学生对应一张
个人信息表(姓名,学号)
学生详细信息表(成绩,违纪记录,获得奖励,家庭地址,学费,)
这两个表通过外键关联之后,如果有一天你毕业了,应该将你姓名,学号删除,这个学生下面对应的详细信息(成绩,违纪记录,获得奖励,家庭地址,学费)自动删除
使用外键的条件:
(1)保证数据表的存储引擎必须是innoDB
(2)外键关系的两个表的列必须数据类型相似 int tinyint int----------varchar
外键定义的语法:
create table tem(id int, name varchar,foreign key(id) references outTable(id) on delete cascade on update cascade )
监听的外键表的行为:delete update
foreign key(id) 指定当前表哪个字段是外键
references 和外部哪个表关联
constrict ‘’; 指定一个名称,(外键关联的名称,为了将来删除这个外键的话,通过这个名称来删除)约束的名称
mysql> create table xiaodi(id intprimary key auto_increment,foreign_id int,name
varchar(32),constraint xiaodi_for foreignkey(foreign_id) references dage(id) o
n delete cascade on updatecascade)engine=innodb default charset=utf8;
(1)使用外键将两个表关联
在当前表创建外键字段------和外部表的某个字段可关联:foreign key(foreign_id) references dage(id)
关联起来之后监听着外部那个表,如果他删除了,我要做什么?如果他更新了,我又要做什么
on delete (参数3个) on update (参数3个)
删除外键:
alter table 表名 drop foreign key 外键名称