zoukankan      html  css  js  c++  java
  • 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

     

     

     

     

  • 相关阅读:
    ZOJ
    CodeForces
    模板
    前门
    错误记录
    2021/1/10例会 academy of management journal 2014vol 57 No.2,484-514
    Day7下
    Day7上
    Day6 下(
    Day6上 括号匹配专项
  • 原文地址:https://www.cnblogs.com/q-1234/p/9584256.html
Copyright © 2011-2022 走看看