!PART ONE:基础部分
1 mysql 的数据类型
1.1 numeric
bit 类型,M (0~64)指明长度,缺省时默认为1
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
微小整形(8bit),有符号取值范围:-128~127,无符号范围:0~255
语义上等价于 TINYINT(1),值为0等价于‘false’,非0等价于'true',mysql 中定义了两常量,FALSE=0, TRUE=1
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
小整形(16bit),有符号范围:-32768~32767,无符号的范围:0~65535
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] 中整形(24 bit),有符号 -2147483648~2147483647, 无符号范围:0~4294967295
INT/INTEGER[(M)] [UNSIGNED] [ZEROFILL]
整形(32bit),有符号:-2147483648~2147483647,无符号范围:0~4294967295
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
大整形(64bit),有符号-9223372036854775808~ 9223372036854775807. 无符号:0~18446744073709551615
SERIAL
等价于BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
精度值(存储的形式为字符串吧),M显示的总的数字数(最大64,默认10),D显示的精度(最大30,默认0)
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
单精度浮点数(依赖硬件或操作系统的实现),取值范围:-3.402823466E +38 ~1.175494351E-38,0, 1.175494351E~38to3.402823466E+38
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
双精度浮点数(依赖硬件或操作系统的实现),取值:-1.7976931348623157E+308to-2.2250738585072014E-308,0, 2.2250738585072014E-308 1.7976931348623157 E+308
1.2 character
[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
M代码了字符串的最大字符数(0~255),若实际存储的字符串的长度小于定义的长度,将会从字符串的右边开始填充space到字符串的长度等于定义时的长度。当字符串回收时,填充的字符串将会被回收,除非开启了PAD_-CHAR_TO_FULL_LENGTH SQL mode,将不会被回收。
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]
变长字符串,M(0~65535)字符串的最大字符数,存储时将根据字符串的长度字段的分配字节,一般会多出1~2个字节,而且当字符串回收时,这些字符串是不会被回收的,所有VARCHAR类型会产生数据碎片。
BINARY(M)
和CHAR类型差不多,但只能存储2进制bit
和VARCHAR类型差不多,但只能存储2进制bit
存储字节数据,最多可存储255个字节
TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
最多可存储255个字符,于字符的编码无关,按字符数进行计算(CHAR 和 VARCHAR 都是按字节)
最多可存储65535个字节
TEXT[(M)] [CHARACTER SETcharset_name] [COLLATEcollation_name]
最多可存储65535个字节的字符串
最多可存储16,777,215 (224− 1) bytes
MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
最多可存储16,777,215 (224− 1) 字节的字符串
最多可存储4,294,967,295 or 4GB (232− 1) bytes
LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
最多可存储4,294,967,295 or 4GB (232− 1) 字节的字符串
ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]
最多有65535个不同的枚举值,存储的值只能是其中的一个枚举值
SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]
集合中最大的不同的元素的个数为64个,存储的值可以是这些元素中的0或多个值
1.3 CHAR ,VARCHAR, TEXT的对比
CHAR 和 VACHAR是按字符数进行计算长度的,TEXT是按字节数进行计算长度的
CHAR和VARCHAR的对比,如图所示:
CHAR 不会产出碎片,但VARCHAR会产生碎片(varchar默认会多分配1~2个字节表明实际存储的长度,而字符串回收时多分配的数据是不会被回收的;CHAR中填充的字符串在字符串回收时会一起被回收掉 )
1.4 datetime
存储的日期格式'YYYY-MM-DD',允许的范围:'1000-01-01' ~ '9999-12-31'
存储日期的日期格式:'YYYY-MM-DD HH:MM:SS[.fraction]', fsp(0~6)代表给出的精度,允许的范围:'1000-01-01 00:00:00.000000'to'9999-12-31 23:59:59.999999'
存储日期的日期格式:'YYYY-MM-DD HH:MM:SS[.fraction]'',范围1970-01-01 00:00:01.000000' to'2038-01-19 03:14:07.999999'(UTC)
时间格式:HH:MM:SS[.fraction],存储范围:'-838:59:59.000000' ~ '838:59:59.000000'
格式 YYYY,范围:1901~2155和0000
2 mysql SQL语句
更新中......
!PART TWO:中级部分
1 mysql 权限相关
2 mysql 查询优化
3 SQL mode
!part THREE: 高级部分
1 mysql 查询解析过程
2 mysql 集群
3 mysql 分表