MySQL查詢(xún)、表操作與數(shù)據(jù)管理的操作指南
前言
MySQL 作為全球最流行的關(guān)系型數(shù)據(jù)庫(kù)之一,廣泛應(yīng)用于 Web 開(kāi)發(fā)、數(shù)據(jù)分析等場(chǎng)景。對(duì)于初學(xué)者而言,掌握基礎(chǔ)的查詢(xún)語(yǔ)法、表結(jié)構(gòu)操作、數(shù)據(jù)導(dǎo)入導(dǎo)出是入門(mén)的核心。本文將結(jié)合「學(xué)生 - 成績(jī) - 科目」的實(shí)戰(zhàn)場(chǎng)景,從「數(shù)據(jù)查詢(xún)」「表的創(chuàng)建與數(shù)據(jù)管理」「表結(jié)構(gòu)修改與刪除」三個(gè)維度,手把手教你玩轉(zhuǎn) MySQL 核心操作。
一、表的創(chuàng)建與數(shù)據(jù)導(dǎo)入導(dǎo)出:基礎(chǔ)架構(gòu)與數(shù)據(jù)管理
想要查詢(xún)數(shù)據(jù),首先要搭建表結(jié)構(gòu)并導(dǎo)入數(shù)據(jù)。本節(jié)講解表的創(chuàng)建、數(shù)據(jù)導(dǎo)入、數(shù)據(jù)導(dǎo)出全流程。
1.1 創(chuàng)建表:定義數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
MySQL 表通過(guò)CREATE TABLE創(chuàng)建,支持 Navicat 可視化操作和命令行兩種方式,核心是定義字段名、類(lèi)型、注釋等。
1.1.1 核心業(yè)務(wù)表結(jié)構(gòu)
示例核心表的結(jié)構(gòu)如下:

1.1.2 命令行創(chuàng)建表示例
以students表為例,命令行創(chuàng)建語(yǔ)法:
CREATE TABLE `students` ( `stu_id` bigint(10) DEFAULT NULL COMMENT '學(xué)生學(xué)號(hào)', `stu_name` varchar(255) DEFAULT NULL COMMENT '學(xué)生姓名', `gender` varchar(255) DEFAULT NULL COMMENT '學(xué)生性別', `age` int(10) DEFAULT NULL COMMENT '學(xué)生年齡', `major` varchar(255) DEFAULT NULL COMMENT '學(xué)生專(zhuān)業(yè)', `clazz` varchar(255) DEFAULT NULL COMMENT '學(xué)生班級(jí)', `year` bigint(20) DEFAULT NULL COMMENT '入學(xué)年份' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


1.2 導(dǎo)入數(shù)據(jù):多種方式填充數(shù)據(jù)
表創(chuàng)建完成后,需導(dǎo)入數(shù)據(jù),常用方式有「可視化導(dǎo)入」「SQL 插入」「文件導(dǎo)入」。
1.2.1 SQL 插入數(shù)據(jù)
單條插入:
insert into students values(20250101,'張三','男',20,'計(jì)算機(jī)科學(xué)與技術(shù)','計(jì)科2501',2025);


多行插入(高效批量導(dǎo)入少量數(shù)據(jù)):
insert into students(stu_id,stu_name,gender,age,major,clazz,year) values (20250101,'張三','男',20,'計(jì)算機(jī)科學(xué)與技術(shù)','計(jì)科2501',2025), (20250102,'李四','女',20,'計(jì)算機(jī)科學(xué)與技術(shù)','計(jì)科2501',2025), (20250103,'王五','男',19,'計(jì)算機(jī)科學(xué)與技術(shù)','計(jì)科2501',2025);
1.2.2 文件導(dǎo)入(大批量數(shù)據(jù))
通過(guò)LOAD DATA命令可快速導(dǎo)入文本文件(如.txt)數(shù)據(jù),適合大批量數(shù)據(jù):
# Windows系統(tǒng)(注意路徑轉(zhuǎn)義) load data local infile 'D:\\Desktop\\mysqlmd\\data\\students.txt' into table students fields terminated by ','; # Linux系統(tǒng) load data local infile '/root/data/students.txt' into table students fields terminated by ',';
1.2.3 Navicat 可視化導(dǎo)入
Navicat 提供「導(dǎo)入向?qū)А?,支?Excel、CSV、TXT 等格式,步驟簡(jiǎn)單易操作(如圖 1):選擇表 → 右鍵 → 導(dǎo)入向?qū)?→ 選擇文件 → 配置分隔符 / 編碼 → 映射字段 → 執(zhí)行導(dǎo)入。






