当前位置: 首页 > news >正文

MySQL 库表操作 +数据类型+ 基础概念全梳理

1. 引言

MySQL 作为全球最流行的开源关系型数据库之一,是后端开发、数据分析乃至全栈工程师的必备技能。无论是构建一个简单的博客系统,还是支撑亿级流量的电商平台,扎实的 MySQL 基础都是成功的基石。

本文旨在为你提供一份系统、全面的 MySQL 入门指南,聚焦于三大核心模块:

  1. 基础概念:理解数据库、表、行、列等核心术语。
  2. 数据类型:掌握如何为数据选择合适的“容器”,这是设计高效表结构的关键。
  3. 库表操作:从创建数据库到管理表结构,通过 SQL 语句实践数据定义语言(DDL)。

通过本文,你将能够独立完成数据库环境的搭建、表结构的设计与创建,并为后续的数据操作(增删改查)打下坚实基础。

2. 核心概念梳理

在动手操作之前,先明确几个核心概念,这有助于你理解后续的 SQL 语句在操作什么。

  • 数据库 (Database)
    一个数据库是一个逻辑上的容器,用于存储一组相关的数据。你可以把它想象成一个文件柜,里面存放着多个文件夹(表)。

  • 表 (Table)
    表是数据库中实际存储数据的结构,由行和列组成。它类似于 Excel 中的一个工作表。每个表都有一个唯一的名称。

  • 列 (Column) / 字段 (Field)
    表由列定义,每一列代表一种特定类型的数据(例如:id,name,age)。列定义了数据的“形状”和“类型”。

  • 行 (Row) / 记录 (Record)
    表中的每一行代表一条具体的数据记录。例如,一个users表中,每一行就是一个用户的信息。

  • 主键 (Primary Key)
    主键是表中一列或一组列,其值能唯一标识表中的每一行。主键列的值不能为 NULL,且必须唯一。通常使用id列作为主键。

  • SQL (Structured Query Language)
    结构化查询语言,是与关系型数据库通信的标准语言。它主要分为几类:

    • DDL (Data Definition Language):数据定义语言,用于定义或修改数据库和表结构。如CREATE,ALTER,DROP
    • DML (Data Manipulation Language):数据操作语言,用于操作表中的数据。如SELECT,INSERT,UPDATE,DELETE
    • DCL (Data Control Language):数据控制语言,用于控制访问权限。如GRANT,REVOKE

3. 数据类型详解

为列选择合适的数据类型至关重要,它影响数据的存储效率、完整性和查询性能。MySQL 支持多种数据类型,主要分为以下几类:

3.1 数值类型

用于存储数字。

类型说明示例/范围
INT/INTEGER标准整数,最常用。-21474836482147483647
BIGINT大整数。更大范围的整数
DECIMAL(M, D)精确小数,M 是总位数,D 是小数位数。适用于金融等需要精确计算的场景。DECIMAL(10, 2)可存储12345678.12
FLOAT单精度浮点数,近似值。
DOUBLE双精度浮点数,近似值。

3.2 字符串类型

用于存储文本。

类型说明特点
CHAR(N)定长字符串。长度固定为 N 个字符,不足部分用空格填充,检索速度快。
VARCHAR(N)变长字符串。长度可变,最大长度为 N 个字符,节省存储空间。最常用。
TEXT长文本数据。可存储大量文本(如文章内容),最大支持约 65KB (TEXT),还有MEDIUMTEXT,LONGTEXT

3.3 日期与时间类型

用于存储时间点或时间段。

类型格式说明
DATEYYYY-MM-DD仅存储日期。
TIMEHH:MM:SS仅存储时间。
DATETIMEYYYY-MM-DD HH:MM:SS存储日期和时间。与时区无关。
TIMESTAMPYYYY-MM-DD HH:MM:SS存储日期和时间。与时区有关,范围较小(1970-01-012038-01-19),但具有自动初始化/更新特性。

3.4 其他类型

  • ENUM:枚举类型,值必须从预定义列表中选取。例如ENUM('男', '女')
  • SET:集合类型,值可以从预定义列表中选取零个或多个。
  • BOOLEAN/BOOL:本质上是TINYINT(1)的别名,0 表示 FALSE,非 0 表示 TRUE。

