zoukankan      html  css  js  c++  java
  • MySQL数据类型(四)

      一、数据类型

          

      

      二、整型类型

          
      tinyInt:
      1个字节:-128-127(有符号)

      是否有符号,可以定义时,使用unsign标识,表示无符号的,不写表示有符号的
      Create table student(
      stu_no int,
      stu_age tinyInt unsigned 
      );

      insert into tbl_int values(255,127);
      insert into tbl_int values(0,128);


      定义显示宽度
      通过规定数据的显示宽度,达到统一显示的目的类型(M)M表示显示的最小宽度是多少?
      需要使用前导零填充到达目的。称之为zerofill

      alter table tbl_int add c tinyint(2) zerofill; //在表中c字段数值显示宽度自小显示两位,数值不足 
      两位前面补0,超过两位的数值不受影响。

      insert into tbl_int values(0,127,1);
      insert into tbl_int values(0,127,9);
      insert into tbl_int values(0,127,10);
      insert into tbl_int values(0,127,123);

          二、浮点类型

          

      +-123.456;
      0.123456 * 10^3
      0.123456789 * 10^3

      create table num_2(
      a float,
      b double
      );

      insert into num_2 values(1234567890.0123456789,1234567890.0123456789);
      select * from num_2;
      结果:
      1234570000,1234567890.0123458

      float 类型 默认精度位数在6位左右,取决于操作系统
      double 类型默认精度位数在16位左右,取决于操作系统。

          2.1 浮点类型

      都支持控制数值的范围。
      Type(M,D)
      M表示所有的数值位数(不包括小数点和符号)
      D表示允许的小数位数

      create table num_3(
      a float(5,2),
      b double (8,3)
      );
      insert into num_2 values(567.12,1234.567);
      insert into num_2 values(1567.12,123456.5);
      123456.5 看上去总数和小数位数都没有超过,但是确定M,D时,已经确定整数的位数
      5,2
      -999.99 到 999.99
      8,3
      -99999.999 到 99999.999

      浮点数支持科学技术法
      1.234 * 10^3 == 1.23E3
      insert into num_2 values(1.23E3,456.7E2);

         2.2 定点数类型
      定点数:小数点固定,小数位数不固定。浮点数的小数点不固定。
      Decimal(M,D)
      M总位数
      D小数位数。(范围存在)
      M默认为10,D默认为0

      create table num_4(
      send_money decimal(10,2)
      );


      insert into num_4 values(1234.56);
      结果:1234.56
      insert into num_4 values(1234.567);
      结果为1234.57 四舍五入把最后一位7给舍掉了。

      不会像单精度和双精度丢失精度。

      小数支持zerofill
      alter table num_4 money decimal(10,2) zerofill;
      insert into num_4 values(1234.56,1234,56);

      支持无符号
      unsigned

      三、日期时间类型

              

         

          四、DateTime类型
      年份月日时分秒 Datetime 范围:9999-12-31 23:59:59
      年月日 Date
      时间戳 Timestamp 存储是整型,表示时,日期类型。范围:0-21多亿,到2038-01-19 03:14:07

      create table dt_1(
      a datetime,
      b timestamp
      );
      处理形式一样,表现形式是不一样的!

      insert into dt_1 values('2013-04-16 11:50:23','2013-04-16 11:50:25');
      insert into dt_1 values('2038-01-19 03:14:07','2038-01-19 03:14:07');
      insert into dt_1 values('2038-01-19 03:14:10','2038-01-19 03:14:10');

      检索列时,+0可以检索到时间戳。
      select a,b+0 from dt_1;
      结果:
      2013-04-16 11:50:23,20130416115025

      支持任意分割符日期
      insert into dt_1 values('20380119031407','20380119031407')
      insert into dt_1 values('2038:01:19 03:14:07','20380119031407')

      但是如果出现歧义,但是不建议使用特殊的分隔符,会导致逻辑不清晰。
      insert into dt_1 values('20:12:19','20380119031407') 结果:2020-12-19
      insert into dt_1 values('89:12:19','20380119031407') 
      支持两位年份:
      70-69 1970 -2069
      70-99 19xx
      0-69 20xx年
      不建议使用。

      insert into dt_1 values(0,0);
      结果为 0000-00-00 00:00:00(通常表示整个月),0
      支持0值,表示当前没有规定,2013-04-0表示4月整个月。(逻辑想法)


      五、Time类型
      表示意义:
      1、一天中的时间
      2、两个时间点的间隔时,可以使用天来表示。格式:
      D HH:MM:SS
      D天

      create table t_1(
      ago_time
      );

      insert into t_1 values('23:12:11');
      insert into t_1 values('231211');
      insert into t_1 values('5 12:34:11');

      六、Year类型
      create table y_1(
      `begin` year
      );

      此事日期的范围,就不是1000到9999
      而是1901到2155一个字节表示

      insert into y_1 values(1985);

          七、字符串类型

      char(M):固定长度

      varchar(M):可变长度

      M:允许的字符串的长度
      M在varchar中表示允许的最大长度
      char表示严格限定的长度

      M表示的是字符数,而不是字节数。但是,总的长度的使用是按照字节计算的。

      create table s_1(
      a char(18),
      b varchar(18)
      );

      create table s_2(
      a varchar(65535)
      );

      create table s_3(
      a varchar(65535)
      )charater set gbk;

      create table s_4(
      a varchar(65535)
      )charater set utf8;

      注意,字段最大长度,除了类型本身限制之外,记录的总长度也受限制

      create table s_2(
      a varchar(21845)
      )charater set utf8;

      create table s_2(
      a varchar(21844)
      )charater set utf8;

      create table s_3(
      a varchar(65532) not null
      )charater set set latin1;

      create table s_4(
      a varchar(65532) 
      )charater set set latin1;

      create table s_5(
      a varchar(65533) 
      )charater set set latin1;


      create table s_5(
      a varchar(65533) not null
      )charater set set latin1;

      真实的varchar的长度:
      总长度:65535,
      varchar特点,当类型数据超过255个字符时,采购2个字节表示长度。
      65535-2=65535
      整条记录,需要一个额外的字节,用于保存当前的null值
      除非所有的字段都不是null,这个字节才能省略

      create table s_5(
      a varchar(65532) not null,
      b tinyint not null
      )charater set set latin1;

      存在null,都是使用统一的一个字节来表示。而不是每个字节一个字段。

      create table s_7(
      a text,
      b text
      ) character set latin1;

      Text 
      2^16
      文本,有很多兄弟类型
      Tinytext longtext

      八、枚举类型
      create table s_8(
      gender enum('female','male')
      );
      insert into s_8 values('male');
      insert into s_8 values('female');
      insert into s_8 values('other');

      select gender+0 from s_8;

      枚举类型,最大允许65535个枚举
      数据库做优化时,尽量都用枚举类型

      九、集合类型
      create table s_9(
      hobby set('basket','football','pingpang')
      );
      insert into s_9 values('basket,football');
      select hobby+0 from s_9;
      insert into s_9 values('pingpang,football');
      select hobby+0 from s_9;
      最多可以表示出64个状态。
      表示的字符串长度不一样。

  • 相关阅读:
    不用内置函数,实现字符串的反转
    selenium2学习:浏览器控制、简单操作、鼠标事件和键盘事件、获得验证信息、设置元素等待
    selenium2学习:浏览器操作:单元素定位&一组元素定位
    selenium2学习:webdriver:打开浏览器
    selenium2学习:python3基础
    selenium2学习:环境搭建
    selenium2学习:自动化测试基础知识
    zk实现分布式锁
    JDBC连接MySql,配置url报错
    git使用
  • 原文地址:https://www.cnblogs.com/luyuwei/p/3625178.html
Copyright © 2011-2022 走看看