• 数据存储引擎+数据类型


    数据存储引擎:
    核心功能是存储数据 涉及到存储数据的代码 就称之为存储引擎
    需求场景的不同催生了不同的引擎类别

    引擎的分类:
    innodb CSV blackhole memory

    不同的引擎测试
    创建表时在最后指定引擎名称 engine = xxx
    create table t1(id int)engine=innodb

    总结: innodb是默认的引擎 因为 它是永久存储 并且 支持事务,行锁,外键

    创建表的完整语法
    create table 表名(
    字段名称 数据类型[(长度) 约束条件],
    字段名称 数据类型[(长度) 约束条件]
    ) *****
    必须的:字段名 数据类型 表名 *****
    可选的:长度 约束条件 *****


    数据类型
    为什么需要将数据分类
    1.为了描述事物 更加准确
    2.描述起来更方便
    3.节省内存空间

    mysql支持的数据类型:
    整型
    tinyint(1) smallint(2) mediumint(3) int(4) bigint(8)
    默认情况下整型是有符号的 需要用一个二进制位存储符号
    给整型加上 约束 unsigned来表示无符号
    如果数据超出范围就保存极限范围

    修改严格模式:
    以上特性的出现是因为 mysql处于非严格模式
    查看当前模式 show variables like "sql_mode";
    修改为严格模式 set global sql_mode = "STRICT_TRANS_TABLES";
    严格模式下 如果值超出范围就直接报错,在一些版本中默认就是严格模式!
    在我们的正常开发中,我们应该先判断数据的正确性,没有问题在发给数据库

    长度限制对于整型的意义:
    这里长度指的不是存储容量限制,而是显示的宽度
    如果你的数据超过了显示宽度 有几个显示几个
    如果不足 则补全到指定长度 得告诉它用什么来补全
    create table t13(id int(10) zerofill);
    总结 不是容量限制 而是 显示宽度
    要限制显示宽度
    1.创建表时 给整型加上宽度
    2.加上zerofill约束


    浮点型:
    分类: float(4) double(8) decimal(手动指定)

    给浮点设置宽度限制
    float(m,d)
    double(m,d)
    decimal(m,d)
    m表示 这个浮点数整体的长度
    d表示 小数部分的长度

    区别
    相同点: 小数部分最大长度都是30
    float和double的最大长度为255
    不同点: decimal的整体最大长度65
    精度不同
    double 比 float 精度高
    decimal 是准确的 不会丢失精度


    字符型
    分类:char(定长字符) varchar(变长字符)

    char类型的长度是固定 无论你存储的数据有多长 占用的容量都一样
    如果你的数据不足指定长度 就在后面用空格补全
    varchar 长度是可变的 存储的数据有多长就占用多长
    如果是可变长度 则有问题 不知道数据从哪里开始到哪里结束 所以需要有一个位置保存数据的长度
    varchar 能支持的最大长度是65535 用于保存数据长度的数据最长两个bytes


    使用一个 char_length的函数 可以查看字符的长度
    select char_length(字段名) from t18;


    mysql在存储时 自动加上的空格 对使用者而言是没有意义的 所以mysql会自动帮你处理掉空格
    我们可以设置sql模式 来让它现出原形
    set global sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"
    设置完成后重启msyql 再次查询长度

    注意:
    当你在执行这样的查询语句时 mysql会自动将参数末尾的空格去除
    select *from t19 where name = "yh"
    当你在使用模糊搜索时 要注意 定长字符 后面可能会有空格 所以最好在后面加上
    % 任意个数的任意字符
    _ 1个任意字符

    区别
    char
    存取效率高
    浪费存储空间
    varchar
    存取效率低于char
    节省存储空间

    char和varchar 长度都比较小 最大就是65535
    大文本类型:
    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 和 时间戳都能够表示日期和时间
    不同之处是: 年份最大范围不同
    时间戳可以为空 代表当前时间
    时间戳在你更新记录时 会自动更新为当前时间
  • 相关阅读:
    暑假快乐期刊(Android体温计特别篇)
    大二寒假作业之javaweb
    大二寒假作业之账本开发
    大二寒假作业之账本开发
    大二寒假作业之账本开发
    大二寒假作业之账本开发
    大二寒假作业之账本开发
    大二寒假作业之Android
    大二寒假作业之Android
    大二寒假作业之Android
  • 原文地址:https://www.cnblogs.com/liangchengyang/p/9634957.html
Copyright © 2020-2023  润新知