• MySQL第39天------数据存储引擎、创建表的完整语句、数据类型


    一、数据存储引擎

      定义:一个功能的核心部分叫引擎;数据存储引擎就是数据存储的核心代码

      分类:

    创建表时在最后指定引擎名称  engine = xxx
    create table t1(id int)engine=innodb
    create table t1(id int not null)engine=csv
    create table t1(id int)engine=memory
    create table t1(id int)engine=blackhole
    insert into t1 value(1);
    insert into t2 value(1);
    insert into t3 value(1);
    insert into t4 value(1);
    二、创建表的完整语法create table 表名(
    字段名称 数据类型[(长度) 约束条件],
    字段名称 数据类型[(长度) 约束条件]
    )
      必须:字段名 数据类型 表名
      可选:长度 约束条件
      长度用于设置数据的长度
      约束指的是除了数据类型外的额外的规范
      注意:字段名、表名、库名都不能是mysql的关键字
    三、数据类型
      数据分类:1.为了描述事物更加准确  2.描述起来更加方便  3.节省内存空间
      整型:tinyint  smallint  mediumint  int  bigint
      字节数:1      2      3      4    8
        整型默认情况下自带符号,需要一个二进制为储存符号  unsigned来表示有无符号
      修改严格模式:
        查看当前模式 show variables like "sql_mode";
        修改为严格模式 set global sql_mode = "STRICT_TRANS_TABLES";
        严格模式下,如果值超出范围就直接报错,在一些版本中默认就是严格模式!
      选择数据类型:
        得根据实际情况来判断,能够保存你的数据的最小类型
      
      长度限制对于整型的意义:
      create table t10(id int(1));
      insert into t10 value(454555);
      select *from t10;
      发现这个数也存储成功
      说明 这里长度指的不是存储容量限制
      而是显示的宽度
      如果你的数据超过了显示宽度 有几个显示几个
      如果不足 则补全到指定长度 得告诉它用什么来补全
      create table t13(id int(10) zerofill);
    总结 不是容量限制 而是 显示宽度
    要限制显示宽度
    1.创建表时 给整型加上宽度
    2.加上zerofill约束
      浮点型:
      分类:float  double  decimal
      字节数:4     8    不确定(手动指定)
        给浮点设置宽度限制
        float(m,d)
        double(m,d)
        decimal(m,d)
          m表示 这个浮点数整体的长度
          d表示 小数部分的长度
        
          相同点: 小数部分最大长度都是30
        float和double的最大长度为255
          不同点: decimal的整体最大长度65
        精度不同
        double 比 float 精度高
        decimal 是准确的 不会丢失精度
       选择:精度高则选择decimal
      字符型:
        分类:char 定长字符  vachar 变长字符
        char:存取效率高  浪费存储空间
        varchar:存取效率低于char  节省存储空间
         大文本类型:   TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT 文本是带有编码   BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB 也是字符数据 但是不带编码   二进制类型: 用于存储多媒体数据 比如视频 但是我们一般不会将多媒体数据存到数据 而是存储文件路径地址   BINARY系列 BINARY VARBINARY 存储二进制数据
      时间和日期:
        分类     time 时分秒 HH:MM:SS     year 年份     date 日期 年月日     datetime 日期加时间 年月日 时分秒 年份最大是9999     timestamp 时间戳 从1970-1-1开始算 年份最大是2037
      共同点: 时间的存取通过字符串类型 都可以使用now()函数来插入当前时间      datetime 和 时间戳都能够表示日期和时间   不同之处是: 年份最大范围不同 时间戳可以为空 代表当前时间 时间戳在你更新记录时 会自动更新为当前时间
      枚举:
      用于描述 一个已知范围的数据 例如性别: 只有男 女 或其他 enum("man","woman","other") 总结: 枚举中只能是字符串类型 添加的数据只能是已经出现在枚举中的值 你的值只能是其中的一个 你也可以使用枚举值的序号来插入值 从1开始 多选1
      集合: 用于描述一堆数据 比如你的兴趣爱好 set("watch movie","listen music","play game") 总结:集合中的数据 只能是字符串 添加的数据只能是已经出现在集合中的值 你的值可以是其中的任意几个 你也可以使用枚举值的序号来插入值 从1开始 但是只能给一个序号 多选多
  • 相关阅读:
    docker
    ibus
    看懂gradle
    tcp
    这丫头也的还真清楚,但是跑不通呢,换3.0.3的mybatis也不行
    lsb_release -a
    js中的整型都是用double存储的,有时候不精确,如,
    浏览器缓存及优化
    web即时通信技术
    css 变量
  • 原文地址:https://www.cnblogs.com/zhouyi0316/p/9637290.html
Copyright © 2020-2023  润新知