mysql数据类型整理

电脑的基本数据容量单位。

电脑的一个字节等于8位,也就是1byte=8bit。
字节是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
bit中文名称是位,音译“比特”,是用以描述电脑数据量的最小单位。
计算机容量单位的换算关系是:
1Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB,1PB=1024TB,1EB=1024PB,1ZB=1024EB,1YB=1024ZB。

二进制转十进制。

把各个为拆开。乘以2的次幂。末尾位乘2的0次幂。依次类推。 

比如:10010111 

十进制=1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2+1*2^0 ;

PS:末尾位是2的零次幂,所以是1。

字符与字节。

字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。

UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。

Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。

 

数据表:也就是建立列的过程,数据是以文件的形式放在硬盘(也有的放在内存中)

列:不同的列类型占得空间不一样;选列的原则:够用,又不浪费

 

列类型详解

数值型

整形

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT 

1 字节

(-128,127)

(0,255)

小整数值

SMALLINT

2 字节

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 字节

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 字节

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

  1. 整型的符号
    mysql中数字数据类型是有符号和无符号两种
  2. 整型的数据宽度(即数据类型后的数字)和零填充

    a. 数据宽度和数据类型的取值范围是无关的

    b. 数据宽度只是指明MYSQL最大可能显示的数字个数,数值的位数小于M时会有空格填充;大于M时,只要该值不超过该类型整数的取值范围,数值依然可以插        入,而且能显示出来

    c. 数据宽度的效果需要配合zerofill使用

如下语句
age tinyint(1) ,
代表age这个字段是1个字符宽度,
但是如果不设置零填充式无效的,mysql将会忽略那个字符宽度。

下图为设置了zerofill之后,显示的数据

 

小数型

   

类型

大小

范围(有符号)

范围(无符号)

用途

FLOAT

4 字节

(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度
浮点数值

DOUBLE

8 字节

(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度
浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

定点小数值

浮点型的特点是小数点浮动,有精度丢失;定点型特点就是小数点固定,不会丢失精度。

单精度型能精确到七位,而双精度能精确到15位。选用这些数据类型时,要注意变量所取值的范围。

注意:1、浮点数存在误差问题; 2、对货币等对精度敏感的数据,应该用定点数表示或存储;

关于小数型的例子:

float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;

MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。

FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

  字符型

类型

大小

用途

CHAR

0-255字符

定长字符串

VARCHAR

0-65535 字符

变长字符串

TINYBLOB

0-255字符

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字符

短文本字符串

BLOB

0-65 535字符

二进制形式的长文本数据

TEXT

0-65 535字符

长文本数据

MEDIUMBLOB

0-16 777 215字符

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字符

中等长度文本数据

LONGBLOB

0-4 294 967 295字符

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字符

极大文本数据

定长char与变长varchar的区别:

char定义的是固定长度,长度范围为0-255,存储时,如果字符数没有达到定义的位数,会在后面用空格补全存入数据库中,数据库取char的数据时,会把后面的空格全部丢弃掉。

varchar是变长长度,长度范围为0-65535,存储时,如果字符没有达到定义的位数,也不会在后面补空格,当然还有一或两个字节来描述该字节长度,而数据库在取varchar数据时,尾部空格会保留。
char(16)长度固定, 如'www.uphtm.com' 存储需要空间 14个字符,实际占位16个字符 ,超过16个字符,会被截断

varchar(16)可变长 如'www.uphtm.com' 需要存储空间 15字符, 实际占位15个字符,超过16个字符,会被截断

建议:

myisam 存储引擎建议使用固定长度,数据列代替可变长度的数据列。

memory存储引擎目前都使用固定数据行存储,因此无论使用char varchar列都没关系,

innodb存储引擎建议使用varchar 类型。

注意:char与varchar后面接的数据大小为存储的字符数,而不是字节数

日期时间型

类型

大小
(字节)

范围

格式

用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

4

1970-01-01 00:00:00/2038

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

int

 

 

 

 

原文地址:https://www.cnblogs.com/q-1234/p/9584256.html