• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共99篇

    mysql数据库

关闭

返回栏目

关闭

返回mysql数据库栏目

48 - 数据类型 - varchar、float、int、date、blob...

作者:

贺及楼

成为作者

更新日期:2024-07-12 00:30:21

数据类型 - varchar、float、int、date、blob

数据类型简介

MySQL的数据类型包括5大类:数字类型、字符串类型、二进制类型、日期类型、Enum类型
下表包含几乎所有的数据类型对应的表现形式、范围

数据类型汇总表

类型名 MySQL类型 python类型 描述 子节占据 表示形式 范围 场景
数字 - - - - - - -
tinyint tinyint / / 1字节 / -128到127 不可以存IP地址
SmallInteger smallint int 取值范围较小,一般为16位 2字节 / -32768到32767 /
MEDIUMINT MEDIUMINT int 取值范围较小,一般为16位 3字节 / -8388608到8388607 /
Integer int int 普通整数,一般32位 4字节 / -2147483648到2147483647 /
BigInteger bigint int/long 不限精度的整数 8字节 / -9223372036854775808到9223372036854775807 /
Float float float 单精度浮点型 4字节 / 精度为6位小数 不可以算钱
Float float(x) float 单精度浮点型(X < = 24) 4字节 / 精度为6位小数 不可以算钱
Float float(x) float 单精度浮点型(25 < = X < = 53 ) 8字节 / 精度为6位小数 不可以算钱
double double / 双精度浮点型 8字节 / 精度为15位小数 不可以算钱
Numeric decimal decimal.Decimal 定点数 4-8字节 / 精度在10进制下最多为65位 财务计算
字符串 - - - - - - -
String char(M) str 固定字符串 与字符集相关(单行不能超过65535个字节) / 1 <= M <= 255 /
String varchar(M) str 变长字符串 与字符集相关(单行不能超过65535个字节) / 1 <= M <= 255 /
Text tinytext str 变长字符串 65535bytes / L< 2 ^ 16(64K) /
Text(65536) mediumtext str 变长字符串 / / L< 2 ^ 24(16M) /
Text(16777216) longtext str 变长字符串 / / L< 2 ^ 32(4G) /
Unicode varchar unicode 变长字符串 / / / /
UnicodeText text unicode 变长字符串,64K / / / /
二进制 - - - - - - -
LargeBinary blob str 二进制文件,64K / / / /
LargeBinary(65536) mediumblob str 二进制,max16M / / / /
LargeBinary(16777216) longblob str 二进制,max32M / / / /
PickleType blob 任何python对象 自动使用Pickle序列化,只有blob / / / /
Boolean tinyint bool 布尔值 2字节 / / /
TINYBLOB TINYBLOB BLOB 布尔 L+1 字节 / L< 2 ^ 8(255B) /
日期 - - - - - - -
YEAR year / 1字节 yyyy / /
Date date datetime.date 日期 3字节 yyyy-mm-dd / /
Time time date.time 时间 3字节 hh:mm:ss / /
DateTime datetime datetime.datetime 日期和时间 8字节 yyyy-mm-dd hh:mm:ss '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999' 服务器时区不一样
Interval datetime datetime.timedelta 时间间隔 / / / /
/ timestamp / 时间挫 4字节 yyyy-mm-dd hh:mm:ss '1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999' 自动插入时间或者自动更新时间
- - - - - - - -
Enum enum str 一组字符串 1 或 2 个字节, 取决于枚举值的数目(最大值65535) / / /

大家可以根据需要保存的数据选择对应的数据类型,选择数据类型后,MySQL会有相对应的基础功能。
例如:记录创建时间、更新时间,不需要通过程序生成时间

备注、数据范围表示、使用事项

  1. 如果存进去的是NULL
    timestamp会自动储存当前时间
    datetime会储存 NULL

  2. 下面都是 MySQL 允许的形式,MySQL 会自动处理
    例如:2016-10-01 20:48:59
    例如:2016#10#01 20/48/59
    例如:20161001204859

  3. CHAR
    作用:用于存储固定长度的字符串,括号内需填写字符的最大长度
    范围:1到255
    例如:CHAR(10)表示存储最大长度为10的字符串。

  4. VARCHAR
    作用:用于存储可变长度的字符串,括号内需填写字符的最大长度
    范围:1到65535
    规则:1(数字)表示1个字符串(字)
    规则:啊(中文字)表示1个字符串(字)
    规则:大于varchar(255)自动转化为 tinytext
    规则:大于varchar(500)自动转化为 text
    规则:大于varchar(20000)自动转化为 mediumtext
    例如:VARCHAR(255)表示存储最大长度为255的字符串
    例如:VARCHAR(50)表示存储最大长度为50的字符串

  5. DECIMAL、NUMERIC
    作用:用于存储精确的数值,括号内需填写总位数和小数点后的位数
    格式:(M, D)
    例如:DECIMAL(5, 2)表示存储最大为5位数(包括小数点后的2位)的数值

  6. FLOAT、DOUBLE
    作用:用于存储浮点数,括号内需填写总位数和小数点后的位数
    格式:(M, D)
    例如:FLOAT(7, 4)表示存储最大为7位数(包括小数点后的4位)的浮点数值

  7. ENUM、SET
    作用:用于表示枚举类型和集合类型,括号内需填写预定义的值
    例如:ENUM('A', 'B', 'C')表示该字段只能存储’A’, ‘B’, ‘C’这三个值之一

8、int
()指的是显示长度

  1. CREATE TABLE int_demo (
  2. id INT(11) NOT NULL AUTO_INCREMENT,
  3. a INT(11) NOT NULL,
  4. b INT(11) UNSIGNED ZEROFILL NOT NULL,
  5. c INT(5) DEFAULT NULL,
  6. d INT(5) UNSIGNED ZEROFILL NOT NULL,
  7. e INT(15) DEFAULT NULL,
  8. PRIMARY KEY (`id`)
  9. )
  1. INSERT INTO int_demo (a, b, c, d, e) VALUES (1, 1, 1, 1, 1);
  2. INSERT INTO int_demo (a, b, c, d, e) VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890);
id a b c d e
1 1 00000000001 1 00001 1
2 1234567890 01234567890 1234567890 1234567890 1234567890