MySql教程

MySQL的数据类型

本文主要是介绍MySQL的数据类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • MySQL数据类型
    • 常见的信息的种类
    • 字符类型
      • 定长:char(字符个数)
      • 变长:varchar(字符个数)
      • 大文本类型:text/blob
    • 数值类型
      • 整数型
      • 浮点型
    • 日期时间类型
      • 时间函数
    • 枚举类型
      • enim:单选
      • set:多选

MySQL数据类型

RDBMS:关系型数据库管理系统 例:MySQL

常见的信息的种类

  • 数值型:体重、身高、成绩、工资
  • 字符型:姓名、工作单位、通信地址
  • 枚举型:兴趣爱好、性别、专业
  • 日期时间型:出生日期、注册时间

字符类型

定长:char(字符个数)

  • 最大字符个数255

  • 不够指定字符个数时在右边用空格补全

  • 字符个数超出时,无法写入数据

变长:varchar(字符个数)

  • 按数据实际大小分配存储空间
  • 字符个数超出时,无法写入数据
  • 最大字符个数65532

大文本类型:text/blob

  • 字符数大于65535存储时使用

数值类型

整数型

只能存储整数

类型名称有符号范围无符号范围
tinyint微小整数-128~1270~255
smallint小整数-32768~327670~35535
mediumint中整型-223~223-10~2^24-1
int大整型-2^31 ~ 2^31-10~2^32-1
bigint极大整型-2^63 ~ 2^63-10- 2^64-1
unsigned使用无符号存储范围

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FWXelqi-1638719497193)(E:/Typort/image-20211205222133582.png)]

创建t2表,当不使用unsigned,默认使用有符号范围,当我们加入unsigned参数时,使用无符号范围,可以参考实际情况,来确定是使用有符号范围还是无符号范围

浮点型

浮点型

  • 格式一:字段名 类型
  • 格式二:字段名 类型(总宽度,小数位数)
类型名称有符号范围无符号范围
float单精度0~2^32-10~2^32-1
double双精度0~2^64-10~2^64-1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40irnpp5-1638719497196)(E:/Typort/image-20211205223947488.png)]

这里我使用了两种定义方式来演示,当类型后没有去定义他的宽度和小数位数时。这时候默认他的范围为最大0~2^32-1。

当我们定义了他的宽度时,他的宽度就会决定他的范围。当我们输入的数据大于小数位数,就会进行四舍五入,留下两位小数

日期时间类型

类型

  • 日期时间 :datetime

    • 范围:1000-01-01 00:00:00~ 9999-12-31 23:59:59

    • 格式:yyyymmddhhmmss

  • 日期时间:timestamp

    • 范围:1970-01-01 00:00:00 ~ 2038-01-19 00:00:00

    • 格式:yyyymmddhhmmss

  • 日期: date

    • 范围: 0001-01-01 ~ 9999-12-31
    • 格式:yyyymmdd
  • 年: year

    • 范围:1901 ~ 2155
    • 格式:yyyy
  • 时间:time

    • 格式:HH:MM:SS

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3AB9O7Qb-1638719497196)(E:/Typort/image-20211205225826586.png)]

创建相应的时间类型,要严格按照格式输入,否则就会出错,也不要超出相应的存储范围。

使用时间函数获取数据给类型复制

时间函数

MySQL服务内置命令

可以使用时间函数给字段赋值

类型用途
curtime()获取当前的系统时间
curdate()获取当前的系统日期
now()获取当前系统的日期和时间
year()获取年
month()获取月
day()获取日
date()获取日期
time()获取时间

使用方法:

select 函数名称 ;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nz3NXuaN-1638719497197)(E:/Typort/image-20211205230523911.png)]

再次给t6表赋值

insert into t6 values("tom",2000,curtime(),curdate(),now());
insert into t6 values("jim",now(),now(),now(),now());
#当全使用now()赋值时,只存储和自己类型匹配的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r04axbz4-1638719497198)(E:/Typort/image-20211205230931080.png)]

获取当前系统的年

select year( now() );
select year(20110808); #获取指定日期的年

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKwivMLY-1638719497198)(E:/Typort/image-20211205231200206.png)]

接上述类型:

  • 关于日期时间字段

    • 当未给timestanp字段赋值时,自动以当前系统时间赋值,而datetime值为NULL(空)

      mysql> create table t7(
          -> meetting datetime,
          -> party timestamp
          -> );
       insert into t7 values( now(), now() );
        #测试:只给meetting赋值
       insert into t7 (meetting)  values(20201028233058) ;
       #测试:只给party赋值
      insert into t7 (party)  values(20211205223508) ;
      #查看结果有什么不同
      selec * from t7
      

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-swMHrCi8-1638719497199)(E:/Typort/image-20211205233424366.png)]

  • year类型

    • 要求使用四位数赋值

    • 当使用两位数赋值时:

      01~69视为 2001~2069

      70-99视为1970~1999

枚举类型

字段值只能在列举的范围内进行选择

enim:单选

  • 格式:字段名 enum(值1,值2,值N)
  • 仅能选择一个值
  • 字段值必须在列表里选择

set:多选

  • 格式:字段名 set(值1,值2,值N)
  • 选择一个或者多个值
  • 字段值必须在列表里选择

在这里插入图片描述

这篇关于MySQL的数据类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!