MySQL → SQL → DDL → 表操作 → 数据类型 知识链整理成一份系统的内容

1. 知识结构

bash 复制代码
MySQL
 └── SQL(结构化查询语言)
      ├── DDL(数据定义语言) → 定义结构
      │     ├── 表操作(创建/修改/删除表)
      │     └── 数据类型(列字段类型定义)
      ├── DML(数据操作语言) → 增删改数据
      ├── DQL(数据查询语言) → 查询数据
      └── DCL(数据控制语言) → 权限、事务控制

2. DDL 表操作

操作 语法 示例
创建表 CREATE TABLE 表名 (列名 数据类型 约束, ...) CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
如果不存在再创建 CREATE TABLE IF NOT EXISTS 表名 (...) CREATE TABLE IF NOT EXISTS users (...);
查看表结构 DESC 表名;SHOW COLUMNS FROM 表名; DESC users;
修改表名 RENAME TABLE 旧名 TO 新名; RENAME TABLE users TO members;
添加列 ALTER TABLE 表名 ADD 列名 数据类型 约束; ALTER TABLE users ADD email VARCHAR(100);
修改列数据类型 ALTER TABLE 表名 MODIFY 列名 新数据类型; ALTER TABLE users MODIFY name VARCHAR(100);
重命名列 ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型; ALTER TABLE users CHANGE name username VARCHAR(50);
删除列 ALTER TABLE 表名 DROP 列名; ALTER TABLE users DROP email;
删除表 DROP TABLE 表名; DROP TABLE users;
如果存在再删除 DROP TABLE IF EXISTS 表名; DROP TABLE IF EXISTS users;
清空表数据 TRUNCATE TABLE 表名; TRUNCATE TABLE users;

3. MySQL 常用数据类型

3.1 数值类型

类型 大小 有符号范围 (SIGNED) 无符号范围 (UNSIGNED) 用途
TINYINT 1字节 -128 ~ 127 0 ~ 255 状态、布尔值(0/1)
SMALLINT 2字节 -32768 ~ 32767 0 ~ 65535 小范围整数
MEDIUMINT 3字节 -8388608 ~ 8388607 0 ~ 16777215 中等范围整数
INT / INTEGER 4字节 -21亿 ~ 21亿 0 ~ 42亿 常用整型
BIGINT 8字节 ±9.22e18 0 ~ 1.84e19 超大整数
DECIMAL(M,D) 按精度 精确小数 精确小数 金额计算
FLOAT 4字节 非精确小数 非精确小数 科学计算
DOUBLE 8字节 非精确小数 非精确小数 高精度浮点

3.2 字符串类型

类型 最大长度 用途
CHAR(M) 固定长度,0~255 性别、状态码
VARCHAR(M) 可变长度,0~65535(取决于行大小) 姓名、标题
TEXT 65535字符 文章内容
TINYTEXT 255字符 短文本
MEDIUMTEXT 16777215字符 中长文本
LONGTEXT 4GB 大段文本
BLOB 系列 同 TEXT,但存二进制 图片、文件

3.3 日期与时间类型

类型 格式 范围 用途
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-31 出生日期、节日
TIME HH:MM:SS -838:59:59 ~ 838:59:59 事件时间
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 ~ 9999-12-31 日志时间
TIMESTAMP YYYY-MM-DD HH:MM:SS 1970-01-01 ~ 2038-01-19 自动更新当前时间
YEAR YYYY 1901 ~ 2155 年份

4. 注意事项

  1. 表名、列名建议全小写 ,关键字大写,提高可读性:

    sql 复制代码
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL
    );
  2. CHAR 固定长度,不足补空格;VARCHAR 可变长度,更节省空间。

  3. 金额一定用 DECIMAL 而不是 FLOAT/DOUBLE,避免精度丢失。

  4. TIMESTAMP 会受时区影响,DATETIME 不受时区影响。

  5. 大型文本字段(TEXT/BLOB)会单独存储,不适合频繁搜索。

相关推荐
SelectDB12 分钟前
灵犀科技统一数据服务平台:基于 Apache Doris / SelectDB 实现存储降本 60%、计算提效 10 倍
数据库
让学习成为一种生活方式27 分钟前
KMC 3.2.4 安装与使用--生信工具108
数据库
今天AI了吗29 分钟前
从聊天到委派:AI Agent 如何推进长期任务
数据库·人工智能·python·sql·rust
—Miss. Z—1 小时前
第11章 故障管理
网络·数据库·oracle
WA内核拾荒者1 小时前
WhatsApp账号运营SOP的可视化编排与流水线监控
大数据·数据库·windows
名字还没想好☜2 小时前
Kubernetes StatefulSet 实战:为什么数据库不能用 Deployment 部署
数据库·云原生·容器·kubernetes·statefulset
01_ice3 小时前
MySQL事务
数据库·mysql
名字还没想好☜3 小时前
Go 的 database/sql 连接池实战:SetMaxOpenConns 怎么配、连接泄漏怎么查
数据库·sql·golang·go·数据库连接池
大眼、不聚光3 小时前
2.oracle--表空间管理
数据库·oracle
字节跳动数据库3 小时前
火山 PostgreSQL Serverless × 飞书妙搭:把 AI 装进数据库,一句话唤醒数据智能
数据库·人工智能·后端