1.3 導(dǎo)出數(shù)據(jù):備份與數(shù)據(jù)遷移
數(shù)據(jù)導(dǎo)出是備份、遷移的核心操作,支持可視化導(dǎo)出和命令行導(dǎo)出。
1.3.1 Navicat 可視化導(dǎo)出
選擇要導(dǎo)出的表 → 右鍵 → 導(dǎo)出向?qū)?→ 選擇導(dǎo)出格式(SQL/Excel/CSV) → 配置導(dǎo)出路徑和參數(shù) → 執(zhí)行導(dǎo)出。
1.3.2 命令行導(dǎo)出(mysqldump)
mysqldump是 MySQL 官方備份工具,適合批量備份:
# 基礎(chǔ)導(dǎo)出(不建議明文寫(xiě)密碼) mysqldump -uroot -p123456 stu students > /root/data/students.sql # 配置別名(簡(jiǎn)化備份命令) alias db_backup='mysqldump -uroot -p --single-transaction stu students > /root/data/mydb_$(date +%Y%m%d).sql' # 備份并壓縮(節(jié)省空間) alias db_backup='mysqldump -uroot -p --single-transaction stu students | gzip > /root/data/mydb_$(date +%Y%m%d).sql.gz'
二、表結(jié)構(gòu)修改與刪除:靈活調(diào)整表設(shè)計(jì)
實(shí)際業(yè)務(wù)中,表結(jié)構(gòu)需隨需求調(diào)整,ALTER TABLE是核心語(yǔ)法;不再使用的表可通過(guò)DROP TABLE刪除。
2.1 ALTER TABLE:修改表結(jié)構(gòu)
ALTER TABLE支持追加字段、修改字段、刪除字段、重命名字段 / 表等操作,核心語(yǔ)法如下:
| 操作類(lèi)型 | 語(yǔ)法示例 | 說(shuō)明 |
|---|---|---|
| 新增字段 | alter table students add dateT date; | 新增日期字段 |
| 設(shè)置默認(rèn)值 | alter table students add dateT date DEFAULT "2025-12-12"; | 新增字段并設(shè)默認(rèn)值 |
| 修改字段類(lèi)型 | alter table students modify dateT datetime; | 修改字段類(lèi)型(必須聲明類(lèi)型) |
| 修改字段非空 | alter table students modify stu_id int not null; | 設(shè)置字段非空 |
| 刪除字段 | alter table students drop length; | 刪除指定字段 |
| 重命名字段 | alter table students change stu_id sid varchar(255); | 重名字段并改類(lèi)型 |
| 修改字符集 | alter table students character set utf8; | 修改表字符集 |
| 重命名表 | alter table students rename to student; | 表重命名 |
示例:修改字段名稱(chēng)和類(lèi)型
將學(xué)生表的stu_id重命名為sid,并修改類(lèi)型為varchar(255):
alter table students change stu_id sid varchar(255);


2.2 DROP TABLE:刪除表
刪除不再使用的表,可加IF EXISTS避免表不存在時(shí)報(bào)錯(cuò):
-- 安全刪除表 drop table if exists students;

