• MySQL系列-详解mysql数据类型


    MySQL数据类型

    (1)数值类型

    1、整数型

    2、浮点型

    3、定点型

    (2)日期时间类型

    (3)字符串类型

    MySQL字段属性

    1、空不为空值:NULL、NOT NULL

    2、主键:primary key

    3、唯一键:unique key

    4、自增长:auto_increment

    5、默认值:default

    6、字段描述:comment

    数值类型

    整数类型:tinyint、smallint、mediumint、integer、bigint

    类型 简写 字节大小 singed范围 unsinged范围 备注
    整数型          
    tinyint   1 0~255 -128~127  
    smallint   2 0~65535 -32768~32767  
    mediunint   3 0~16777215 -8388608~8388607  
    integer int 4 0~4294967295
    -2147483648~2147483647  
    bigint   8

    0~264-1

    -263~263-1  

    小数类型:float、double、decimal

    float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型。

    浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度。

    float和double在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

    时间日期类型

    时间日期类型包括date、time、datetime、timestamp、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-2156 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-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 一旦该行记录被修改,那么timestamp会修改成当前时间。

    字符串类型

    字符串类型包括char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext

    类型 范围 存储所需字节 说明
    char(m) [0,28-1] m 最大长度为255,不使用L时默认为1
    varchar(m) [0,216-1] m 单位为字符,最大长度为65536
    timyblob   L+1  
    blob   L+2 存储二进制数据(少用)
    mediumblob   L+3  
    longblob   L+4  
    tinytext   L+1 短文本数据
    text   L+2 存储文字,当字符大于255时,一般使用text;
    mediuntext   L+3 中等长度文本数据
    longtext   L+4 极大文本数据
    • 不要轻易的使用最大限度来存储字符串,因为涉及记录长度问题  :

    • MySQL中规定任何一条数据最长不能超过65535个字节
    • 如果有任何一个字段允许为空,那么系统会自动从整个记录中保存一个字节来存储NULL;
    • text文本不占用记录长度,额外存储。
    • UTF8中varchar的最大限度:65535-2(需要两个字节来存储长度)  /3=21844,所以最大字符数为21844
    • GBK中varchar的最大限度:65535-2(需要两个字节来存储长度) /2=32766

    字段属性:

    字段属性是字段除数据类型外的属性,一般有空不为空值、主键、唯一键、自增长、默认值、描述等属性。

    空不为空值:NULL、NOT NULL

    字段的数据默认情况下是允许为空的,比如说一条人的信息记录中可以没有邮箱(或许有些人考虑用“空字符串”来代表),我们允许可以不填入数据的字段可以设置为null;但比如说某些必填数据,我们不想填入的时候留空,可以设置这个字段为not null

    主键:primary key

    • 主键用于唯一标识每一条记录(每个人都有自己唯一的身份证)
    • 每一张表只能有一个主键。
    • 因为唯一标识,所以主键字段的数据不能为空,并且主键字段的数据值不能重复
    • 主键也是一种索引,可以提高查找速率。

    主键的用途:主键的主要用途是用来唯一标识每一条记录,比如我们想将两个表(学生表跟老师表)的多对多关系封装到一个表中,这个抽取的映射字段一般都是各自的主键。image并且由于主键的数据的不可重复性,也用来约束数据的唯一性。

    唯一键:unique key

    • 唯一键的功能与主键有点类型,但不同的是主键只能有一个,唯一键可以有多个,而且唯一键的字段的数据允许为空。
    • 唯一键可以约束字段,使得字段的数据不能重复
    • 如果唯一键同时也有not null,并且表中没有主键的话,在desc查看表结构中会显示成主键
    • 如果唯一键也不允许为空,那么功能与主键相同
    • 唯一键的定义方法可以参考主键的。
    • 唯一键的删除:
    alter table 表名 drop index 唯一键名; -- 唯一键默认使用字段名来定义名字

    自增长:auto_increment

    • 自增长的功能是可以使某个字段的数据随着记录的插入而进行增长(不给这个字段插入数据的情况下)
    • 自增长的前提是这个字段必须是一个“索引”,比如主键、唯一键
    • 自增长的前提这个字段的数据类型是一个数值型的,(如果给了float,也不会增长成小数,而仅仅是整数)
    • 一个表只能有一个自增长。
    • 只有不给值,或者给null的情况下,才能正确自增长;如果某一次自增长失败了,那么下一次会从当前字段的最大值开始继续自增长。
    • 自增长的修改:
      • 修改增长速度:set auto_increment = 值;
      • 修改下次增长的值:alter table 表名 auto_increment = 值; 【修改的值只能变大,不能变小,因为可能导致数据重复问题】
    • 自增长的查看:show vairable like "auto_increment%";
    • 自增长的删除:利用alter来删除,alter修改字段属性的时候如果不带上原来的属性就会被删掉:

    默认值:default

    • 默认值的功能是当我们不给一个字段赋值的时候,使用默认值作为数据,比如不选择性别的时候,默认使用“保密”;

    字段描述:comment

    字段描述是用来描述字段的,能在查看数据表创建语句的时候显示出来(不会再select结果中显示出来),可以帮助我们了解某一个字段的意义。

  • 相关阅读:
    Windows PE变形练手3-把通用模板机器码直接覆盖目标PE
    Windows PE变形练手2-开发一套自己的PE嵌入模板
    R3抹掉加载的DLL
    R3获取kernel32地址
    Windows PE变形练手1-用PE自己的机器码修改自己的逻辑
    Windows PE 第十三章 PE补丁技术
    Windows PE 第十二章 PE变形技术
    16.PHP_Ajax模拟服务器登录验证
    15.PHP_PHP与Ajax
    14.PHP_PHP与XML技术
  • 原文地址:https://www.cnblogs.com/datacenter/p/11643037.html
Copyright © 2020-2023  润新知