zoukankan      html  css  js  c++  java
  • Python 39 数据库的数据类型

    一:整型

    为什么需要 数据分类?  

    1、为了描述事物更加准确  

    2、描述起来更方便  

    3、节省内存空间     

    例:1 a 你     utf8 下 5个字节   

          1 a b c   unicode 6个字节

    mysql支持的数据类型

    整型:从小到大有tinyint(***)    smallint(***)    mediumint(***)    int(*****)    bigint(***)  

    字节数:     分别占了    1                   2                    3                      4              8   个字节  

    默认情况下整型是有符号的,需要用一个二进制位存储符号  

    给整型加上约束 unsigned 来表示无符号  

    如果数据超出范围就尽可能保存最大的,例如 在无符号保存256,其实存的255  

    如果有符号 例如tinyint 保存-1280 其实存的是-128 是最小值

     修改严格模式:

     以上特性的出现是因为mysql处于非严格模式:出现错误不会保存,会尝试自己去修改错误     

    查看当前模式 show variables like "sql_mode";     

    修改为严格模式 set variables sql_mode="STICT_TRANS_TABLBS";  

    默认是严格模式,在严格模式下,如果超出范围就直接报错,在一些版本中默认就是严格模式!     

    在我们的正常开发中,我们应该先判断数据的正确性,没有问题在发给数据库

     怎么选择:得根据实际情况来判断,能够保存你的数据的最小类型

     长度限制对于整型的意义:     

    create table t10 value(id int(1));     

    insert into t10 value(4545555);     

    select *from t10;     

    发现这个数也存储成功,说明这里长度指的不是存储容量限制,而是显示的宽度,如果你的数据超过了显示宽度有几个显示几个,如果不足 则补全到指定长度 得告诉它用什么来补全     

    create table t13(id int(10) zerofill);     

    总结:不是容量限制 而是 显示宽度 要限制显示宽度      

    1、创建表时 给整型加上宽度      

    2、加上zerofill约束

    二:浮点型

    浮点型 即 小数型

    分类(float):float(*****)   double(****)   decimal(*****)  

    字节数:          4                  8                不确定(手动指定)

    给浮点设置宽度限制

    float(m,d)

    double(m,d)

    decimal(m,d)

    长度说明(*****)

    m表示 这个浮点数整体的长度

    d表示 小数部分的长度

    例如:float(5,3) 最大值:99.999

    区别(*****)

    相同点:小数部分最大长度都是30  float 和 double 的最大长度为255

    不同点:decimal 的整体最大长度为65  精度不同  double 比 float 精度高  decimal 是准确的 不会丢失精度

    如何选择:你对精确度要求高你就使用 decimal

    三:字符型

    分类

    char 定长字符

    varchar 变长字符

    char 类型的长度是固定 无论你存储的数据有多长 占用的容量都一样

    char(3) 存储的数据为"a"  在硬盘保存的数据还是占3字符长度 实际保存的是"a"

    varchar 长度是可变的 存储的数据有多长就占用多长

    varchar(3)存储的数据为"a"  在硬盘保存的数据还是占1字符长度 实际保存的是"a"

    zxc asd qwe char(3)

    (lbytes+zxc)(lbytes+asd)(lbytes+qwe)varchar(3)

    如果是可变长度 则有问题 不知道数据从哪里结束 所以需要有一个位置保存数据的长度

    vharchar 能支持的最大长度是65535 用于保存数据长度的数据最长两个bytes

    如果是char类型 如果你的数据不足指定长度 就在后面用空格补全

    验证:    

    使用一个 char_length 的函数 可以查看字符的长度    

    create table t18(a char(4),b varchar(4));    

    insert into t18  value("x","x");    

    select char_length(a),char_length(b) from t18;    

    两个字段的长度都为1

    结论:    

    这是因为 mysql 在存储时 自动加上的空格 对使用者而言是没有意义的 所以mysql自动帮你处理掉空格了    

    我们可以设置sql模式 来让它现出原形    

    set global sql_mode="PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"    

    设置完成后重启mysql 再次查询长度

    注意:    

    当你在执行这样的查询语句时  mysql会自动将参数末尾的空格去除    

    select *from t19 where name="cs"    

    当你在使用模糊搜索时,要注意 定长字符 后面可能会有空格 所以最好在后面加上百分号%    

    select *from t19 where name like "cs";  

    % 任意个数的任意字符  

    _1个任务字符

    如何选择

    char :存取效率高,浪费存储空间

    varchar:存取效率低于char,使用起来感受不到区别 通常用的是char

    char和varchar 长度都比较小 最大就是65535

    大文本类型:    

    TEXT 系列:TINYTEXT TEXT MEDIUMTEXT LONGTEXT 文本是带有编码    

    BLOB 系列:TINYBLOB BLOB MEDIUMBLOB LONGBLB 也是字符数据 但是不带编码       

    二进制类型:     用于存储多媒体数据 比如视频,但是我们一般不会将多媒体数据存到数据 而是存储文件路径地址    

    BINARY 系列:BINARY VARBINARY 存储二进制数据    

  • 相关阅读:
    long和Long的区别
    C语言的变量的内存分配
    Java蓝桥杯 算法提高 九宫格
    Java实现 蓝桥杯算法提高金明的预算方案
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
  • 原文地址:https://www.cnblogs.com/zedong/p/9636531.html
Copyright © 2011-2022 走看看