MySQL 数据表基本操作详解:从建表到增删改查

晚来风
晚来风
发布时间:2026-10-16 | 4人浏览过
原创

在 MySQL 数据库应用中,数据表的操作是核心环节。本文系统梳理了从建表定义到数据增删改查的全流程关键步骤。内容涵盖表结构的创建与验证,批量插入数据的效率原理,以及 SELECT 查询中复杂的条件过滤、表达式计算、去重排序和分页机制。同时特别警示 DROP 与 DELETE 操作的潜在风险,并提供性能优化的实操建议。

1. 准备工作与基础规范

在进行任何数据表操作前,需明确以下 SQL 基础规则:

  • 关键字避让:库名、表名、列名若使用 SQL 关键字,必须用反引号 ` 包裹以作区分。
  • 上下文切换:对表进行操作前,务必先通过 USE 数据库名; 选中目标数据库。
  • 注释规范:-- (注意后留空格)或 # 用于单行注释;/* ... */ 用于多行注释。字段注释可在建表时使用 COMMENT '注释内容' 属性添加。
  • 字符串引用:SQL 中单引号和双引号均可表示字符串。

2. 查看当前数据库中的表

若要列出当前已选数据库中的所有表,使用以下语法:

SHOW TABLES;

3. 创建数据表

使用 CREATE TABLE 语句定义表结构,支持使用 IF NOT EXISTS 避免重复创建报错。

CREATE TABLE [IF NOT EXISTS] table_name (
    column_name data_type,
    ...
);

4. 查看指定表结构

通过 DESC(即 DESCRIBE 的缩写)查看已存在表的详细字段信息:

DESC table_name;
-- 或
DESCRIBE table_name;

5. 删除数据表

使用 DROP TABLE 彻底移除表及其中的数据。此操作不可逆,风险极高,一旦删除可能导致应用程序直接崩溃且难以及时察觉。

DROP TABLE [IF EXISTS] table_name [, table_name ...];

6. 向表中新增数据 (INSERT)

使用 INSERT INTO 将数据写入表中。可指定列名插入特定字段,若不指定则默认为全列插入。

INSERT INTO table_name [(col1, col2, ...)]
VALUES (val1, val2, ...), (val1, val2, ...);

6.1 插入方式与性能差异

全列插入一行:

结果为:

idname
1张三

全列插入多行(推荐,效率更高):

结果为:

idname
1张三
2李四
3王五

部分列插入:

结果为:

idname
1张三
2李四
3王五
4NULL

MySQL 采用“客户端—服务器”架构。一条 SQL 语句插入多条记录,意味着一次网络 IO 传输即可完成多次数据落盘。而多次单条插入需要反复建立网络连接、传输包体及磁盘写入,受限于 IO 访问速度远低于内存寄存器速度的特性,单批插入在性能上具有显著优势。

6.2 插入性能直观对比

一条语句插入多个记录(高效):

多条语句分别插入(低效):

7. 查找表中的数据 (SELECT)

SELECT 语句执行结果仅为内存中的临时表,不改变磁盘数据。其通用语法如下:

SELECT [DISTINCT] {col | expr} 
FROM table_name 
[WHERE condition]
[ORDER BY col [ASC|DESC]] 
[LIMIT m, n];

为配合后续查询演示,假设我们拥有如下包含学生信息的测试数据表:

7.1 全列与指定列查询

全列查询: 慎用,大量数据会撑满服务器带宽。

指定列查询: 返回顺序无需严格遵循建表定义的物理顺序。

7.2 表达式与常量列

在 SELECT 中可以参与列间运算,或插入常量作为新列。需注意:只要参与运算的值中包含 NULL,结果即为 NULL。

表达式查询: 计算总分(chinese+math+english),结果不受原数据类型限制,且不修改原表数据。

添加常量列:

7.3 别名设置 (AS)

使用 AS 为查询出的列或表达式起别名,提升可读性。

7.4 去重查询 (DISTINCT)

针对单列或多列组合进行去重,要求所有指定的列值在同一行完全一致才视为重复。

单列去重:

多列组合去重:

7.5 排序查询 (ORDER BY)

默认排序无序,ASC 为升序(默认),DESC 为降序。NULL 值被视为最小值。MySQL 常使用归并排序算法以优化硬盘读写开销。

单列排序: 数学成绩升序/降序。

表达式/别名排序:

多列综合排序: 优先按数学期末成绩最高,其次语文成绩最低。

7.6 条件查询 (WHERE)

支持比较运算符与逻辑运算符(AND/OR/NOT)。注意:WHERE 条件中不能直接使用查询列的别名。且模糊匹配涉及长字符串比较时可能拖慢性能。

比较与逻辑运算符说明:

运算符说明
AND类似 &&,全真才真
OR类似 ||,一真即真
NOT取反

运算符直观展示:

通配符匹配 (LIKE):

通配符说明
%任意多个字符(含0个)
_任意一个字符

典型条件查询案例:

1. 英语不及格同学:

2. 总分小于 200(排除 NULL 干扰):

3. 包含 NULL 值的总分计算修正:

4. 区间查询(80-90分):

5. 集合查询(IN):

6-9. 模糊查询示例: 姓孙、名字以德结尾、名字包含悟、姓孙且仅两字。

10. 范围匹配(BETWEEN): 分数90几。

7.7 分页查询 (LIMIT)

应对大数据量,减少网络与 IO 开销。第一行索引为 0。

应用场景: 搜索引擎结果的分页展示。

语法:

  • LIMIT n:返回前 n 条记录。
  • LIMIT m, n:从第 m 条开始(跳过前 m 条),返回 n 条。
  • LIMIT n OFFSET m:同上。

操作示例:

8. 修改表中的数据 (UPDATE)

UPDATE 会真实持久化修改硬盘数据。= 在此处代表赋值而非判断。

UPDATE table_name SET col = value [WHERE condition];

执行更新后的效果:

9. 删除表中的数据 (DELETE)

逐行删除,适合少量数据。若需清空整表,建议使用 DROP TABLE 或直接 TRUNCATE,效率远高于 DELETE。

DELETE FROM table_name [WHERE condition];

删除操作示意:

以上就是 MySQL 数据库中数据表超详细的基本操作的全部内容,更多关于 MySQL 进阶教程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表