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

mysql 键 索引_五、MySQL索引和键相关推荐

  1. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  2. 整型索引查询mysql是不是快点_图解Mysql索引的数据结构!看不懂你来找我

    听说微信搜索<Java鱼仔>会变更强哦! 本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦 (一)关于索引 索引是帮助Mysql更加高效获取数据的 ...

  3. rds mysql 视图 索引_数据库 视图 索引

    SQL2K数据库开发二十二之索引操作在视图上创建索引 1.在企业管理器中,右击要创建索引的视图,在弹出的菜单中选择"设计视图"命令进入视图设计器. 2.在视图设计器中显示了视图所包 ...

  4. mysql 栅格数据结构_图解Mysql索引的数据结构!看不懂你来找我

    (一)关于索引 索引是帮助Mysql更加高效获取数据的一种数据结构,索引的使用很简单,但是如果不能理解索引底层的数据结构的话,就谈不上去优化索引了. (二)B+树 Mysql的索引用的是B+树,他具有 ...

  5. mysql5.6 函数索引_聊聊MySQL中的索引

    关于MySQL中的索引使用 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题. 索引的存储分类: 1.B-Tree索引:最常见的索引类型,大部分引擎都支 ...

  6. mysql判断是否建立索引_判断mysql中列是否要添加索引的标准

    最近再看mysql技术内部+innoDb存储引擎一书,书中第五章-索引与算法中讲到 查看表的索引信息中的一些参数含义,特作记录 show index from table_name ##  查看该表的 ...

  7. mysql为什么使用b 树作为索引_为什么Mysql用B+树作为索引

    该篇文章已经投稿给公众号hollis 1.什么是索引 索引这个词,相信大多数人已经相当熟悉了.不过为了文章的完整性,这里再啰嗦一下.索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的 ...

  8. 覆盖索引与联合索引_浅析MySQL的索引覆盖和索引下推

    写在前面 在MySQL数据库中,索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点,索引就是为了提高数据查询的效率.今天我们来聊聊在MySQL索引优化中两种常见的方式,索引覆盖和 ...

  9. mysql = 索引_深入MySQL索引

    MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...

  10. mysql手机客户端_图解MySQL索引--B-Tree(B+Tree)

    看了很多关于索引的博客,讲的大同小异.但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等 ...

最新文章

  1. Linux下面如何运行.sh文件
  2. Android 关于Edittext输入框光标焦点无法及时定位解决办法.
  3. 用平方映射理解tanh
  4. 2021年春季学期期末统.考试 公司概论 试题
  5. linux 终端 朗读,使Linux终端朗读文字的小技巧分享
  6. 3.5链表----链表中元素的删除(只删除一个元素情况)
  7. C语言,椰果数量问题,计算最少的椰果数
  8. 受疫情影响:中国智能手机市场Q1出货量下滑严重
  9. 模拟线性调制系统的仿真
  10. 解决pip2安装不成功的问题
  11. 51nod 1050循环数组最大字段和
  12. 数据挖掘-二手车价格预测 Task02:数据分析
  13. 手动绘制DataTable
  14. Delphi Web前端开发教程(7):基于TMS WEB Core框架
  15. 萌新卷妹带你逃出算法无名岛第五站
  16. dva的用法_dva基本用法
  17. 脱水冷冻干燥宠物食品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. NLP中的attention机制总结
  19. NRF51822裸机TIMER学习笔记
  20. redis 内存分析工具 `rma4go`

热门文章

  1. 安装tensorflow时候报错ImportError: DLL load failed: 找不到指定的模块。Failed to load the native TensorFlow runtime.
  2. EMNLP 2017 北京论文报告会笔记
  3. 最优化方法:拉格朗日乘数法(转)
  4. 阿里云容器Kubernetes监控(五) - 离线存储与归档Kubernetes事件
  5. java中NULL与 的区别
  6. 这么多年都白学了,原来是方法没有用对
  7. 《从零开始学Swift》学习笔记(Day 62)——Core Foundation框架之内存托管对象与非托管对象...
  8. CentOS7/RHEL7 systemd详解
  9. 【XenApp 6.5体验】SmartAuditor 1.3 Policy Console策略控制台打开报401错误的解决办法...
  10. 内置函数、匿名函数、递归、二分法