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字节
相关推荐
暮毅3 分钟前
10.Node.js连接MongoDb
数据库·mongodb·node.js
wowocpp7 分钟前
ubuntu 22.04 server 格式化 磁盘 为 ext4 并 自动挂载 LTS
服务器·数据库·ubuntu
成富29 分钟前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
songqq2730 分钟前
SQL题:使用hive查询各类型专利top 10申请人,以及对应的专利申请数
数据库·sql
计算机学长felix33 分钟前
基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·毕业设计·交友
HerayChen1 小时前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
顾北川_野1 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
hairenjing11231 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小码的头发丝、1 小时前
Django中ListView 和 DetailView类的区别
数据库·python·django
小黄人软件1 小时前
android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
android·ide·android studio