MySQL-数据类型

MySQL数据类型

数值类型
整型
  • int 大整型 4个字节 0~2^32-1~-2^32+1(42亿多)
  • tinyint 微小整型 1个字节
    • 有符号(signed默认): -128~127
    • 无符号(unsigned):0~255
    • 常用:age tinyint unsigned
  • smallint 小整型 2个字节 0~65535
  • bigint 极大整型 8个字节 0~2^64-1
浮点型
  • float 4个字节,最多显示7个有效位
    • 用法:字段名 float(m,n), m表示总位数,n表示小数位数
    • 浮点型插入整数时会自动补全小数位数
    • 小数位如果多于指定的位数,会对下一位四舍五入
  • double 8个字节,最多显示15个有效位
    • 用法: 字段名 double(m,n)
  • decimal
    • decimal(M,D),用于保留准确精确度的列
    • M范围为1〜65,D的范围是0~30,MySQL要求D小于或等于P
    • 存储形式:整数、小数分开存储,将9的倍数包装成4个字节
字符类型
  • char 定长 0~255,不给定宽度默认宽度为1
  • varchar 变长 1~65535
    • varchar没有默认宽度,必须给定一个宽度
    • charvarchar使用时都给定宽度,但不能超过各自的范围
  • charvarchar的特点
    • char 浪费存储空间,性能高
    • varchar 节省存储空间,性能低
  • 字符类的宽度和数值类型的宽度的区别
    • 数值类型的宽度为显示宽度,只用于select查询时使用,和占用存储空间大小无关,可用zerofill查看效果
    • 字符类型的宽度超过则无法存储
枚举类型
  • 字段值只能在列举的范围内选择
  • enum 单选,最多有65535个选项 field_name enum(值1,值2,...)
  • set 多选,最多有64个选项 field_name set(值1,值2,...)
create table test(
id int(3) zerofill,
name varchar(15),
sex enum("M","F","Secret"),
likes set("F","M","study","Python")
);
# 插入示例
insert into test(sex,likes) values("Secret","F,study,Python");
日期时间类型
日期基本表示
  • year: 年 YYYY
  • date: 日期 YYYY-MM-DD
  • time: 时间 HH:MM:SS
  • datetime: 日期时间 YYYY-MM-DD HH:MM:SS 默认值返回NULL
  • timestamp: 日期时间 YYYY-MM-DD HH:MM:SS 默认值返回系统当前时间
日期时间函数
  • now() 返回服务器当前时间
  • curdate() 返回当前日期
  • curtime() 返回当前时间
  • year(date) 返回指定时间的年份
  • date(date) 返回指定时间的日期
  • time(date) 返回指定时间的时间
# 查询具体某一天
select * from table_name where date(field_name) = "2018-01-01";
# 查询某年某个月份
select * from table_name 
where date(field_name) >= "2018-03-01" and date(field_name) <= "2018-03-31";
# 查询某一天的某个时间段
select * from table_name 
where date(field_name) = "2018-07-31" and time(field_name)>="10:00:00" and
time(field_name)<="12:00:00"; 
日期时间运算
select * from table_name where field_name 运算符
# 时间间隔单位
1 day | 2 hour | 1 minute | 2 year | 3 month

# 查询1天以内的记录
select * from table_name
where field_name > (now() - interval 1 day);
# 查询1年以前的记录 
select * from table_name
where field_name < (now() - interval 1 year);
# 查询1天以前,3天以内的记录
select * from table_name
where field_name < (now() - interval 1 day) and
field_name > (now() - interval 3 day);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文基于MySQL5.6版本进行描述从大的方面来讲,MySQL的数据类型分为4种 数值类型 日期和时间 字符串类型...
    黑哥儿666阅读 4,101评论 0 0
  • sql 将数据类型分为三大类:数值类型,字符串,日期时间型 一、数值型: 数值大类:整数型和小数型 整数型 整数型...
    陈智涛阅读 4,683评论 0 0
  • 很多时候,我们开发应用系统,底层的数据库表结构都需要开发人员亲自设计,设计的合理与否,关乎着整个系统的稳定性和运行...
    程序猿蛋蛋哥阅读 4,719评论 2 10
  • 所谓的数据类型:对数据进行统一的分类,从系统的 角度出发为了能够使用统一的方式进行管理,更好的利用有限的空间;SQ...
    coder_hong阅读 3,770评论 0 0
  • 整型 tinyint(-2^7,2^7-1) 存储大小为1个字节 (三位数)非整型 -127-128 整型 ...
    拥抱变化的Y姑娘阅读 3,130评论 0 0