zoukankan      html  css  js  c++  java
  • mysql字段类型详解

    /**
    燕十八 公益PHP培训
    课堂地址:YY频道88354001
    学习社区:www.zixue.it
    **/


    =====================
    数值型
    =====================
    1、整型
        ①tinyint
            占据空间: 1 字节
            存储范围:-128[-2^7]->127[2^7-1] 【有符号】, 0->255[2^8-1] 【无符号】
            备注:    
                计算机为了表示一个数是负数,会把最高位[左侧]的0/1,当成符号来看
                    如果0 ->则是整数;  
                    如果1 ->则是负数
                    0 0000000  -->+0
                    0 1111111   -->+127

                    1 0000000 -->-0
                    1 1111111  -->-127
                二进制补码问题
        ②smallint
            占据空间: 2 字节
            存储范围:-2^15->2^15-1 ;  0->2^16-1
        ③mediuint
            占据空间: 3字节
            存储范围:-2^23->2^23-1 ;  0->2^24-1
        ④int
            占据空间: 4 字节
            存储范围:-2^31->2^31-1 ;  0->2^32-1
        ⑤bigint
            占据空间: 8 字节
            存储范围:-2^63->2^63-1 ;  0->2^64-1

            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
              + 默认:有符号
              + unsigned:表示无符号,可以影响存储范围
              + zerofill:zero是零,fill是填充,代表0    如:[000123]
              +    例:alter table table_name add s_num smallint(5) zerofill not null default 0;
              +      ①zerofill则同时必是unsigned
              +     ②如 int(M), zerofill填充的长度为M  如:int(5)--> [00000]
            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    2、浮点型/定点型
        ①float(M, D)
            M叫"精度"----->代表"总位数",
            D叫"标度" ----->代表"小数位" 小数点右边的位数    
            占据空间: 4 字节
            存储空间:10^38    
            当M<=24时,占4个字节<float>    [0到23的精度对应FLOAT列的4字节单精度]
            否则,占8个字节<double>    [24到53的精度对应DOUBLE列的8字节双精度]
        ②decimal(M, D)
            把整数部分,和小数部分,分开存储 ,比float精确,float有损精度
            银行系统用decimal
            占据空间: 8 字节
            存储原理:
                小数点 前面的数据 用四个字节存储
                小数点 后面的数据 用四个字节存储
                一共8个字节
            

    =====================
    文本型
    =====================
    ①char(M)[定长]
        M代表宽度:0<=M<=255之间
        char型,如果不够M个字符,内部用空格不起,取出时再把[右侧空格]删掉
        注意:如果存储时,右侧本身有空格,将会丢失
        定长速度快
    ②varchar(M)[变长]
        M代表宽度:0<=M<=65535之间(以ascii字符为例, utf8 22000左右)
        存储的字符串规则:前缀[数据的实际长度]+数据  
        分配空间大小:分配的空间为实际存储的长度 而char为M的长度
        
    ③text[没有默认值 即:default '']
        BLOB和TEXT列[不能]有 默认值
    ④blob[二进制类型]
        存储图像、音频等二进制信息
        也可以存储 字符串
        blob在于防止因为字符集的问题,导致信息丢失
        比如:一张图片中有0xFF字节,这个在ascii字符集认为非法,在入库的时候,被过滤




    =====================
    日期型
    =====================
    ①date
        YYYY-mm-dd
        4个字节
        1000-01-01<->9999-12-31
    ②time
         HH:ii:ss
         3个字节
        -838:59:59<->838:59:59
    ③datetime
        8个字节
        YYYY-mm-dd HH:ii:ss
    ④year
        YYYY和YY
        1个字节
        四位字符串,范围为'1901'到'2155'。
        两位字符串,范围为'00'到'99'
        非法YEAR值被转换为0000
    ⑤timestamp
        'YYYY-MM-DD HH:MM:SS'
        4个字节
        TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间
        如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间
        也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间
        CREATE TABLE test (
            ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        );
        系统常量:CURRENT_TIMESTAMP 取得当前系统时间

        【时间戳】。范围是'1970-01-01 00:00:00'到2037年。

  • 相关阅读:
    [LeetCode] Add Two Numbers
    [LeetCode] Two Sum
    解决 wget 使用 https 下载报错的问题
    VMware Player 使用笔记
    使用 linux 作为桌面系统会遇到的一些小问题和解决方案
    CUDA 6.5 + Visual Studio 2013 Express 环境配置
    康威生命游戏(Conway's Game of Life)的一种实现
    微软校招编程题"Beautiful String"的状态机解法
    利用html5的本地存储写的一个购物车
    微信开发asp.net
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2753559.html
Copyright © 2011-2022 走看看