网易MySQL微专业学习笔记(一)-mysql数据类型
前言
这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。 所有笔记可能不定期更新,发布时不一定为最终版。
正文
Number类型
整形
TINYINT 1 2的8次方
INT 4
SMALLINT 2
MEDIUMINT 3
BIGINT 8
用户量大时推荐bignit
int(11)与int(21)
存储空间,还是存储范围有区别?
两者本质上没任何区别,11不会因为比21小,所占用的空间比21小,存储范围也不会小。只在某些显示上可能会有些不同。
若存1,其他位数会自动补0,int(11)补10,21补20个。
浮点型
float 4字节 单精度 非精准
double 8字节 双精度 比float精度高
两者均是非精确的数据类型
精度丢失的问题
精度丢失–如工资被四舍五入等
定点数-更精确的数据类型
DECIMAL
- 高精度的数据类型,常用来存储交易相关的数据
- DECIMAL(M,N)M代表总精度,N代表小数点右侧的位数(标度)
- 1<M<254,0<N<60
- 存储空间变长
tinyint 非常适合存储性别
enum枚举类型会根据所定义值的总量变长。
性别、省份
首选 tinyint,在之后char,也可以enum
经验之谈:
存储性别、省份、类型等分类信息时选择tinynit或者enum
bigint存储空间更大,int和bignit之间通常选择bigint.
交易等高精度数据时选择使用decimal.
存储用户名的属性
char与varchar
存储单位都是字符
字符与字节的区别
utf8mb4(四字节) 若utf8(3字节)能乘下,就
java程序支持emoji表情
- mysql版本>5.5.3
- JDBC驱动版本>5.1.13
- 库和表的字符集设为utf8mb4
char存储定长,容易造成空间的浪费。
varchar存储变长,节省存储空间
例外:当仅存储n时,
char比varchar节省空间–极端情况。
text与char和varchar区别
char和varchar存储单位为字符
text存储单位为字节,总大小为65535字节,约64kb
char数据类型最大255字符。
varchar数据类型为变长存储,可以存储超过255个字节。
text在数据库内部大多存储格式为溢出页,效率不如char
blob、binary虽然可以,但不推荐。
经验之谈:
char与varchar定义的长度是字符串长度不是字节长度。
存储字符串推荐选择使用varchar(N),N尽量小。
虽然数据库可以存储二进制数据,但是性能低下,不要使用数据库存储文件音频等二进制数据,
存储生日信息
date
存储空间
三字节,如:2015-01-01
存储精度
年月日
time
三字节,如:11:12:00
时分秒
datetime
八字节,如:2015-01-01 11:12:00
包含date与time
存储范围:1000-01-01 00:00:00 to 9999-12-31 23:59:59
timestamp
四字节,如:2015-01-01 11:12:00
包含date与time
存储范围:1970-01-01 00:00:01 to 2038-01-19 03:14:07
mysql在5.6.4版本后,timestamp与datetime支持到微秒。
字段类型与时区的关联关系
timestamp会根据系统时区进行转换,datatime则不会。
国际化系统推荐使用timestamp。
bigint
如何存储时间类型
应用程序将时间转化为数字类型
from_unixtime()可将biginit类型的数字转为时间。
unix_timestamp()将时间转为bigint
经验之谈:
date和time类型精度较低
bigint类型也可以存储时间
数据类型选型,按需选择
bigint–可读性较差
除特别注明外,本站所有文章均为 Windcoder网 原创,转载请注明出处来自: wangyimysqlweizhuanyexuexibijiyi-mysqlshujuleixing

No Data