MySQL查询、表操作与数据管理的操作指南
作者:輕華
前言
MySQL 作为全球最流行的关系型数据库之一,广泛应用于 Web 开发、数据分析等场景。对于初学者而言,掌握基础的查询语法、表结构操作、数据导入导出是入门的核心。本文将结合「学生 - 成绩 - 科目」的实战场景,从「数据查询」「表的创建与数据管理」「表结构修改与删除」三个维度,手把手教你玩转 MySQL 核心操作。
一、表的创建与数据导入导出:基础架构与数据管理
想要查询数据,首先要搭建表结构并导入数据。本节讲解表的创建、数据导入、数据导出全流程。
1.1 创建表:定义数据存储结构
MySQL 表通过CREATE TABLE创建,支持 Navicat 可视化操作和命令行两种方式,核心是定义字段名、类型、注释等。
1.1.1 核心业务表结构
示例核心表的结构如下:

1.1.2 命令行创建表示例
以students表为例,命令行创建语法:
CREATE TABLE `students` ( `stu_id` bigint(10) DEFAULT NULL COMMENT '学生学号', `stu_name` varchar(255) DEFAULT NULL COMMENT '学生姓名', `gender` varchar(255) DEFAULT NULL COMMENT '学生性别', `age` int(10) DEFAULT NULL COMMENT '学生年龄', `major` varchar(255) DEFAULT NULL COMMENT '学生专业', `clazz` varchar(255) DEFAULT NULL COMMENT '学生班级', `year` bigint(20) DEFAULT NULL COMMENT '入学年份' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


1.2 导入数据:多种方式填充数据
表创建完成后,需导入数据,常用方式有「可视化导入」「SQL 插入」「文件导入」。
1.2.1 SQL 插入数据
单条插入:
insert into students values(20250101,'张三','男',20,'计算机科学与技术','计科2501',2025);


多行插入(高效批量导入少量数据):
insert into students(stu_id,stu_name,gender,age,major,clazz,year) values (20250101,'张三','男',20,'计算机科学与技术','计科2501',2025), (20250102,'李四','女',20,'计算机科学与技术','计科2501',2025), (20250103,'王五','男',19,'计算机科学与技术','计科2501',2025);
1.2.2 文件导入(大批量数据)
通过LOAD DATA命令可快速导入文本文件(如.txt)数据,适合大批量数据:
# Windows系统(注意路径转义) load data local infile 'D:\\Desktop\\mysqlmd\\data\\students.txt' into table students fields terminated by ','; # Linux系统 load data local infile '/root/data/students.txt' into table students fields terminated by ',';
1.2.3 Navicat 可视化导入
Navicat 提供「导入向导」,支持 Excel、CSV、TXT 等格式,步骤简单易操作(如图 1):选择表 → 右键 → 导入向导 → 选择文件 → 配置分隔符 / 编码 → 映射字段 → 执行导入。






1.3 导出数据:备份与数据迁移
数据导出是备份、迁移的核心操作,支持可视化导出和命令行导出。
1.3.1 Navicat 可视化导出
选择要导出的表 → 右键 → 导出向导 → 选择导出格式(SQL/Excel/CSV) → 配置导出路径和参数 → 执行导出。
1.3.2 命令行导出(mysqldump)
mysqldump是 MySQL 官方备份工具,适合批量备份:
# 基础导出(不建议明文写密码) mysqldump -uroot -p123456 stu students > /root/data/students.sql # 配置别名(简化备份命令) alias db_backup='mysqldump -uroot -p --single-transaction stu students > /root/data/mydb_$(date +%Y%m%d).sql' # 备份并压缩(节省空间) alias db_backup='mysqldump -uroot -p --single-transaction stu students | gzip > /root/data/mydb_$(date +%Y%m%d).sql.gz'
二、表结构修改与删除:灵活调整表设计
实际业务中,表结构需随需求调整,ALTER TABLE是核心语法;不再使用的表可通过DROP TABLE删除。
2.1 ALTER TABLE:修改表结构
ALTER TABLE支持追加字段、修改字段、删除字段、重命名字段 / 表等操作,核心语法如下:
| 操作类型 | 语法示例 | 说明 |
|---|---|---|
| 新增字段 | alter table students add dateT date; | 新增日期字段 |
| 设置默认值 | alter table students add dateT date DEFAULT "2025-12-12"; | 新增字段并设默认值 |
| 修改字段类型 | alter table students modify dateT datetime; | 修改字段类型(必须声明类型) |
| 修改字段非空 | alter table students modify stu_id int not null; | 设置字段非空 |
| 删除字段 | alter table students drop length; | 删除指定字段 |
| 重命名字段 | alter table students change stu_id sid varchar(255); | 重名字段并改类型 |
| 修改字符集 | alter table students character set utf8; | 修改表字符集 |
| 重命名表 | alter table students rename to student; | 表重命名 |
示例:修改字段名称和类型
将学生表的stu_id重命名为sid,并修改类型为varchar(255):
alter table students change stu_id sid varchar(255);


2.2 DROP TABLE:删除表
删除不再使用的表,可加IF EXISTS避免表不存在时报错:
-- 安全删除表 drop table if exists students;

三、MySQL 基础查询:从单表到多表的进阶
数据查询是 MySQL 最核心的能力之一,我们以「学生 - 成绩 - 科目」的业务场景为例,讲解各类查询技巧。
3.1 基础查询语法
先定义核心业务表(后文会详细讲解表创建):students(学生表)、scores(成绩表)、subjects(科目表),从单表查询入手逐步进阶。
3.1.1 全量查询与精准条件查询
全量查询是最基础的操作,可获取表中所有数据:
select * from students;
精准条件查询通过WHERE筛选符合规则的数据,比如查询年龄 20 岁的学生(仅展示姓名和年龄):
select name, age from students where age = 20;
查询「人工智能」专业的所有学生(注意字符串匹配需规避换行符等细节):
select * from students where major='人工智能';
3.1.2 模糊查询:匹配关键词
当需要模糊匹配(如查询 “计算机科学” 相关专业),使用LIKE关键字 + 通配符(%匹配任意字符):
select * from students where major LIKE '%计算机科学%';
3.1.3 排序查询:按字段排序
通过ORDER BY实现排序,DESC表示倒序(默认ASC升序)。例:查询年龄 20 岁的学生并按 ID 倒序:
SELECT id, name FROM students WHERE age = 20 ORDER BY id DESC;
3.1.4 聚合查询:分组统计数据
MySQL 提供MAX/MIN/AVG/SUM/COUNT等聚合函数,结合GROUP BY可实现分组统计。例:查询每个专业的最大年龄:
SELECT major,MAX(age) as max_age FROM students GROUP BY major;
3.2 多表连接查询:关联多维度数据
实际业务中数据分散在多张表,需通过连接查询整合。
3.2.1 内连接(INNER JOIN)
仅返回多张表中「匹配关联条件」的数据,例:查询学生的成绩及对应科目名称:
SELECT s.*, sc.subject_id, su.subject_name FROM ( students s JOIN scores sc JOIN subjects su ON s.id = sc.stu_id and sc.subject_id = su.subject_id );
3.2.2 外连接(LEFT/RIGHT/FULL JOIN)
外连接会返回「主表所有数据」,关联表无匹配则补NULL。例:右连接查询所有成绩记录(包括无对应学生的成绩):
SELECT * FROM( students as s RIGHT JOIN scores as sc ON s.id = sc.stu_id );
3.3 常用查询语法总结
| 语法类型 | 关键字 / 函数 | 示例场景 |
|---|---|---|
| 全量查询 | SELECT * FROM | 查询所有学生信息 |
| 条件查询 | WHERE | 查询年龄 20 岁的学生 |
| 模糊查询 | LIKE + % | 查询含 “计算机科学” 的专业 |
| 排序查询 | ORDER BY + DESC/ASC | 按 ID 倒序查询学生 |
| 聚合查询 | MAX/MIN/AVG + GROUP BY | 按专业统计最大年龄 |
| 内连接 | INNER JOIN/ JOIN | 关联学生、成绩、科目表 |
| 外连接 | LEFT/RIGHT JOIN | 查询所有成绩(含无学生匹配) |
四、总结
本文从「数据查询」「表的创建与数据管理」「表结构修改与删除」三个核心维度,讲解了 MySQL 的实战操作。掌握这些基础语法后,可进一步学习索引优化、事务、存储过程等进阶内容。
核心要点回顾:
- 查询是核心:单表查询掌握
WHERE/LIKE/ORDER BY/GROUP BY,多表查询掌握JOIN;- 表与数据管理:
CREATE TABLE建表,INSERT/LOAD DATA导入数据,mysqldump导出备份;- 表结构调整:
ALTER TABLE灵活修改表,DROP TABLE安全删除表。
建议结合实际业务场景多练多试,比如模拟 “学生成绩管理系统”,从建表、导入数据到复杂查询,逐步夯实 MySQL 基础。
到此这篇关于MySQL查询、表操作与数据管理的操作指南的文章就介绍到这了,更多相关mysql查询表操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
