尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
MySQL 数据库操作入门:从建库到备份,一篇讲清楚
1. 前言最近在整理 MySQL 的学习笔记发现数据库操作这块内容虽然基础但知识点挺零散的。今天干脆把「库的操作」这部分系统地梳理一遍从创建数据库、字符集设置到修改、删除、备份恢复一次讲明白。文章里的命令我都实际跑过可以直接复制跟着敲。2. 创建数据库2.1 基本语法先看语法结构CREATEDATABASE[IFNOTEXISTS]db_name[create_specification[,create_specification]...]create_specification:[DEFAULT]CHARACTERSETcharset_name[DEFAULT]COLLATEcollation_name几个要点说明一下大写的部分表示关键字比如CREATE DATABASE[]里的内容是可选项不写也能用CHARACTER SET指定数据库采用的字符集COLLATE指定数据库字符集的校验规则2.2 实际创建几个库试试先创建一个最简单的createdatabasedb1;这里有个小细节当我们创建数据库没有指定字符集和校验规则时系统会使用默认字符集utf8校验规则是utf8_general_ci。再创建一个指定 utf8 字符集的createdatabasedb2charsetutf8;最后创建一个既指定字符集又带校对规则的createdatabasedb3charsetutf8collateutf8_general_ci;3. 字符集和校验规则3.1 查看系统默认配置想知道当前系统的默认字符集和校验规则可以这样查showvariableslikecharacter_set_database;showvariableslikecollation_database;3.2 查看支持的字符集showcharset;字符集主要控制用什么语言。比如utf8就可以正常使用中文。3.3 查看支持的校验规则showcollation;3.4 校验规则对查询的影响这一块挺有意思的校验规则直接决定了查询时是否区分大小写。我们实际演示一下。不区分大小写的情况创建一个使用utf8_general_ci不区分大小写的数据库createdatabasetest1collateutf8_general_ci;usetest1;createtableperson(namevarchar(20));insertintopersonvalues(a);insertintopersonvalues(A);insertintopersonvalues(b);insertintopersonvalues(B);然后查询nameamysqlselect*frompersonwherenamea;------|name|------|a||A|------可以看到a和A都被查出来了因为校验规则不区分大小写。区分大小写的情况再创建一个使用utf8_bin区分大小写的数据库createdatabasetest2collateutf8_bin;usetest2;createtableperson(namevarchar(20));insertintopersonvalues(a);insertintopersonvalues(A);insertintopersonvalues(b);insertintopersonvalues(B);同样查询nameamysqlselect*frompersonwherenamea;------|name|------|a|------这次只查出了小写的aA被过滤掉了。3.5 校验规则对排序的影响校验规则同样影响排序结果。不区分大小写排序mysqlusetest1;mysqlselect*frompersonorderbyname;------|name|------|a||A||b||B|------区分大小写排序mysqlusetest2;mysqlselect*frompersonorderbyname;------|name|------|A||B||a||b|------可以看到utf8_bin下大写字母排在了小写前面。4. 操纵数据库4.1 查看数据库showdatabases;4.2 显示创建语句showcreatedatabase数据库名;实际效果mysqlshowcreatedatabasemytest;--------------------------------------------------------------------------|Database|CreateDatabase|--------------------------------------------------------------------------|mysql|CREATEDATABASEmytest/*!40100 DEFAULT CHARACTER SET utf8 */|--------------------------------------------------------------------------这里有两个小知识点MySQL 建议关键字用大写但不是必须的数据库名字的反引号是为了防止数据库名刚好是关键字/*!40100 default.... */这个不是注释它表示当前 MySQL 版本大于 4.01 版本时就执行这句话4.3 修改数据库语法ALTERDATABASEdb_name[alter_spacification[,alter_spacification]...]alter_spacification:[DEFAULT]CHARACTERSETcharset_name[DEFAULT]COLLATEcollation_name对数据库的修改主要指的是修改字符集和校验规则。比如把mytest数据库字符集改成gbkmysqlalterdatabasemytestcharsetgbk;Query OK,1rowaffected(0.00sec)mysqlshowcreatedatabasemytest;--------------------------------------------------------------------------|Database|CreateDatabase|--------------------------------------------------------------------------|mytest|CREATEDATABASEmytest/*!40100 DEFAULT CHARACTER SET gbk */|--------------------------------------------------------------------------4.4 删除数据库DROPDATABASE[IFEXISTS]db_name;执行删除之后的结果数据库内部看不到对应的数据库对应的数据库文件夹被删除是级联删除里面的数据表全部被删这里要特别提醒一句不要随意删除数据库删了可就真没了。4.5 备份和恢复备份和恢复这块建议放到最后来学因为涉及的命令稍微多一点。备份基本语法# mysqldump -P3306 -u root -p 密码 -B 数据库名 数据库备份存储的文件路径示例把mytest库备份到文件需要退出 MySQL 连接后执行# mysqldump -P3306 -u root -p123456 -B mytest D:/mytest.sql备份完成后可以打开mytest.sql文件看看其实里面把我们整个创建数据库、建表、导入数据的语句都装进去了。还原mysqlsource D:/mysql-5.7.22/mytest.sql;注意事项有几个实际中经常遇到的场景只备份一张表# mysqldump -u root -p 数据库名 表名1 表名2 D:/mytest.sql同时备份多个数据库# mysqldump -u root -p -B 数据库名1 数据库名2 ... 数据库存放路径没带 -B 参数的情况如果备份一个数据库时没有带上-B参数在恢复数据库时需要先手动创建空数据库然后使用该数据库再使用source来还原。4.6 查看连接情况showprocesslist;实际效果mysqlshowprocesslist;-------------------------------------------------------------------|Id|User|Host|db|Command|Time|State|Info|-------------------------------------------------------------------|2|root|localhost|test|Sleep|1386||NULL||3|root|localhost|NULL|Query|0|NULL|showprocesslist|-------------------------------------------------------------------这个命令可以告诉我们当前有哪些用户连接到 MySQL。如果查出某个用户不是你正常登录的那很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时也可以用这个指令来查看数据库连接情况。5. 小结数据库操作这块核心就是建库、设字符集、改库、删库、备份恢复这几件事。字符集和校验规则的选择会影响查询和排序的行为建议在建库时就考虑清楚。备份恢复虽然平时用得不多但真出问题的时候能救命值得花点时间练熟。
RELATED

