• MySQL的开发规范-数据类型及列属性


    数据类型介绍

     
    四种主要数据类型:
    • 数值类型
    • 字符类型
    • 时间类型
    • 二进制类型 (比如存放视频,图片等)
     
    数据类型的 ABC 要素:
    • Appropriate(适当)
    • Brief(简洁)
    • Complete(完整)
     
     

    数值类型

    使用数值数据类型时的注意事项:
    – 数据类型所表示的值的范围
    – 列值所需的空间量
    – 列精度和范围(浮点数和定点数)
     
    • 数值数据类型的类:
    – 整数:整数
    – 浮点数:小数
    – 定点数:精确值数值
    – BIT:位字段值
    类型
    说明
    整数
    TINYINT
    极小整数数据类型(0-255)
    整数
    SMALLINT
    较小整数数据类型(-2^15 到2^15-1 )
    整数
    MEDIUMINT
    中型整数数据类型
    整数
    INT
    常规(平均)大小的整数数据类型(-2^31 到2^31- 1)
    整数
    BIGINT
    较大整数数据类型(-2^63到2^63-1 )
    浮点数
    FLOAT
    小型单精度(四个字节)浮点数
    浮点数
    DOUBLE
    常规双精度(八个字节)浮点数
    定点数
    DECIMAL
    包含整数部分、小数部分或同时包括二者的
    精确值数值
    BIT
    BIT
    位字段值
     

    字符类型

    • 表示给定字符集中的一个字母数字字符序列
    • 用于存储文本或二进制数据
    • 几乎在每种编程语言中都有实现
    • 支持字符集和整理
    • 属于以下其中一类
    – 文本:真实的非结构化字符串数据类型
    – 整数:结构化字符串类型
     
    类型
    说明
    文本
    CHAR
    固定长度字符串,最多为 255 个字符
    文本
    VARCHAR
    可变长度字符串,最多为 65,535 个字符
    文本
    TINYTEXT
    可变长度字符串,最多为 255 个字符
    文本
    TEXT
    可变长度字符串,最多为 65,535 个字符
    文本
    MEDIUMTEXT
    可变长度字符串,最多为 16,777,215 个字符
    文本
    LONGTEXT
    可变长度字符串,最多为 4,294,967,295 个 字符
    整数
    ENUM
    由一组固定的合法值组成的枚举
    整数
    SET
    由一组固定的合法值组成的集
     
    char和varchar的对比:
    char:性能比较高,但是定义多大长度就会直接占用多大长度,比较费空间
    varchar: 性能稍微差一些,会动态调整占用长度,比较省空间。
    mysql一般不建议存储太长的字符串,如果数据量比较大,不利于索引的扫描。
    enum使用的也比较多,性能高于char和varchar,比如: create table stu (id int, name varchar(20), enum ('male','female'));
     
     

    时间类型

    类型
    格式
    示例
    DATE
    YYYY-MM-DD
    2006-08-04
    TIME
    hh:mm:ss[.uuuuuu]
    12:59:02.123456
    DATETIME
    YYYY-MM-DD hh:mm:ss[.uuuuuu]
    2006-08-04
    12:59:02.123
    TIMESTAMP
    YYYY-MM-DD hh:mm:ss[.uuuuuu]
    2006-08-04 12:59:02.12
    YEAR
    YYYY
    2006
     
    datetime 和 timestamp之间建议选择datetime
     

    二进制类型

     
    字节序列
    – 二进制位按八位分组
    • 存储二进制值,例如:
    – 编译的计算机程序和应用程序
    – 图像和声音文件
    • 字符二进制数据类型的类:
    – 二进制:固定长度和可变长度的二进制字符串
    – BLOB:二进制数据的可变长度非结构化集合
     
    类型
    说明
    二进制
    BINARY
    类似于 CHAR(固定长度)类型,但存储的是 二进制字节字符串,而不是非二进制字符串
    二进制
    VARBINARY
    类似于 VARCHAR(可变长度)类型,但存储的是二进制 字节字符串,而不是非二进制字符串
    BLOB
    TINYBLOB
    最大长度为 255 个字节的 BLOB 列
    BLOB
    BLOB
    最大长度为 65,535 个字节的 BLOB 列
    BLOB
    MEDIUDMBLOB
    最大长度为 16,777,215 个字节的 BLOB 列
    BLOB
    LONGBLOB
    最大长度为 4,294,967,295 个字节的 BLOB 列
     
     
    数据类型设置
    例 1:列声明
    CREATE TABLE people ( id INT, first_name CHAR(30), last_name CHAR(30) );
     
    例 2:不允许负值和未知值
    CREATE TABLE people ( id INT UNSIGNED NOT NULL, first_name CHAR(30), last_name CHAR(30) );
     
     

    列属性

    列属性的类别:
    • 数值:适用于数值数据类型(BIT 除外)
    • 字符串:适用于非二进制字符串数据类型
    • 常规:适用于所有数据类型
     
    据类型
    属性
    说明
    数值
    UNSIGNED
    禁止使用负值
    仅整数
    AUTO_INCREMENT
    生成包含连续唯一整数值的序列
    字符串
    CHARACTER SET
    指定要使用的字符集
    字符串
    COLLATE
    指定字符集整理
    字符串
    BINARY
    指定二进制整理
    全部*
    NULL 或 NOT NULL
    指示列是否可以包含 NULL 值
    全部
    DEFAULT
    如果未为新记录指定值,则为其提供默认值
     
     
    create table student(id int not null primary key AUTO_INCREMENT); create table student1(id int not null primary key AUTO_INCREMENT,name varchar(20)) charset utf8; create table teacher(id int not null ,name varchar(20) not null); create table teacher1(id int not null ,name varchar(20) not null,beizhu varchar(20) not null default "ok");
     
    primary key 主键:非空、唯一
    unique:唯一
     
     
    数据类型的字符集用法
     
     
     
    选择合适的数据类型
     
    具体如何选择数据类型:
     
    考虑哪些数据类型和字符集可以最大限度地减少存储和磁盘 I/O。
     
    • 使用固定长度数据类型:
    – 如果存储的所有字符串值的长度相同
    • 使用可变长度数据类型:
    – 如果存储的字符串值不同
    – 对于多字节字符集
    • 对于频繁使用的字符,使用占用空间较少的多字节字符集。
    – 使用基本多文种平面 (Basic Multilingual Plane, BMP) 之外的其他 Unicode 字符集。

  • 相关阅读:
    PHP mysqli_next_result() 函数
    PHP mysqli_multi_query() 函数
    PHP mysqli_num_fields() 函数
    PHP mysqli_more_results() 函数
    PHP mysqli_kill() 函数
    PHP mysqli_insert_id() 函数
    PHP mysqli_init() 函数
    PHP mysqli_info() 函数
    PHP mysqli_get_server_version() 函数
    PHP mysqli_get_server_info() 函数
  • 原文地址:https://www.cnblogs.com/yang-ning/p/11649162.html
Copyright © 2020-2023  润新知