选择建议

  • 整数INT大整数BIGINT
  • 金额、精确小数DECIMAL
  • 可变长度字符串几乎总是用VARCHAR
  • 日期时间通常用DATETIME,如果需要自动记录行创建/更新时间,可考虑TIMESTAMP

4. 数据库操作 (DDL)

4.1 创建数据库

CREATEDATABASE`my_database`CHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;
  • CHARACTER SET utf8mb4:设置字符集为utf8mb4,支持存储所有 Unicode 字符(包括 Emoji)。
  • COLLATE utf8mb4_unicode_ci:设置排序规则为utf8mb4_unicode_ci,进行不区分大小写的比较。

4.2 查看数据库

-- 查看所有数据库SHOWDATABASES;-- 查看特定数据库的创建信息SHOWCREATEDATABASE`my_database`;

4.3 选择/使用数据库

在对表进行操作前,必须先指定要操作的数据库。

USE`my_database`;

4.4 删除数据库

(危险操作!会删除数据库内所有数据,不可恢复)

DROPDATABASE`my_database`;

5. 数据表操作 (DDL)

5.1 创建表

创建表需要定义表名、列名、列的数据类型以及约束(如主键、非空等)。

CREATETABLE`users`(`id`INTUNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT'用户ID,主键',`username`VARCHAR(50)NOTNULLUNIQUECOMMENT'用户名,唯一',`email`VARCHAR(100)NOTNULLUNIQUECOMMENT'邮箱,唯一',`password_hash`CHAR(64)NOTNULLCOMMENT'密码哈希值',`age`TINYINTUNSIGNEDCOMMENT'年龄',`gender`ENUM('男','女','其他')DEFAULT'其他'COMMENT'性别',`created_at`DATETIMENOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`updated_at`DATETIMENOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'更新时间',PRIMARYKEY(`id`),-- 定义主键INDEX`idx_username`(`username`)-- 为 username 创建索引,加速查询)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ciCOMMENT='用户表';

关键点解析

  • NOT NULL:该列不允许存储NULL值。
  • AUTO_INCREMENT:自动递增,常用于主键。
  • UNIQUE:该列的值必须唯一。
  • DEFAULT:指定列的默认值。
  • COMMENT:为列或表添加注释,提高可读性。
  • PRIMARY KEY (id):将id列设为主键。
  • INDEX idx_username (username):在username列上创建名为idx_username的索引。
  • ENGINE=InnoDB:指定存储引擎为 InnoDB(支持事务、行级锁,推荐)。
  • DEFAULT CHARSET=utf8mb4:设置表的默认字符集。

5.2 查看表

-- 查看当前数据库中的所有表SHOWTABLES;-- 查看表的结构(列定义)DESCRIBE`users`;-- 或SHOWCOLUMNSFROM`users`;-- 查看表的创建语句(包含所有细节)SHOWCREATETABLE`users`;

5.3 修改表结构

使用ALTER TABLE语句。

添加列

ALTERTABLE`users`ADDCOLUMN`avatar_url`VARCHAR(255)COMMENT'头像链接'AFTER`email`;

修改列定义

ALTERTABLE`users`MODIFYCOLUMN`username`VARCHAR(100)NOTNULLCOMMENT'修改后的用户名';

重命名列

ALTERTABLE`users`CHANGECOLUMN`age``user_age`TINYINTUNSIGNEDCOMMENT'用户年龄';

删除列

ALTERTABLE`users`DROPCOLUMN`gender`;

添加索引

ALTERTABLE`users`ADDINDEX`idx_email`(`email`);

5.4 重命名表

RENAMETABLE`old_users`TO`new_users`;

5.5 删除表

(危险操作!会删除表及其所有数据,不可恢复)

DROPTABLE`users`;

6. 约束与索引

6.1 常用约束

