SQL数据类型

数据类型

  • 整数类型
  • 浮点数类型
  • 定点数类型
  • 日期类型
  • 时间类型
  • 字符串类型
  • 二进制类型
  • ...

整数类型

  • MySQL 中 整数类型有5种
整数类型 字节数 无符号取值范围 有符号取值范围
tinyint 1 0~255 -128-127
smallint 2 0~65 535 -32 768-32 768
mediumint 3 0~16 777 215 -8 388 608-8 388 608
int 4 0~4 294 967 295 -2 147 483 648-2 147 483 648
bigint 5 0~18 446 744 073 709 551 615 -9 223 372 036 775 808 -9 223 372 036 775 808 -32 768

浮点数和定点数类型

  • MySQL 中使用浮点数和定点数存储小数
  • 浮点数类型
    • 单精度浮点数:float
    • 双精度浮点数:double
  • 定点数类型:decimal
数据类型 字节数 有符号的取值范围 无符号的取值范围
float 4 -3.402823466E+38~1.175 494 351E-38 0和1.175494351E-38~3.402 823 466E+38
double 8 -1797 693134 862 315 7E+308~2.225 073 858 507 2014E-308 022250738585072014E-308~1.797 693 134 862 315 7E+308
decimal M+2 -1.797 693 134 862 315 7E+308~2.225 073 858 507 201 4E-308 0和22250738585072014E-308~1.797 693 134 862 315 7E+308
  • 注意:decimal的有效范围是由 M 和 D决定的
    • M:表示数据的长度
    • D:表示小数点后的长度
    • 例如:数据类型为decimal(6,2)的数据6.2353,插入后的数据为6.23

