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%的建表需求了。

相关推荐
赏金术士2 小时前
Compose 教学项目
android·kotlin·compose
晓梦林2 小时前
ximai靶场学习笔记
android·笔记·学习
weelinking2 小时前
【产品】00_产品经理用Claude实现产品系列介绍
数据库·人工智能·sql·数据挖掘·github·产品经理
2301_803934613 小时前
Go语言如何做网络爬虫_Go语言爬虫开发教程【指南】
jvm·数据库·python
秋94 小时前
windows中安装redis
数据库·redis·缓存
Cosolar4 小时前
万字详解:RAG 向量索引算法与向量数据库架构及实战
数据库·人工智能·算法·数据库架构·milvus
想唱rap4 小时前
IO多路转接之poll
服务器·开发语言·数据库·c++
小江的记录本4 小时前
【Java基础】泛型:泛型擦除、通配符、上下界限定(附《思维导图》+《面试高频考点清单》)
java·数据结构·后端·mysql·spring·面试·职场和发展
SeaTunnel4 小时前
AI 让 SeaTunnel 读源码和调试过时了吗?
大数据·数据库·人工智能·apache·seatunnel·数据同步
凯瑟琳.奥古斯特5 小时前
数据冗余与规范化的本质[数据库原理]
开发语言·数据库·职场和发展