约束用于确保表中数据的准确性和可靠性。

  • 主键约束 (PRIMARY KEY):唯一且非空。
  • 唯一约束 (UNIQUE):确保某列或列组合的值唯一。
  • 非空约束 (NOT NULL):确保列不能有NULL值。
  • 默认约束 (DEFAULT):当插入数据未指定该列值时,使用默认值。
  • 外键约束 (FOREIGN KEY):确保一个表中的数据匹配另一个表中值的有效性(引用完整性)。本文为入门指南,外键将在进阶篇详细讨论。

6.2 索引

索引就像书的目录,能极大加快数据检索速度,但会增加写操作(增、删、改)的开销和存储空间。

  • 主键索引 (PRIMARY):自动创建,唯一且非空。
  • 唯一索引 (UNIQUE):确保索引列的值唯一。
  • 普通索引 (INDEX/KEY):最基本的索引,仅用于加速查询。
  • 创建时机:通常在WHEREORDER BYJOIN条件中频繁使用的列上创建索引。

7. 总结与实践建议

通过本文,你已经系统梳理了 MySQL 的基础概念、数据类型和库表操作(DDL)。这是你数据库之旅的第一步。

下一步学习建议

  1. 动手实践:在本地或在线 MySQL 环境中,按照本文的 SQL 示例逐一执行,观察结果。
  2. 设计表结构:尝试为一个简单的博客系统(包含用户、文章、评论)设计表结构,并写出CREATE TABLE语句。
  3. 深入学习 DML:掌握INSERT(插入)、SELECT(查询)、UPDATE(更新)、DELETE(删除)语句,这是与数据交互的核心。
  4. 探索进阶主题:了解事务(Transaction)、视图(View)、存储过程(Stored Procedure)等高级特性。

记住,理解概念后,持续的编码实践是掌握 SQL 的唯一途径。

http://www.jsqmd.com/news/1145334/

相关文章:

  • PHILIPS 459800312933 通讯模块
  • 2026年八字排盘软件推荐:AI提示词、多盘复盘和真太阳时功能怎么选?
  • 激光共聚焦显微镜在精密制造中3D表面形貌测量的核心技术
  • 2026广州做小程序商城的公司有哪些
  • B站视频转换终极指南:5分钟拯救你的珍贵缓存视频
  • 虚拟角色AI助手开发指南:从设定到工程化实现
  • Final Cut Pro 12.3 重磅更新!端侧AI自动字幕+智能遮罩+剪辑还原
  • 【Linux基础IO】printf 为什么会写进文件?一文搞懂重定向和 dup2 底层原理
  • 皮肤病肿瘤区域分割数据集:438张训练图+145张测试图,带高清mask与一键可视化脚本
  • OpenCV 4.8 + Python 圆孔尺寸测量实战:MindVision相机标定与0.01mm精度实现
  • 怎么做抖音?8人团队单月获客100+的秘密!
  • 多品牌珠宝集团一体化售后数字化落地分析:单套系统能否覆盖品牌区分、会员打通、维保自动提醒
  • 2026外贸建站公司哪家好
  • 2026年7月本地化AI搜索引擎优化策略
  • 当 AI 什么都会做,人还需要做什么?
  • Token计算深度分解:搞懂大模型的“计价单位”
  • AI Research OS:将Obsidian笔记转化为智能体长期记忆的完整实践
  • 2026网站建设公司推荐
  • ViGEmBus虚拟手柄驱动实战:为什么它是Windows游戏玩家的必备方案?
  • 2026二本人工智能专业学数据分析的价值
  • 多智能体动态加入与非均匀缩放控制实战指南
  • 避坑指南⚠️ 自动售货机运营新手最容易犯的5个错误~YH
  • 如何快速掌握音乐解锁工具:新手的终极使用秘籍
  • 多AI平台API统一封装与鉴权机制设计及其在企业级应用中的实践
  • 真实推荐|国内好用工单管理系统年中盘点
  • 2026年最新八字排盘 App 推荐:手机端看盘、AI提示词和命盘保存怎么选?
  • 2026免费可商用字体网站推荐:7个值得收藏的字体平台盘点
  • 5步精通猫抓cat-catch:浏览器资源嗅探扩展的高级配置与实战指南
  • AI Agent重构软件范式:低代码经典护城河正在瓦解,未来何去何从?
  • AI Coding 实战指南:从工具选择到代码生成