mysql索引详细介绍

索引

前言

总所周知,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快。而支撑这一快速的背后就是索引;MySQL索引问题也是大家经常遇到的面试题模块,想想自己也没有去系统地总结过索引,所以记录这篇文章来讲下索引。下面还是按照是什么->有什么用->怎么用->来写

阅读更多

Mysql基础


本单元目标

难点:

SQL高级语句:group by ,having ,左连接,,子查询(in),行转列等

建表方面的第三范式和反

MySQL集群

基础

懂得查看日志,排查问题

less命令打开文件

通过grep方式查关键字,grep 关键字 文件名

通过vi编辑文件

通过chmod来设置文件的权限

一、为什么要学习数据库

1.持久化数据

2.方便检索

3.存储大量数据

4.共享、安全

5.通过组合分析,获取新的数据

阅读更多

mysql数据类型


数据类型

image-20200322012109828

字符串类型:

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

CHAR 、 VARCHAR

  • char是长度固定的,不变的,长度在0-255字节 ;而varchar是长度可变的,长度在0-65535。同时,char后面的空格不会保留,而varchar会保留。还需注意的是oracle中的两个字节表示一个汉字,mysql中只需一个。
1
2
3
4
char定长:磁盘空间比较浪费,但是效率高,确定数据长度都一样,就使用定长
比如:生日时间、身份证号
varchar变长:比较节省空间,但是效率低,数据不能确定长度(不同数据长度有变化),不过例如varchar(5)所占的字节数是实际长度的基础上加1,后面还有结束标识符
比如:地址

BINARY、VARBINARY

  • 两者的关系和上面char和varchar很像,只不过它们是存储二进制字符串,包含字节字符串。

BLOB

  • BLOB 是一个二进制大对象,可以容纳可变数量的数据,分为TINYBLOB(0-255)、BLOB(0-65535)、MEDIUMBLOB 和 LONGBLOB。
  • MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的。
  • 但是有时存储的文件过大,数据库性能就会下降。

TEXT

  • 存储文字,大的一些文本等,也是四种类型,大小关系和上面的一样

    • 上图的就可以看出分类,不过这个数据类型不怎么使用。

ENUM和SET

  • ENUM看名字就知道了,这是一种枚举类型的数据类型,事先将可能出现的结果都定义好,实际存储的数据必须是枚举中的一个,不能随意存储。

    1
    2
    格式:字段名 enum('值1','值2',...,'值n') NULL/NOT NULL
    列表中的每个值都有一个顺序排列的编号,MySQL中存入的是这个编号,就是可以对应其位置来取到相应的值,同时如果存储不是枚举的值,如果类型后面加上了null属性,其默认值为取值列表中的第一个元素。如果不加not null属性,enum类型将允许插入null,而且null为默认值.
  • SET支持去重,可以存储多个元素,如果要选取列表中多个值的组合,就要选择set类型

    1
    2
    格式:字段名 set('值1','值2',...,'值n') NULL/NOT NULL
    这里的同enum类型一样,列表中的每个值都有一个顺序排列的编号
  • 记住这两种类型的数据都不是直接将数据存入数据库,而是将其列表中的编号存入数据库。