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字节
相关推荐
千里马学框架5 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone5 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
这个DBA有点耶5 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G5 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
致远ccc5 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
自由能燃气设备5 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远5 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
漂着的圆木5 天前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量
ttyyttemo5 天前
Kotlin 协程中的 Job 结构化并发与取消
android