新建mysql数据表,AUTO_INCREMENT,COLLATE,INNODB是什么意思

CREATE table `users` (
		`id` int(11) NOT NULL AUTO_INCREMENT,
		`email` varchar(255) COLLATE utf8_bin NOT NULL,
		`password` varchar(255) COLLATE utf8_bin NOT NULL,
		PRIMARY KEY (`id`)
)	ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=1;

 第一行的AUTO_INCREMENT是mysql唯一扩展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成唯一的ID,再具体设置AUTO_INCREMENT约束时,一个表中只能有一个字段使用该约束,并且该字段的数据类型必须为整数类型。还有,我们习惯上将表中的一个列同时设置为AUTO_INCREMENT和主键,结尾的AUTO_INCREMENT=1也设置了id字段从1开始递增。  

COLLATE utf8_bin对于mysql中那些字符类型的列,如VARCHARCHARTEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。简而言之,COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响**DISTINCT****GROUP BY****HAVING**语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。

ENGINE=INNODB指定默认引擎

猜你喜欢

转载自www.cnblogs.com/R1card0/p/12380297.html
今日推荐