MySQL的数据类型

1、数值类型
  1、整型
    1、int 大整型(4个字节)
      取值范围 :0 ~ (2**32 - 1(42亿多))
    2、tinyint 微小整型(1个字节)
      1、有符号(signed默认) : -128 ~ 127
      2、无符号(unsigned) : 0 ~ 255
        例子:age tinyint unsigned,
    3、smallint 小整型(2个字节)
    4、bigint 极大整型(8个字节)
  2、浮点型
    1、float(4个字节,最多显示7个有效位,如果超过7的话,不会报错,但存进去的数在第7位之后会不正确)
      1、用法
        字段名 float(m,n) m->总位数 n->小数位位数
        float(5,2)取值范围? -999.99 ~ 999.99
    2、double(8个字节)
      字段名 double(m,n)
    3、decimal(最多显示28个有效位)
      1、decimal(m,n)
      2、存储空间(整数、小数分开存储)
      规则:将9的倍数包装成4个字节

      余数   字节
        0     0
      1-2            1
      3-4            2
      5-6            3
      7-9            4
    例:decimal(19,9)
    一个浮点型为10为整数,9位小数:
    整数部分:10/9=1余1 4字节+1字节 = 5字节
    小数部分:9/9=0 4字节+0字节 = 4字节
    总共占有:5字节 + 4字节 = 9字节

2、字符类型
  1、char(定长)
    1、取值范围:1~255
  2、varchar(变长)
    1、取值范围:1~65535
  3、text / longtext(4G) / blob / longblob(4G)
  4、char和varchar的特点
    1、char :浪费存储空间,性能高
    2、varchar :节省存储空间,性能低
  5、字符类型的宽度和数值类型宽度的区别
    1、数值类型宽度为显示宽度,只用于select查询是显示,
    和占用存储无关,可用zerofill查看效果。
    2、字符类型的宽度超过后无法存储

3、枚举类型
  1、单选enum
    sex enum(值1, 值2,.....)
  2、多选set
    likes set(值1, 值2,....)

 

4、日期时间
  1、日期时间类型
    1、date :"YYYY-MM-DD"
    2、time :"HH:MM:SS"
    3、datetime :"YYYY-MM-DD HH:MM:SS"
    4、timestamp :"YYYY-MM-DD HH:MM:SS"
    5、注意
      1、datetime :不给值默认返回NULL值
      2、timestamp :不给值默认返回系统当前时间


  2、日期时间函数
    1、now() 返回服务器当前时间
    2、curdate() 返回当前日期
    3、curtime() 返回当前时间
    4、year(date) 返回指定时间的年份(年)
    5、date(date) 返回指定时间的日期(年月日)
    6、time(date) 返回指定时间的时间(时分秒)

  3、日期时间运算
    1、语法格式
      select * from 表名
      where 字段名 运算符 (时间-interval 时间间隔单位);
      时间间隔单位:
      1 day | 2 hour | 1 minute | 2 year | 3 month

mysql> select * from t2 where cztime >= (now()-interval 1 day);   #1天以内
+------+----------+----------+-------+------------+---------------------+
| id   | username | password | money | birthday   | cztime              |
+------+----------+----------+-------+------------+---------------------+
|    1 | 用户1    | 123456   |   500 | 1996-10-06 | 2018-08-30 09:50:30 |
|    1 | 用户2    | 123456   |   500 | 1996-10-06 | 2018-08-30 09:55:03 |
+------+----------+----------+-------+------------+---------------------+
2 rows in set (0.00 sec)

mysql> select * from t2 where cztime <= (now()-interval 1 day);    #1天以前
+------+----------+----------+-------+------------+---------------------+
| id   | username | password | money | birthday   | cztime              |
+------+----------+----------+-------+------------+---------------------+
|    3 | 用户3    | 123456   |   800 | 1990-03-03 | 2018-07-02 09:08:00 |
|    4 | 用户4    | 123456   |   666 | 2018-07-02 | 2018-07-02 09:10:00 |
+------+----------+----------+-------+------------+---------------------+
2 rows in set (0.00 sec)

 

posted on 2018-08-29 22:59  zengsf  阅读(1113)  评论(0编辑  收藏  举报

导航