电脑的基本数据容量单位。
电脑的一个字节等于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) |
极大整数值 |
- 整型的符号
在mysql中数字数据类型是有符号和无符号两种。 - 整型的数据宽度(即数据类型后的数字)和零填充
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 |
|
|
|
|