相关推荐

把Claude Code变成函数:AgentField Harness编排与6大编码Agent Provider实战

把Claude Code变成函数:AgentField Harness编排与6大编码Agent Provider实战

把Claude Code变成函数:AgentField Harness编排与6大编码Agent Provider实战 【免费下载链接】agentfield Build, run and scale AI agents like API and microservices 项目地址: https://gitcode.com/gh_mirrors/ag/agentfield AgentField 是一款开源的 AI…

📅 2026/10/3 20:07:18
Academic Figure Generator 实时进度指南:SSE 流式推送与异步后台任务实现

Academic Figure Generator 实时进度指南:SSE 流式推送与异步后台任务实现

Academic Figure Generator 实时进度指南:SSE 流式推送与异步后台任务实现 【免费下载链接】academic-figure-generator AI 驱动的学术论文配图生成平台。上传论文 → AI 分析内容生成 Prompt → 一键生成高质量科研配图,还有配套的skill可在主流agent中…

📅 2026/10/3 20:02:18
scipilot-figure-skill 数据剖析实战:用 profile_data.py 读懂你的实验数据

scipilot-figure-skill 数据剖析实战:用 profile_data.py 读懂你的实验数据

scipilot-figure-skill 数据剖析实战:用 profile_data.py 读懂你的实验数据 【免费下载链接】scipilot-figure-skill SciPilot Skills family - Publication-grade scientific figure copilot for Claude Code 项目地址: https://gitcode.com/gh_mirrors/sc/scip…

📅 2026/10/3 20:02:18
MORE NEWS

更多资讯

📰

MySQL LIMIT分页:从基础语法到深分页性能优化实战

直接说结论:LIMIT在MySQL里看着简单,工作时你大概率只是把它当作“截断工具”在用,但真正的高效分页、深分页优化、与排序和连接的配合,这些地方才是性能差异和坑位的来源。我见过不少同行,尤其是刚接触MySQL的开发者&…

📰

TBtools共线性图谱精修指南:从可运行到可发表

1. 为什么一张共线性图能登上Nature封面?——从“能画出来”到“值得被看见”的认知断层你有没有过这样的经历:花三天跑通Circos流程,生成一张密密麻麻的染色体环形图,导出PDF发给导师,对方扫了一眼说:“颜…

📰

Navicat 17连接Oracle 11g实例:从监听配置到表空间创建全攻略

1. 动手之前:先说清楚Navicat 17和Oracle 11g这对组合的关系 很多朋友一看到“Navicat 17创建Oracle 11g数据库实例”这个标题,下意识以为打开Navicat点几下“新建数据库”就完事了,实际上这里有两个常见的误解得先纠正。 Navicat 17本身不是…

📰

Python实现宽带GSC波束形成实战指南

1. 项目概述:为什么宽带GSC不是“调个参数就能用”的玩具 你拆开市面上任何一款中高端智能音箱,比如某米、某度、某为的旗舰款,里面几乎都藏着4到6颗麦克风,排成圆形或线性阵列——它们不是为了“多录几个声道”,而是要…

📰

树莓派+STM32+激光雷达三端协同开发实战指南

1. 项目概述:这不是一台小车,而是一套“能跑的嵌入式系统教科书”“树莓派STM32激光雷达:大学生工训赛智能物流小车全栈开发实录(附避坑指南)”——这个标题里没有一个词是虚的。它不是拼凑的关键词堆砌,而…

📰

SpringBoot+Vue+MyBatis在线考试系统:开发部署与避坑指南

做后台开发这些年,考试系统这类项目我前后接手过不少版本:有学校拿来期末测评的,有企业内部做培训认证的,还有金融机构拿来做上岗考核的。需求大同小异,但源码质量真的天差地别。最近花时间把一套基于 SpringBoot Vue…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