mysql索引外键

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 外键名称


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值