mysql 学习日志

!PART ONE:基础部分


1 mysql 的数据类型

1.1 numeric

BIT[(M)] 

bit 类型,M (0~64)指明长度,缺省时默认为1

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

微小整形(8bit),有符号取值范围:-128~127,无符号范围:0~255

BOOL,BOOLEAN 

语义上等价于 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

VARBINARY(M)

和VARCHAR类型差不多,但只能存储2进制bit

TINYBLOB

存储字节数据,最多可存储255个字节

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

最多可存储255个字符,于字符的编码无关,按字符数进行计算(CHAR 和 VARCHAR 都是按字节)

BLOB[(M)]

最多可存储65535个字节

TEXT[(M)] [CHARACTER SETcharset_name] [COLLATEcollation_name]

最多可存储65535个字节的字符串

MEDIUMBLOB

最多可存储16,777,215 (224− 1) bytes

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

最多可存储16,777,215 (224− 1) 字节的字符串

LONGBLOB

最多可存储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的对比,如图所示:

mysql 学习日志_第1张图片
CHAR 和VARCHAR存储对比

CHAR 不会产出碎片,但VARCHAR会产生碎片(varchar默认会多分配1~2个字节表明实际存储的长度,而字符串回收时多分配的数据是不会被回收的;CHAR中填充的字符串在字符串回收时会一起被回收掉 )

1.4 datetime

DATE

存储的日期格式'YYYY-MM-DD',允许的范围:'1000-01-01' ~ '9999-12-31'

DATETIME[(fsp)]

存储日期的日期格式:'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'

TIMESTAMP[(fsp)]

存储日期的日期格式:'YYYY-MM-DD HH:MM:SS[.fraction]'',范围1970-01-01 00:00:01.000000' to'2038-01-19 03:14:07.999999'(UTC)

TIME[(fsp)]

时间格式:HH:MM:SS[.fraction],存储范围:'-838:59:59.000000' ~ '838:59:59.000000'

YEAR[(4)]

格式 YYYY,范围:1901~2155和0000

2 mysql SQL语句

更新中......

!PART TWO:中级部分


1 mysql 权限相关

2 mysql 查询优化

3 SQL mode

!part THREE: 高级部分


1 mysql 查询解析过程

2 mysql 集群

3 mysql 分表

你可能感兴趣的:(mysql 学习日志)