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

相关推荐
davawang2 分钟前
程序自动化vs人工手动处理
数据库·数据分析·企业文化
xnglan11 分钟前
蓝桥杯手算题和杂题简易做法
数据结构·数据库·c++·python·算法·职场和发展·蓝桥杯
天才测试猿1 小时前
接口自动化测试难点:数据库验证解决方案
自动化测试·软件测试·数据库·python·测试工具·职场和发展·接口测试
小云数据库服务专线1 小时前
GaussDB 常用数值类型
数据库·gaussdb
简单的话*2 小时前
如何查看SQL Server的当前端口
数据库·sqlserver
小志的博客6 小时前
mysql——count(*)、count(1)和count(字段)谁更快?有什么区别?
mysql
独泪了无痕7 小时前
一文搞懂MyBatis中的TypeHandler
数据库·后端·mybatis
三体世界10 小时前
Mysql基本使用语句(一)
linux·开发语言·数据库·c++·sql·mysql·主键
Giser探索家10 小时前
低空智航平台技术架构深度解析:如何用AI +空域网格破解黑飞与安全管控难题
大数据·服务器·前端·数据库·人工智能·安全·架构