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

    学习自 https://www.cnblogs.com/jennyyin/p/7895010.html,感谢原博主的奉献

    mysql支持多种类型,大致可以分为三类:数值、字符串、日期/时间。

    数值类型
    类型 大小 范围(有符号) 范围(无符号) 用途
    tinyint 1字节 (-128, 127) (0,255) 小整数值
    smallint 2字节 (-32768,32768) (0,65535) 大整数值
    mediumin 3字节 (-8388608,8388607) (0,16777215) 大整数值
    int或integer 4字节 (-2147483648,2147483647) (0,4294967295) 大整数值
    bigint 8字节 (-9233372036854775808,9223372036854775807) (0,18446744073709551615) 极大整数值
    float 4字节 (-3.402823466E+38,-1.175494351E-38),0,(1.175494351E-38,3.402823466351E+38) 0,(1.175494351E-38,3.402823466E+38) 单精度浮点数值
    double 8字节 (-1.7976931348623157E+308,-2.2250738585072014E-308),0,(2.2250738585072014E-308,1.7976931348623157E+308) 0,(2.2250738585072014E-308,1.7976931348623157E+308) 双精度浮点数值

    注:使用int时,字段数值范围只与多少字节、有无符号有关。如tingint 数值范围(有符号-128~127、无符号0~255),与int(m)中的m无关。

    m表示最大显示宽度,最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关。

    例如m=5我们可以简单的理解成为, 我们建立这个长度是为了告诉MYSQL数据库我们这个字段的存储的数据的宽度为5位数,  当然如果你不是5位数(只要在该类型的存储范围之内)MYSQL也能正常存储。


    字符串
    字符串类型指char、varchar、binary、varbinary、blob、text、enum和set。
    char和varchar:
    1.char(n)若存入字符数小于n,则以空格补于其后,查询时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
    2.char(n)固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
    3.char类型的字符串检索速度要比varchar快。

    简单的总结来说,mysql中获取字符串长度的有两个函数:
    length:返回字符串所占的字符数,是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符
    char_length:返回字符串所占的字符数,不管汉字还是数字或者是字母都算是一个字符

    varchar和text:
    1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节
    2.text类型不能有默认值
    3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

    enum和set:
    1.enum单选字符串类型,设定时需要给定几个选项,存储时只存储其中一个值。设定enum格式:enum('选项1','选项2','选项3',...)。实际上enum的选项都会对应一个数字,依次是1,2,3...,最多有65535个选项。
    2.set多选字符串类型,设定时需要给定几个选项,存储时可以存储若干个值。设定set格式:set('选项1','选项2','选项3',...)。set的每个选项也对应一个数字,依次是1,2,4,8,16...,最多有64个选项,使用时可以是选项字符串本身(多个选项用逗号分隔),也可以使用多个选项数字之和(比如:1+2+4=7)


    类型
    char 0-255字节 定长字符串
    varchar 0-65535字节 变长字符串
    tinyblob 0-255字节 不超过255个字符的二进制字符串
    tinytext 0-255字节 短文本字符串
    blob 0-65535字节 二进制形式的长文本数据
    text 0-65535字节 长文本数据
    mediumblob 0-16777215字节 二进制形式的中等长度文本数据
    mediumtext 0-16777215字节 中等长度文本数据
    longblob 0-4294967295字节 二进制形式的极大文本数据
    longtext 0-4294967295字节 极大文本数据


    日期时间类型
    表示时间值的日期和时间类型为datetime、date、timestamp、time和year。

    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 结束时间2038年 YYYYMMDD HHMMSS 混合日期和时间值,时间戳


    二进制
    布尔:bit
    bit表示1个二进制位
    bit(8)表示8个二进制位
    性别可以定义为0,1,而不使用male或female字符串
    数据逻辑删除
    车在车库的停放状态
    所有基于两种状态的数据都可以用0,1来存储

  • 相关阅读:
    Python Data Type
    Python 基础二
    Python的基础知识
    查看当前进程
    linux 通过服务名称查找目录
    在linux下登录MySQL,发现无法输入密码?
    多米诺骨牌效应
    MySQL MVCC底层原理详解MySQL MVCC底层原理详解
    C#保留小数点后几位
    在ubuntu服务器上安装mysql并配置外网访问
  • 原文地址:https://www.cnblogs.com/caohongchang/p/11127150.html
Copyright © 2011-2022 走看看