mysql中的数据类型

一、SQL中的数据类型分为三大类:数值型、字符串型、时间日期型。

  1.数值型分为整数型和小数型。

    ① 整数型又分为5种:

      tinyint   -- 迷你整型, 1字节,取值范围(无符号)0 ~ 255 或 (有符号)-128 ~ 127;

      smallint   -- 小整型, 2字节, 取值范围(无符号)0 ~ 65535 或(有符号)-32768 ~ 32767;

      mediumint -- 中等整型, 3字节, 取值范围(无符号)0 ~ 16777215 或(有符号)-8388608 ~ 8388607;

      int     -- 标准整型, 4字节

      bigint    -- 大整型, 8字节

       备注:可以使用 unsigned 设置无符号, 默认为有符号;

        可以使用 zerofill 设置当位数不够时是否用前导0进行填充;

        可以使用 tinyint(1) 做为bool类型使用        

         类型后面括号中的数字表示显示宽度,通常搭配zerofill一起使用, 当实际宽度 < 显示宽度时, 前面填充0以保证显示宽度。

    ② 小数型分为浮点型和定点型

      浮点型, 超出精度范围后, 会丢失精度(自动四舍五入)

          float  -- 单精度浮点型, 4字节, 精度范围 7 位左右

          double -- 双精度浮点型, 8字节, 精度范围 15 位左右

          使用方式:create table myf(
                f1 float,    -- 小数点后的无效0全部舍去;
                f2 float(10,2)    -- 总长度为10, 小数部分长度为2, 超出部分会四舍五入, 

               )charset utf8;    整数部分长度为 10 - 2 = 8 位, 插入数据时不能超出, 但允许因系统四舍五入导致的超宽.

        定点型, 整数部分不会被四舍五入,但小数部分不保证。

          decimal  -- 可变长度, 大致是每9个数字采用4字节存储, 整数部分与小数部分分开计算

                总长度最大值:65  小数部分最大值:30  默认 (10, 2) 

                整数部分长度不能超过指定宽度, 包括因系统四舍五入导致的超宽也不允许.

                小数部分超出长度会四舍五入。

二、时间日期类型

  1. datatime  -- 格式YY-mm-dd HH:ii:ss  范围:1000 ~ 9999年, 有0值:0000-00-00 00:00:00

  2. data    -- datatime 中的data部分

  3. time    -- 时间(段)-时间 ~ +时间

  4. timestamp  -- 时间戳, 从1970年开始的datatime, 不能为空, 有默认值current_timestamp, 当所属条目有任何一项改动时都会自动更新到当前时间。

  5. year    -- 分为year(2)  1970 ~ 2069

             year(4)   

三、字符串类型

  分6种:char, varchar, text, blob, enum, set -- mysql记录中:如果有一个字段允许为空, 那么系统会自动从整个记录中保留一个字节来存储NULL,

                          如果想释放这个字节, 必须保证所有的字段都不允许为NULL。

  1. 定长字符串 char(L)  -- 创建时就需要指定好字符串的长度L, 并且不能改变。L的单位为字符, 长度为255.

  2. 变长字符串 varchar(L)  -- 创建时按指定长度分配空间, 但实际使用情况根据具体数据确定, L的理论长度为65535字符, 但会使用其中 1 ~ 2 个字节存储数据实际长度

                但因为mysql规定, 任何一条记录的长度都不能超过65535字节, 所以varchar 永远不可能达到理论长度。

  3. 文本字符串, 数据量非常大时使用, 不占用记录长度, 但是会使用记录中的10个字节来存储数据的地址和长度。

         text  -- 存储文字

         blob  -- 存储二进制

  4. 枚举 enum(可能出现的元素列表)  -- 如:enum('红色','绿色','蓝色') , 使用时只能从定义的元素中选择。且只能选择一个.

                     数据库中实际存储的是按元素定义顺序编号的数字,从1开始。所以插入数据时,可以使用元素列表中的元素名字, 也可以使用对应的数字

  5. 集合 set(元素列表)  -- 使用时可以选择多个, 用逗号分隔。最大数量64

                数据库中把每个元素都对应一个二进制位, 选中为1,  否则为0, 二进制顺序反转后的值存储到数据库中。

  

posted @ 2017-02-04 22:43  Java_xb  阅读(423)  评论(0编辑  收藏  举报