Mysql学习笔记17——数据类型

细枝末节

   1. 类型选择原则:越简单越小越好

   

分类

1. 整型

        1) tinyint       1字节

        2) smallint      2字节

        3) mediumint     3字节

        4) int/integer   4字节

        5) bigint        8字节

2. 小数

        1) 定点型

                1. DECIMAL(M,D)/DEC(M,D)   M+2字节

        2) 浮点型

                1. float(M,D)    4字节

                2. double(M,D)   8字节

3. 字符型

        1) 较短文本:char,varchar

        2) 较长文本:text,blob(较长的二进制数据)

4. 日期型

整型

备注

1. 默认设置有符号,设置无符号要添加unsigned

2. 如果插入值超出类型范围,会报out of range错误,并且将插入值改为临界值

3. 不设置长度,会有默认长度;设置长度,位数不够时在左边补0,要搭配zerofill使用

4. 使用zerofill默认为无符号

示例

CREATE TABLE int_test(

    /* int类型 */

    t1 int,

    /* 无符号int类型 */

    t2 int undesigned,

    /* 显示长度为5的int类型,位数不够时左边用0填充 */

    t3 int(5) zerofill

);

小数

分类

1. 浮点型

        1) float(M,D)

        2) double(M,D)

2. 定点型

        DEC(M,D)/DECIMAL(M,D)

备注

1. M:整数部分+小数部分的位数

2. D:小数部分位数

3. 超过范围,则插入临界值

4. M和D都可以省略,省略时float和double根据数值精度决定;decimal默认M为10,D为0

5. 定点型精度高,一般用于高精度如货币运算

字符型

分类

1.短文本

    1) char(M)

    2) varchar(M)

    其他:

        binaryvarbinary用于保存较短的二进制

        enum用于保存枚举

        set用于保存集合

2. 长文本

    1) text

    2) blob

备注

1. M:该字段的值最长字符数

2. char表示固定长度字符,存在内存浪费,效率高,M可省略默认为1

3. vachar表示可变长度字符,节省内存,效率低,M不可省略

日期型

分类

1. date,只有日期

2. time,只有时间

3. year,只有年份

4. datetime,date+time

5. datestamp,

备注

1. timestamp范围:19700101080001~2038年某个时间

2. datetime范围:1000-1-1~9999-12-31

3. timestamp受时区和MySQL版本影响

4. datetime只能反映出插入时的当地时区

上一篇:『无为则无心』Python基础 — 3、搭建Python开发环境


下一篇:ADO,OLEDB,ODBC,DAO的区别【转】