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字节
相关推荐
撩得Android一次心动3 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
zyseo83 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
是真的小外套4 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
xiaogai_gai5 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o6 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
用户2018792831676 小时前
一文讲透 Android Native Heap 监控原理:一间"只进不出"的仓库,和总部派来的侦探
android
阿里云大数据AI技术6 小时前
StarRocks 与 Fluss 用一条 SQL 查实时与历史
人工智能·sql
这个DBA有点耶6 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
YB13757 小时前
Jetpack Compose 动画animate*AsState
android
用户6279947182627 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库