mysql 键 索引_五、MySQL索引和键

MySQL索引和键

(不同的索引有不同功能 ,不同的约束方式,不同的使用规则)

优点:对一张表来说,索引就像一本书的目录,能够加快查询速度

缺点:占用物理存储空间 (索引信息存储在表对应的文件里)

会降低插入、更新表记录的速度(insert   delete   update)

1.索引的类型

普通索引:index

唯一索引:unique

全文索引:fulltext

2.各个索引的说明

(1).index 普通索引

一个表中可以有多个INDEX字段

把经常做查询条件的字段设置为INDEX字段

INDEX字段的KEY标志是MUL

对应的字段值允许有重复

样例1:

建表时设置索引字段。(默认索引字与字段名相同)

create   table   tea(

name  char(10) not null,

age  int(3) not null,

index(name)

);

样例2:

把已有表里的字段设置为index字段。

create   index  索引名  on  表名(字段名);

create  index   name  on  stu_info(name);

create  index   name  on  stu_info(name,sex);

删除指定表的索引字段

drop  index  索引名  on  表名;

drop  index  name  on  stu_info;

注:index使用BTREE  算法   (二叉树算法)

查看表的索引信息:show  index  from stu_info;

(2)unique 唯一索引

字段值不允许有重复,UNIQUE字段的值允许为NULL,【当将其修改为不允许为NULL,则此字段限制与主键相同】

一个表中可以有多个UNIQUE字段

UNIQUE字段的KEY标志是UNI

样例:

create  table  tea23(

id int(3),

name char(3),

unique(id)

);

create unique index  stu_id   on   stu_info(stu_id);

3.键

主    键:primary  key

外    键:foreign   key

(1). primary   key

一个表中只能有一个PRIMARY字段

字段值不允许有重复,不允许为null

主键字段的KEY标志是PRI

如果有多个字段都作为PRIMARY KEY,称为复合主键,必须在建表时一起创建

通常与 AUTO_INCREMENT 连用 (字段的值自动增长 +)

把能唯一定位一条记录的字段设置为主键字段

样例:

create table baitao(lf int(3),primary key(lf));

alter table  stu_info add  primary key(id)

alter   table  表名   drop    primary  key;

(2).foreign    key   * 外      键

字段类型要一致

表的存储引擎必须是innodb

被参考字段必须是索引类型中的一种。

FOREIGN  KEY(字段名)   References  表B(字段名)  ON  UPDATE CASCADE

ON  DELETE  CASCADE

样例:

create   table  yg_info(yg_id  int(3) primary key  auto_increment,name  varchar(15) not null,index(name))engine=innodb;

create  table  gz_tab2(

id  int(3) primary  key   auto_increment,

name   varchar(15) not null,

gz_id   int(3)   not  null,

gz  float(7,2),

FOREIGN  KEY(gz_id)    References  yg_info(yg_id)

on update cascade   on  delete  cascade

)engine=innodb;

insert into  yg_info(name)values("jim");

insert into  yg_info(name)values("tom");

insert  into  gz_tab(name,gz_id,gz)values("jim",1,20000);

insert  into  gz_tab(name,gz_id,gz)values("tom",2,20000);

update   yg_info  set  yg_id=20  where name="tom";

delete from yg_info where yg_id=20;

(3).primary key 复合主键

(主键字段的值 不可以同时相同 )

ip             ser_name     port     status

1.1.1.1        vsftpd        21        deny

1.1.1.1        sshd          22        allow

2.2.2.2        sshd          22        allow

1.1.1.10        sshd         22        deny

create  table   sertab(

ip    varchar(15),

ser_name  varchar(15),

port   int(3),

status  enum("deny","allow")  default "deny",

primary key(ip,port)

);

本文出自 “刘福” 博客,请务必保留此出处http://liufu1103.blog.51cto.com/9120722/1656829

五、MySQL索引和键

标签:mysql索引和键

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://liufu1103.blog.51cto.com/9120722/1656829

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值