字符串类型

  • MySQL 中 常用 char 和 varchar 表示字符串
  • varchar:存储可变长度的字符串
  • 例如:char(M) 或 varchar(M)
    • M:字符串的最大长度
    • 为char(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节。
    • 为 varchar(M)类型时,所对应的数据所占用的字节数为实际长度加1。
插入值 char(4) 存储需求 varchar(4) 存储需求
'' '' 4个字节 '' 1个字节
'ab' 'ab' 4个字节 'ab' 3个字节
'abc' 'abc' 4个字节 'abc' 4个字节
'abcd' 'abcd' 4个字节 'abcd' 5个字节
'abcdef' 'abcd' 4个字节 'abcd' 5个字节

文本类型

  • 表示文本数据,如:文章内容,评论/详情等
数据类型 存储范围
tinytext 0~255字节
text 0~65535字节
mediumtext 0~16777215字节
longtext 0~4294967295字节

日期与时间类型

  • 日期:YEAR、DATE、TIME、DATETIME
  • 时间:timestamp
数据类型 字节数 取值范围 日期格式 零值
year 1 1901-2155 YYYY 0000
date 4 1000-01-01-9999-12-3 YYYY-MMDD 0000-00-00
time 3 838.59:59~838:59.59 HH:MM:SS 00:00:00
datetime 8 1000-01-0100:00:00~9999-12-31 23:5959 YYYY-MMDDHH:MMSS 0000-00-0000:00:00
timestamp 4 1970-01-0100:00:01 ~2038-01-1903:14:07 YYYYMM-DDHH:MM:SS 0000-00-0000:00:00

1.year 类型

  • 三种格式 指定类型的值

(1)4位字符串

  • 范围:'1901'---'2155'或1901---2155
  • 例如:输人 '2019'或2019插人到数据库中的值均为2019。

(2)2位字符串

  • 范围:'00'---'99
    • '00'---'69'范围的值会被转换为 2000---2069范围的YEAR值
    • '70'---'99'范围的值会被转换为1970---1999范围的YEAR 值
  • 例如:输人'19'插人到数据库中的值为2019。

(3)2位数字

  • 范围:1---99
    • 1---69范围的值会被转换为2001--- 2069范围的YEAR值
    • 70---99范围的值会被转换为1970---1999范围的YEAR值
  • 例 如:输人19插入到数据库中的值为2019。

2.date类型

  • 日期值,4种 格式指定DATE类型的值

(1)'YYYY-MM-DD'或者'YYYYMMDD'字符串格式

  • 输人'2019-01-21'或'20190121',插人数据库中的日期都为2019-01-21

(2)'YY-MM-DD'或者'YYMMDD'字符串格式

  • YY:表示的是年
    • 范围:'00'---'99
      • '00'---'69'范围的值会被转换为 2000---2069范围的YEAR值
      • '70'---'99'范围的值会被转换为1970---1999范围的YEAR 值
  • 例如:输人'19-01-21'或'190121',插人数据库中的日期都为2019-01-21

(3)YY-MM-DD或者YYMMDD数字格式

  • 例如:输入19-01-21或190121,插人数据库中的日期都为2019-01-21。

(4)CURRENT_DATE或者NOW()

  • 表示当前系统日期。

3.time类型

  • 时间值
  • 形式,HH:MM:SS
    • HH:表示小时
    • MM:表示分
    • SS:表示秒
  • 三种格式指定time类型的值

(1)'D HH:MM:SS'字符串格式

  • D:表示日可取0---34之间的值
  • 例如:输入'2 11:30:50'插人数据库中的日期为59:30:50。

(2)'HHMMSS'字符串格式或者HHMMSS数字格式

  • 例如:输人'115454'或115454,插入数据库中的日期为11:54:54

(3)CURRENT_TIME或NOW()

  • 输人当前系统时间

3.datetime类型

  • 表示日期和时间
  • 形式为'YYYY-MM-DD HH: MM:SS'
    • YYYY:表示年
    • MM:表示月
    • DD:表示日
    • HH:表示小时
    • MM:表示分
    • SS: 表示秒
  • 4种格式指定DATETIME类型的值

(1)'YYYY-MM-DD HH:MM:SS'或者'YYYYMMDDHHMMSS'字符串格式

  • 表示的日期和时间
  • 例如:输人'2019-01-22 09:01:23'或 '20140122_0_90123'插人数据库中的 DATETIME 值都为 2019-01-22 09:01:23。

(2)'YY-MM-DD HH:MM:SS'或者'YYMMDDHHMMSS'字符串格式

  • 表示的日期和时间
  • YY:表示年,范围为'00'---'99',与date类型中的YY相同

(3)YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式

  • 表示日期
  • 例如:插入20190122090123或者190122090123,插人数据库中的DATETIME值都 为 2019-01-22 09:01:23。

(4)NOW

  • 输人当前系统的日期和时间

4.timestamp类型

  • 表示日期和时间
  • 显示形式与DATETIME相同但取值范围比DATETIME小

(1)CURRENT_TIMESTAMP

  • 使用CURRENT_TIMESTAMP输人系统当前日期和时间

(2)NULL

  • 输人NULL时系统会输人系统当前日期和时间

(3)无任何输人时系统会输入系统当前日期和时间

二进制类型

  • MySQL 中常用 blob村粗二进制类型的数据
  • 例如:图片、PDF文档等
数据类型 存储范围
tinyblob 0~255字节
blob 0~65 535字节
mediumblob 0~16 777 215字节
longblob 0~4 294 967 295字节
相关推荐
恒辉信达2 分钟前
hhdb客户端介绍(53)
数据库·mysql·hhdb·数据库可视化界面客户端
mmsx30 分钟前
android 登录界面编写
android·登录界面
姜毛毛-JYM30 分钟前
【JetPack】Navigation知识点总结
android
花生糖@2 小时前
Android XR 应用程序开发 | 从 Unity 6 开发准备到应用程序构建的步骤
android·unity·xr·android xr
是程序喵呀2 小时前
MySQL备份
android·mysql·adb
casual_clover2 小时前
Android 之 List 简述
android·list
指尖上跳动的旋律2 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶2 小时前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
lucky_syq3 小时前
Hive SQL和Spark SQL的区别?
hive·sql·spark
m0_748244833 小时前
StarRocks 排查单副本表
大数据·数据库·python