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

相关推荐
科技块儿13 小时前
IP定位技术:游戏反外挂体系中的精准识别引擎
数据库·tcp/ip·游戏
衫水13 小时前
[特殊字符] MySQL 常用指令大全
数据库·mysql·oracle
卓怡学长13 小时前
m115乐购游戏商城系统
java·前端·数据库·spring boot·spring·游戏
2501_9445264213 小时前
Flutter for OpenHarmony 万能游戏库App实战 - 蜘蛛纸牌游戏实现
android·java·python·flutter·游戏
csj5014 小时前
安卓基础之《(18)—内容提供者(4)在应用之间共享文件》
android
小句14 小时前
SQL中JOIN语法详解 GROUP BY语法详解
数据库·sql
尤老师FPGA14 小时前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十五讲)
android·java·ui
阿杰 AJie15 小时前
MySQL 里给表添加索引
数据库·mysql
昊昊该干饭了15 小时前
一个真实查询需求如何从表设计走到高效 SQL
数据库·sql
北辰当尹15 小时前
xml基础
android·xml