三、MySQL 基礎(chǔ)查詢(xún):從單表到多表的進(jìn)階
數(shù)據(jù)查詢(xún)是 MySQL 最核心的能力之一,我們以「學(xué)生 - 成績(jī) - 科目」的業(yè)務(wù)場(chǎng)景為例,講解各類(lèi)查詢(xún)技巧。
3.1 基礎(chǔ)查詢(xún)語(yǔ)法
先定義核心業(yè)務(wù)表(后文會(huì)詳細(xì)講解表創(chuàng)建):students(學(xué)生表)、scores(成績(jī)表)、subjects(科目表),從單表查詢(xún)?nèi)胧种鸩竭M(jìn)階。
3.1.1 全量查詢(xún)與精準(zhǔn)條件查詢(xún)
全量查詢(xún)是最基礎(chǔ)的操作,可獲取表中所有數(shù)據(jù):
select * from students;
精準(zhǔn)條件查詢(xún)通過(guò)WHERE篩選符合規(guī)則的數(shù)據(jù),比如查詢(xún)年齡 20 歲的學(xué)生(僅展示姓名和年齡):
select name, age from students where age = 20;
查詢(xún)「人工智能」專(zhuān)業(yè)的所有學(xué)生(注意字符串匹配需規(guī)避換行符等細(xì)節(jié)):
select * from students where major='人工智能';
3.1.2 模糊查詢(xún):匹配關(guān)鍵詞
當(dāng)需要模糊匹配(如查詢(xún) “計(jì)算機(jī)科學(xué)” 相關(guān)專(zhuān)業(yè)),使用LIKE關(guān)鍵字 + 通配符(%匹配任意字符):
select * from students where major LIKE '%計(jì)算機(jī)科學(xué)%';
3.1.3 排序查詢(xún):按字段排序
通過(guò)ORDER BY實(shí)現(xiàn)排序,DESC表示倒序(默認(rèn)ASC升序)。例:查詢(xún)年齡 20 歲的學(xué)生并按 ID 倒序:
SELECT id, name FROM students WHERE age = 20 ORDER BY id DESC;
3.1.4 聚合查詢(xún):分組統(tǒng)計(jì)數(shù)據(jù)
MySQL 提供MAX/MIN/AVG/SUM/COUNT等聚合函數(shù),結(jié)合GROUP BY可實(shí)現(xiàn)分組統(tǒng)計(jì)。例:查詢(xún)每個(gè)專(zhuān)業(yè)的最大年齡:
SELECT major,MAX(age) as max_age FROM students GROUP BY major;
3.2 多表連接查詢(xún):關(guān)聯(lián)多維度數(shù)據(jù)
實(shí)際業(yè)務(wù)中數(shù)據(jù)分散在多張表,需通過(guò)連接查詢(xún)整合。
3.2.1 內(nèi)連接(INNER JOIN)
僅返回多張表中「匹配關(guān)聯(lián)條件」的數(shù)據(jù),例:查詢(xún)學(xué)生的成績(jī)及對(duì)應(yīng)科目名稱(chēng):
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)
外連接會(huì)返回「主表所有數(shù)據(jù)」,關(guān)聯(lián)表無(wú)匹配則補(bǔ)NULL。例:右連接查詢(xún)所有成績(jī)記錄(包括無(wú)對(duì)應(yīng)學(xué)生的成績(jī)):
SELECT * FROM( students as s RIGHT JOIN scores as sc ON s.id = sc.stu_id );
3.3 常用查詢(xún)語(yǔ)法總結(jié)
| 語(yǔ)法類(lèi)型 | 關(guān)鍵字 / 函數(shù) | 示例場(chǎng)景 |
|---|---|---|
| 全量查詢(xún) | SELECT * FROM | 查詢(xún)所有學(xué)生信息 |
| 條件查詢(xún) | WHERE | 查詢(xún)年齡 20 歲的學(xué)生 |
| 模糊查詢(xún) | LIKE + % | 查詢(xún)含 “計(jì)算機(jī)科學(xué)” 的專(zhuān)業(yè) |
| 排序查詢(xún) | ORDER BY + DESC/ASC | 按 ID 倒序查詢(xún)學(xué)生 |
| 聚合查詢(xún) | MAX/MIN/AVG + GROUP BY | 按專(zhuān)業(yè)統(tǒng)計(jì)最大年齡 |
| 內(nèi)連接 | INNER JOIN/ JOIN | 關(guān)聯(lián)學(xué)生、成績(jī)、科目表 |
| 外連接 | LEFT/RIGHT JOIN | 查詢(xún)所有成績(jī)(含無(wú)學(xué)生匹配) |
四、總結(jié)
本文從「數(shù)據(jù)查詢(xún)」「表的創(chuàng)建與數(shù)據(jù)管理」「表結(jié)構(gòu)修改與刪除」三個(gè)核心維度,講解了 MySQL 的實(shí)戰(zhàn)操作。掌握這些基礎(chǔ)語(yǔ)法后,可進(jìn)一步學(xué)習(xí)索引優(yōu)化、事務(wù)、存儲(chǔ)過(guò)程等進(jìn)階內(nèi)容。
核心要點(diǎn)回顧:
- 查詢(xún)是核心:?jiǎn)伪聿樵?xún)掌握
WHERE/LIKE/ORDER BY/GROUP BY,多表查詢(xún)掌握JOIN;- 表與數(shù)據(jù)管理:
CREATE TABLE建表,INSERT/LOAD DATA導(dǎo)入數(shù)據(jù),mysqldump導(dǎo)出備份;- 表結(jié)構(gòu)調(diào)整:
ALTER TABLE靈活修改表,DROP TABLE安全刪除表。
建議結(jié)合實(shí)際業(yè)務(wù)場(chǎng)景多練多試,比如模擬 “學(xué)生成績(jī)管理系統(tǒng)”,從建表、導(dǎo)入數(shù)據(jù)到復(fù)雜查詢(xún),逐步夯實(shí) MySQL 基礎(chǔ)。
到此這篇關(guān)于MySQL查詢(xún)、表操作與數(shù)據(jù)管理的操作指南的文章就介紹到這了,更多相關(guān)mysql查詢(xún)表操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Node.js mysql客戶(hù)端不支持認(rèn)證協(xié)議引發(fā)的問(wèn)題
這篇文章主要介紹了解決Node.js mysql客戶(hù)端不支持認(rèn)證協(xié)議引發(fā)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
Mysql InnoDB的鎖定機(jī)制實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Mysql InnoDB的鎖定機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
解決hibernate+mysql寫(xiě)入數(shù)據(jù)庫(kù)亂碼
初次沒(méi)習(xí)hibernate,其中遇到問(wèn)題在網(wǎng)上找的答案與大家共同分享!2009-07-07
MySQL數(shù)據(jù)庫(kù)索引及底層數(shù)據(jù)結(jié)構(gòu)詳解
MySQL默認(rèn)使用B+樹(shù)索引和InnoDB引擎,索引通過(guò)有序結(jié)構(gòu)加速數(shù)據(jù)檢索,但增加存儲(chǔ)與維護(hù)成本,B+樹(shù)優(yōu)化了磁盤(pán)讀寫(xiě)與范圍查詢(xún)效率,成為主流選擇,本文介紹MySQL數(shù)據(jù)庫(kù)索引及底層數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),感興趣的朋友一起看看吧2025-08-08
一個(gè)小時(shí)學(xué)會(huì)MySQL數(shù)據(jù)庫(kù)(張果)
當(dāng)前大量的網(wǎng)站使用php語(yǔ)言,那么對(duì)應(yīng)的就是mysql數(shù)據(jù)庫(kù),這里就為大家分享一下MySQL數(shù)據(jù)庫(kù)的相關(guān)知識(shí),希望大家多多支持腳本之家2018-01-01
mysql獲取字符串長(zhǎng)度函數(shù)(CHAR_LENGTH)
本文介紹一下關(guān)于mysql獲取字符串長(zhǎng)度的方法,希望此教程對(duì)各位同學(xué)會(huì)有所幫助哦。2013-11-11
mysql斷電后無(wú)法啟動(dòng)的問(wèn)題小結(jié)
這篇文章主要介紹了mysql斷電后無(wú)法啟動(dòng)的問(wèn)題小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-04-04

