@Adrian
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'xxxx'
DEFAULT CHARACTER SET utf8:数据库字符集。设置数据库的默认编码为utf8,utf8中间不要"-";
COLLATE utf8_general_ci:数据库校对规则。ci是case insensitive的缩写,意思是大小写不敏感;相对的是cs,即case sensitive,大小写敏感;还有一种是utf8_bin,是将字符串中的每一个字符用二进制数据存储,区分大小写。
如果建表的时候选择的是区别大小写的规则而查询的时候又暂时不想区别, 可以用类似 WHERE column_name COLLATE utf8_general_ci = ‘xxx’ 的写法改变查询使用的校对规则,新建数据 库时一般选用utf8_general_ci就可以了。
COMMENT ’ xxxx’ 表示注释。
USING BTREE
MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;你说的这个是用BTREE来创建索引,提高查询效率
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。
根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。
大多数存储引擎有更高的限制。MySQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;
MYISAM和InnoDB存储引擎只支持BTREE索引;MEMORY和HEAP存储引擎可以支持HASH和BTREE索引
B-tree索引是数据库中存取和查找文件(称为记录或键值)的一种方法.B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度.
一个B-tree的典型例子就是硬盘中的结点.与内存相比,硬盘花成倍的时间来存取一个数据元素,这是硬盘的机械部件读写数据的速度远远赶不上纯 电子媒体的内存.与一个结点两个分支的二元树相比,B-tree利用多个分支(称为子树)的结点,减少获取记录时所经历的结点数,从而达到节省存取时间的 目的.
ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
ENGINE=INNODB 表示将数据库的引擎设置为InnoDB,从MySQL 5.6开始默认使用该引擎。
AUTO_INCREMENT=8 表示自动增长的起始值为8
DEFAULT CHARSET=utf8表示设置数据库的默认字符集为utf8
row_format(fixed与dynamic)
在mysql中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。
若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。
所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表。