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)会单独存储,不适合频繁搜索。

相关推荐
JIngJaneIL5 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
微学AI6 小时前
复杂时序场景的突围:金仓数据库是凭借什么超越InfluxDB?
数据库
廋到被风吹走6 小时前
【数据库】【Redis】定位、优势、场景与持久化机制解析
数据库·redis·缓存
有想法的py工程师7 小时前
PostgreSQL + Debezium CDC 踩坑总结
数据库·postgresql
Nandeska7 小时前
2、数据库的索引与底层数据结构
数据结构·数据库
小卒过河01048 小时前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
过期动态8 小时前
JDBC高级篇:优化、封装与事务全流程指南
android·java·开发语言·数据库·python·mysql
Mr.朱鹏8 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
一位代码8 小时前
mysql | 常见日期函数使用及格式转换方法
数据库·mysql
SelectDB8 小时前
Apache Doris 4.0.2 版本正式发布
数据库·人工智能