mysql建立存数据的表(一)

sql这是查数据的语句

我们来理一下思路

首先我们要知道sql语句是用来查数据的。

关于这个mysql提供了哪些数据类型,用来存储数据,建表。

这个也是一个学问,比方说枚举类型。

要熟练的掌握这些数据类型,现在做一个轻量级的列举

好的,这是一份 MySQL常用数据类型快速掌握清单,分为 五大核心类型,每个类型记住最常用的1-2种即可。

MySQL数据类型轻量级速查

一、整数类型(存数字,无小数)

类型 范围(有符号) 用途 记忆点

TINYINT -128 ~ 127 状态值(如:1是/0否) 小整数,适合状态码

INT ±21亿 用户ID、数量、年龄 最常用,够用90%场景

BIGINT ±922亿亿 大数据量ID、订单号 超大整数,像订单号

技巧:

主键用 INT 或 BIGINT

状态/性别用 TINYINT(1字节省空间)

二、小数/浮点类型(带小数点的数)

类型 特点 用途

DECIMAL(总位数,小数位) 精确小数,不丢失精度 金额、价格(如:DECIMAL(10,2)存99999999.99)

FLOAT / DOUBLE 近似小数,可能丢失精度 科学计算、地理位置

黄金法则:

涉及钱一定用 DECIMAL,其他可选 FLOAT/DOUBLE。

三、字符串类型(存文本)

类型 最大长度 特点 用途

VARCHAR(n) 65,535字符 变长,用多少占多少 用户名、地址、描述(n填合理值如255)

CHAR(n) 255字符 定长,不够补空格 固定长度内容(如:身份证号CHAR(18))

TEXT 65KB~4GB 大文本,不能设默认值 文章内容、长描述

选择技巧:

不确定长度用 VARCHAR(255)

绝对固定长度用 CHAR(如:手机号CHAR(11))

超过5000字用 TEXT

四、时间日期类型

类型 格式 用途

DATE YYYY-MM-DD 生日、创建日期

DATETIME YYYY-MM-DD HH:MM:SS 最常用,记录创建时间

TIMESTAMP 同DATETIME 自动记录修改时间,范围较小

对比:

DATETIME:存任意时间(如:1990-01-01 00:00:00)

TIMESTAMP:存1970~2038年,但支持自动更新

建表示例:

sql

CREATE TABLE users (

created_at DATETIME DEFAULT NOW(), -- 记录创建时间

updated_at TIMESTAMP ON UPDATE NOW() -- 自动更新时间

);

五、特殊类型

类型 用途 示例

ENUM('值1','值2') 枚举,固定几个选项 ENUM('男','女')

SET('值1','值2') 多选集合(不常用) SET('篮球','足球')

BOOLEAN 其实就是 TINYINT(1) 存TRUE/FALSE

ENUM的优缺点:

✅ 数据一致性高,输入错误值会报错

❌ 改选项需改表结构,不灵活

建表实战模板

sql

CREATE TABLE users (

id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增

username VARCHAR(50) NOT NULL, -- 用户名,非空

age TINYINT UNSIGNED, -- 年龄,无符号

balance DECIMAL(10,2) DEFAULT 0.00, -- 余额,默认0

gender ENUM('男','女','保密'), -- 枚举三选一

created_at DATETIME DEFAULT NOW() -- 创建时间

);

快速选择指南

存整数 → INT(不够用升BIGINT)

存金额 → DECIMAL(10,2)(10位总长,2位小数)

存普通文本 → VARCHAR(255)(不够升VARCHAR(500))

存长文章 → TEXT

存时间 → DATETIME

存状态 → TINYINT(1启用/0禁用)

存固定选项 → ENUM('选项1','选项2')

一句话避坑

不要用 VARCHAR(10000) → 改用 TEXT

不要用 INT 存手机号 → 用 CHAR(11) 或 VARCHAR(11)

不要用 FLOAT 存金额 → 一定用 DECIMAL

主键永远用 INT AUTO_INCREMENT 或 BIGINT

掌握这7个常用类型,就能覆盖95%的建表需求了。

相关推荐
一笑的小酒馆1 小时前
Android中的tcp通信
android
默阳12344 小时前
2026年Android中高级面试题专栏(Android进阶篇)
android
这个DBA有点耶4 小时前
2026年分布式数据库有哪些主流选择?先评估这5个维度再决定
数据库·分布式·dba
古法安卓5 小时前
Android-日志系统源码解析
android·java·android studio
恋猫de小郭5 小时前
Android 17 + OkHttp 5.5.0 ,全新 ECH 下你的 HTTPS 域名可以请求时被安全隐藏
android·前端·flutter
小强闯江湖5 小时前
不只是让 AI 写代码:ViewCompose 把 Android UI 做成了可编译、可渲染的闭环
android·人工智能·kotlin
这个DBA有点耶7 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
胡写代码7 小时前
数据库审计字段,别再每张表各写一套了——我统一成这 6 个字段
数据库
hunterandroid7 小时前
StateFlow 与 SharedFlow 的边界:状态与事件的正确建模
android·前端
YF02117 小时前
Android遥控器对频详解
android·android things