欢迎观看指点
你好! 这是我对mysql有一定了解及使用经验后再次学习整理的文章。如果你是有一定使用经验, 但对mysql不精通的,可以仔细阅读这篇文章,相信会有一定收获。如果是mysql大神,请自动略过本文章。
我想做出些改变
做java出身的一定对mysql不陌生,但是我相信大部分都不会说对mysql已经精通。很多都停留在使用简答增删改查的阶段。更别说在现在框架这么集成的情况下了,Mybatis-Generator使用之后基本简单的项目不会再对SQL语句进行复杂的编写,很多人就慢慢把mysql技能遗忘掉了,那么我也觉得自己该把想要的技能捡起来了,所以这是一次新的改变,在这篇文章我主要学习记录:
1. 数据库的索引
2. 数据库设计规范
3. 索引设计
4. 字段设计
索引
MySQL索引的建立对于MySQL的高效运行是很重要的,那么索引分为几种?
##索引类型分为:
1.FULLTEXT 全文索引
2.HASH HASH索引
3.BTREE BTREE索引
4.RTREE RTREE索引
###怎么创建索引种类的索引?
首先从数据结构角度分为:
1.全文索引
-- 当前InnoDB的全文索引还存在以下限制:v5.6
-- 每张表只能有一个全文检索的索引
-- 由多列组合而成的全文检索的索引列必须使用相同的字符集与排序规则
-- 不支持没有单词界定符的语言,如中文、日语、韩语
公式:CREATE FULLTEXT INDEX 索引名 ON 表名(列名);
2.HASH索引
create index hash_id using hash on tablename(cloumname);
公式:create index 索引名 using hash on 表名(列名);
3.BTREE索引和RTREE索引
这里不做解释,因为不会用到,感兴趣的可以自己去查询一下。
普通索引:仅加速查询
唯一索引:加速查询 + 列值唯一(可以有null)
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
全文索引:对文本的内容进行分词,进行搜索
1、主键索引:主键索引是一种特殊的唯一索引,不允许有空值
2、普通索引或者单列索引
3、多列索引(复合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合
4、唯一索引或者非唯一索引
5、空间索引:空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建
**CREATE TABLE table_name[col_name data type]
[unique|fulltext|spatial][index|key][index_name](col_name[length])[asc|desc]**
1、unique|fulltext|spatial为可选参数,分别表示唯一索引、全文索引和空间索引;
2、index和key为同义词,两者作用相同,用来指定创建索引
3、col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择;
4、index_name指定索引的名称,为可选参数,如果不指定,MYSQL默认col_name为索引值;
5、length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;
6、asc或desc指定升序或降序的索引值存储