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