MySQL中的数据类型 [数值型、字符串型、时间日期型]
MySQL中各数据类型
1. 数值类型(整型)
类型 数据大小 类型 (无符号:unsigned) 数据大小 存储空间
tinyint -128 到 127  tinyint unsigned  到 255  1
smallint -32768 到 32767 smallint unsigned 0 到 65535  2
mediumint -8388608 到 8388607 mediumint  unsigned  到 16777215 3
int 或 integer -2147483648 到 2147483647 int unsigned 或 integer unsigned  到 4294967295 4
bigint -9223372036854775808 到 9223372036854775807 bigint unsigned 0 到 18446744073709551615  8
2. 时间和日期类型
类型 “ 零 ” 值 存储空间
time '00:00:00' 3
date '0000-00-00' 3
datetime '0000-00-00 00:00:00' 8
year 0000 1
timestamp 0000000000000000 4
3. 字符串类型
char与varchar的区别:
char:固定长度字符串。长度可以指定为从0到255的任何值。当保存char值时,在它们的右边填充空格以达到指定的长度。当检索到char值时,尾部的空格被删除掉。
varchar:可变长度字符串。长度可以指定为0到65,535之间的值。另外varchar需要用额外的1-2个字节存储字符串长度 。当检索到varchar值时,尾部的空格仍然保留。因此,VARCHAR列的有效最大长度为65,532字符。
  • varchar(M):1. 当字符串长度M小于255时,用额外的1个字节来记录长度,存储空间L+1。[L为值的长度]

2. 当字符串长度M大于255时,用额外的2个字节来记录长度,存储空间L+2。[L为值的长度]

       char(M):存储空间 = 指定的长度 (0 <= M <= 255)

  • 比如:char(255)和varchar(255),在存储字符串"hello world"时:

char会用255个字节的空间放那个11个字符;
       varchar就不会用255个,它先计算字符串长度为11,然后再加上一个记录字符串长度的字节,一共用12个字节存储,这样varchar在存储不确定长度的字符串时会大大减少存储空间。

  • 从效率上考虑,固定长度,存储空间一次性分配,CHAR更好(长度较短的字段:门牌号等、固定长度的字段:性别、身份证号、手机号等)。
  • 从空间上考虑,可变长度,根据长度动态调整存储空间,VARCHAR更好。
  • 下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:
char(4) 存储空间 btyes varchar(4) 存储空间 btyes
'' '    ' 4 '' 1
'ab' 'ab  ' 4 'ab ' 3
'abcd' 'abcd' 4 'abcd' 5
'abcdefgh' 'abcd' 4 'abcd' 5

另外:

1. varchar(n):为n个字节的可变长度,且非Unicode的字符数据。n的值必须介于1与8,000之间的数值。存储大小是输入数据的字节的实际长度
2. nvarchar(n):为n个字符的可变长度,且Unicode字符数据。n的值必须介于1与4,000之间的数值。存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
4. 数值类型的存储空间
类型 存储空间
tinyint 1
smallint 2
mediumint 3
int,integer 4
bigint 8
float(p) 如果0 <= p <= 24为4个字节,
如果25 <= p <= 53为8个字节
double 8
decimal(M,D),numeric(M,D) 变长
bit(M) 大约(M+7)/8个字节
decimal和numeric类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值,并且要指定标度和精度,例如货币数据。
  • 实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值。
  • 其他小数类型,都可以使用float和decimal来替代,例如,双精度(double precision)数据类型等价于 float(53),real等价于float(24)。
  • numeric是 decimal的同义词,应该避免在程序中直接使用 double precision、real和numeric,而是用 float(24) 、float(53)和decimal 代替。
5. 字符串类型的存储空间 [L为值的长度]
类型 存储空间 (字节)
char(M) M,0 <= M <= 255
varchar(M) L+1 或 L+2,其中L <= M 且0 <= M <= 65532
binary(M) M,0 <= M <= 255
varbinary(M) L+1个字节,其中L <= M 且0 <= M <= 255
tinyblob
tinytext
L+1个字节,其中L < 28
blob,text L+2个字节,其中L < 216
mediumblob
mediumtext
L+3个字节,其中L < 224
longblob
longtext
L+4个字节,其中L < 232
enum('value1','value2',...) 1或2个字节,取决于枚举值的个数(最多65,535个值)
set('value1','value2',...) 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)
VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示)。
varbinary、binary、char、varchar异同:
1.
binary 与 varbinary 类型和char与varchar类型是相似的,只是他们存储的是二进制数据,也就是说他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于字节的数值进行的。
binary与varbinary的最大长度和char与varchar是一样的,只不过他们是定义字节长度,而char和varchar对应的是字符长度。
2.
存储和取出时对尾部空格的处理:
  char(N)用来存储非二进制字符串,插入时,对于少于N个字符的会自动在尾部加空格,查询时,尾部的空格就会被丢弃掉
  vachar(N) 用来存储非二进制字符串,插入时,对于少于N个字符的不填补空格,查询时,尾部的空格不会被丢弃掉
  binary(N)存储二进制字符串,插入进,少于N个字节的会自动在尾部加0x00,取出时,所有的字节都保留,返回定义长度的字节长度,在比较的时候,所有的字节都是有效的,并且0x00<space (space对应的是0x20)
  varbinary在插入不会去填补0x00字节,查询的时候也不会丢弃任何字节,在比较的时候,所有的字节都是有效的,并且0x00<space (space对应的是0x20)
