mysql 数据类型

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

字符与字节

字符是指计算机中使用的文字和符号,比如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)

极大整数值 

整型的符号

mysql中数字数据类型是有符号和无符号两种,当然整型也是,
在定义一个字段的时候可以这么使用
age tinyint unsigned,
unsigned代表是无符号,即都是大与等于0 的数
如果这样使用是默认有符号的
age tinyint ,

 

 

 

整型的数据宽度(即数据类型后的数字)和零填充

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

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

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


例如: numbers int(4) 、   number  int(10)   和 numbers int (10) zerofill;

numbers int (4):

numbers int(10):

numbers int(10)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是定点型;

但是decimal型会出现警告:

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

 例如:建立 f float(5,2) d double(5,2)e  decimal (5,2)

当输入数据为 (1.23 1.23 1.23)时:

当输入数据为(1.234 1.234 1.23)时

 

 当输入数据为 (1.234 1.234 1.234)时:  decimal会报错 但是也可以输入

当把字段类型去掉精度和标度时:

 

 

 

 当输入(1.234 1.234  1.234)时:第四行          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

 

 

 

 

posted on 2018-08-31 16:15  孙崇武  阅读(156)  评论(0编辑  收藏  举报

导航