前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网易MySQL微专业学习笔记(一)-mysql数据类型

网易MySQL微专业学习笔记(一)-mysql数据类型

作者头像
WindCoder
发布2018-09-19 18:20:52
7300
发布2018-09-19 18:20:52
举报
文章被收录于专栏:WindCoderWindCoder

前言

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的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--可读性较差

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • Number类型
      • 浮点型
        • 经验之谈:
          • 经验之谈:
            • 存储生日信息
              • 如何存储时间类型
            • 经验之谈:
            相关产品与服务
            云数据库 SQL Server
            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档