Mysql入门(二)之列类型

数据类型(列类型)

   所谓的数据类型:对数据进行统一的分类,从系统的角度出发为了能够使用统一的方式进行管理,根号的利用有限的空间

  

   SQL中将数据类型分为三大类:数值类型,字符串类型和时间类型


   

整数型

 Tinyint:迷你整型,使用一个字节存储,表示的状态最多为256种(常用)

 Smallint:小整型,使用2个字节存储,表示的状态最多为65536种

 Mediumint:中整型,使用3个字节

 int:标准整型,使用4个字节存储(常用)

 Bigint:大整型,使用8个字节存储

  

   

小数型(带有小数点或者范围超出整型的数值类型)

    浮点型(小数点浮动,精度有限而且会丢失精度)

        浮点型数据是一种精度型数据,因为超出指定范围之后,会丢失精度(自动四舍五入)
              Float:单精度,占用四字节存储数据,精度范围大概7位左右
              Double:双精度,占用8字节存储数据,精度范围15位左右
              
             创建浮点数表:浮点的使用方式:直接float表示没有小数部分;float(M,D):M代表总长度,D代表小数部分长度,整数部分涨长为M-D
            浮点型数据的插入:整数部分是不能超过长度的,小数部分可以(系统会自动四舍五入)
            结果:浮点数一定会进行四舍五入(超出精度范围);浮点数如果是因为系统进位导致整数部分超出指定的长度,那么系统也允许成立
               

    定点型(小数点固定,精度固定,不对丢失精度)

          定点型:绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能(理论小数部分不会丢失精度)

          

          定点数的整数部分一点不能超过长度(进位不可以),小数部分的长度可以随意超出(系统自动四舍五入)

            浮点数如果进位导致长度溢出没有问题,但定点数不行


    时间日期类型

          Datetime:时间日期,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999年,有0值:0000-00-00  00:00:00
          Date:日期,就是datetime中的date部分
          Time:时间(段),指定的某个区间之间,-时间到+时间
          Timestamp:时间戳,并不是时间戳,只是从1970年开始的YYYY-mm-dd HH:ii:ss格式与datetime完全一致
          Year:年份,两种形式,year(2)和year(4):1901-2156
          
            
           创建时间日期表
        

       插入数据:时间time可以是负数,而且可以是很大的负数,year可以使用2位数插入,也可以使用四位数
         

   Timestamp字段,只要当前所在的记录被更新,该字段一定会自动更新成当前时间
   


字符串类型(char,varchar,text,blob,enum,set)

     定长字符串

           定长字符串:char,磁盘(二维表)在定义结构的时候,就已经确定了最终数据的储存长度
             
            Char(L):L代表length,可以存储的长度,单位为字符,最大长度值可以为255.
            Char(4):在utf8环境下,需要4*3=12个字节

      变长字符串

              变长字符串:varchar,在分配空间的时候,按照最大的空间分配:但实际上最终用了多少是根据具体的数据来确定的
                             
               Varchar(L):L表示字符长度,理论长度65536个字符,但是会多出1到2个字节来确定存储的实际长度,但是实际上如果长度超过255,即不用定长也不用变长,使用文                                       本字符串text
               Varchar(10):的确存了10个汉字,utf8环境,10*3+1=31(bytes)
                                     存储了三个汉字:3*3+1=10(bytes)
               
               定长与变长的存储的实际空间(utf8)
            
           

       文本字符串

            如果数据非常大,通常说超过255个字符就会使用文本字符串
       
             文本字符串根据存储的数据格式进行分类:text和blob
             
              text:存储文字(二进制数据实际上都是存储路径)
              blob:存储二进制数据(通常不用)

       枚举字符串

               枚举:enum,事先将所有可能出现的结果设计好,实际上存储的数据必须是规定好的数据中的一个
                
            
         作用一:规范数据格式:数据只能是规定的数据中的其中一个
         作用二:节省存储空间(枚举别名:单选框):枚举实际存储的是数值而不是字符串本身 
         枚举元素的实际规律:按照元素出现的顺序,从1开始编号
          
        枚举的原理:枚举在进行数据规范的时候(定义的时候,系统会自动建立一个数字与枚举元素的对应关系(关系放到日志中);
                                然后在进行数据插入的时候,系统自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统自动将数
                                值转换成对应的字符串显示(因为枚举实际存储的是数值,所以可以直接插入数值)

        集合字符串

                  集合和枚举很类似:实际存储的是数值,而不是字符串(集合是多选)

                  集合使用方式:
                            定义:Set(元素列表)
                            使用:可以使用元素列表中的元素(多个),使用逗号分隔
          
                 创建集合表
    
           插入数据:可以使用多个元素字符串组合,也可以直接插入数值
                   

                    查看数据:数值+数据查看
                  

                 集合中每一个元素都是对应一个对应二进制位
                  
                           

           集合中元素的顺序没有关系:最终系统都会去匹配顺序



MySQL的记录长度

  65535个字节,varchar达不到理论长度,null占用一个字节,text不占用记录长度(但本身占据10个字节)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值