3.
大小比较时:
  char与varchar的字符比较中,是忽略大小写与最后的空格的。
       binary及varbinary的字节比较中,所有的信息都不会被忽略。
 
参考文档:
MySql中char、varchar和nvarchar的区别:https://www.cnblogs.com/zeroingToOne/p/9568687.html
MySql中bigint、int、mediumint、smallint 和 tinyint的取值范围:https://blog.csdn.net/iteye_7932/article/details/82399758
数据库中char, nchar,varchar, nvarchar的差异:https://jingyan.baidu.com/article/c85b7a645639ac003bac959a.html
SQL Server 小数类型(float 和 decimal):https://www.cnblogs.com/ljhdo/p/4910699.html
mysql中varbinary、binary、char、varchar异同:https://www.cnblogs.com/zejin2008/p/6606120.html
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

MySQL中的数据类型 [数值型、字符串型、时间日期型]的更多相关文章

  1. MySQL 中的数据类型介绍(转)

    据我统计,MySQL支持39种(按可使用的类型字段统计,即同义词也作多个)数据类型.下面的介绍可能在非常古老的mysql版本中不适用. 转载出处:http://blog.csdn.net/anxpp/ ...

  2. MySQL中各种数据类型的长度及在开发中如何选择

    接触MySQL这个数据库大概快要两年了,不过由于没有特别深入系统的去学习,大多也是停留在一知半解的状态.今天在工作中刚好碰到了表设计的问题,顺便写篇博客,把MySQL中数据类型和字段类型选择这方面给弄 ...

  3. 存储引擎和表的操作(mysql中的数据类型、完整性约束)

    一.存储引擎 .概念 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. 通过选择不同的技术 ...

  4. 【个人笔记】《知了堂》MySQL中的数据类型

    MySQL中的数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) ...

  5. 抛砖系列之-MySQL中的数据类型JSON

    今天介绍一个MySQL中的数据类型-JSON,相信大家对JSON都不陌生,在日常工作中使用到的频率也很高,话不多说,直接开始. 何谓JSON 看下RFC文档对于JSON的描述 1.基于 JavaScr ...

  6. MySQL 中的数据类型介绍

    1.MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 2.数值类型(12) 2.1. ...

  7. 存储引擎,MySQL中的数据类型及约束

    存储引擎,MySQL中的数据类型及约束 一.存储引擎 1.不同的数据应该有不同的处理机制 2.mysql存储引擎 ​ Innodb:默认的存储引擎,查询速度叫myisam慢,但是更安全 ​ 支持事务, ...

  8. MySQL中的数据类型及创建

    MySQL创建: 1.创建数据库create database test2; 2.删除数据库drop database test2;3.创建表create table ceshi(    ids in ...

  9. vb.net字符串格式转为日期型

    vb.net字符串格式转为日期型  比如 "20080815" 转换为"2008-05-15"Dim a As Date  Dim s As String = ...

随机推荐

  1. 逆向bfs搜索打表+康拓判重

    HDU 1043八数码问题 八数码,就是1~8加上一个空格的九宫格,这道题以及这个游戏的目标就是把九宫格还原到从左到右从上到下是1~8然后最后是空格. 没了解康托展开之前,这道题怎么想都觉得很棘手,直 ...

  2. Codevs 2188 最长上升子序列(变式)

    2188 最长上升子序列 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题目描述 Description LIS问题是最经典的动态规划基础问题之一.如果要求一个 ...

  3. Makefile(三)

    在平时使用中,可以使用以下的makefile来编译单独的代码 src = $(wildcard *.c) obj = $(patsubst %.c, %.o, $(src)) CC = gcc CFL ...

  4. 基于CentOS 7下最小化安装的操作系统搭建Zabbix3.0环境

    环境说明 系统版本:CentOS Linux release 7.3.1611 (Core) 内核版本:3.10.0-514.el7.x86_64 Httpd版本:Apache/2.4.6 (Cent ...

  5. OpenDayLight安装Features

    OpenDayLight 0.4.4-Beryllium-SR4 opendaylight-user@root>feature:install odl-restconf opendaylight ...

  6. tensorflow feeddict问题unhashable type: 'numpy.ndarray'

    https://stackoverflow.com/a/49134587 求argmax.加newaxis.转变data类型时尽量用tf自带的函数: tf.argmax.[tf.newaxis, :] ...

  7. 【软件工程】Beta版本演示

    团队信息 队名:女生都队 组长博客: 博客链接 成员 学号 史恩泽(组长) 031702122 施金海 031702121 阮君曦 031702116 陈银山 031702137 李季城 031702 ...

  8. (转载)完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三

    转自:http://blog.csdn.net/piggyxp/article/details/6922277 前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何 ...

  9. react-native关闭所有黄色警告

    写RN经常会遇到黄色警告,很无奈,很多很多的黄色警告都是由组件自己导致的,建议在index.js 内的 AppRegistry.registerComponent('shareFile', () =& ...

  10. 演示Java如何调用Mysql的过程和函数

    这里只演示Java如何调用Mysql的过程和函数 --------------------------------------------------------------------------- ...