数据库概述与MySQL入门

数据库概述与MySQL入门

2026年9月29日·#编程学习/javaweb学习笔记JavaWeb/MySQL/后端·7049 字 35 分钟
浏览量加载中...
AI 摘要- DeepSeek

第 5 章开篇。先从三层架构里 Dao 层的数据"存哪儿"这个问题引出数据库(用文件存不便维护、管理),讲清 DB、DBMS、SQL 三个概念与主流数据库产品的定位,再走完 MySQL 社区版的安装与命令行连接(含本机实测的中文字符集 1366 报错),最后把关系型数据库的数据模型摆开——数据库 → 表 → 记录,以及客户端 - DBMS - 数据库服务器这套结构

封面图
数据库概述与MySQL入门 - 封面图

上一章的结尾(39-IOC与DI详解)把 Tlias 案例的 Controller、Service、Dao 三层都写通了,IOC 容器也配好了。但有个问题一直绕过去没回答:Dao 层返回的那些数据,是从哪儿来的?课程里的用户数据是写在 UserDaoImpl 代码里 new 出来的假数据——真实的项目里,数据要落到数据库。

这是第 5 章(后端 Web 基础·数据库)的第一篇。PPT 第 8 页把本章分成五块,本科目这一批笔记覆盖前两块:

章节模块(PPT 第 8 页原文)讲什么本批笔记
MySQL 概述数据库是什么、MySQL 的安装与连接、数据模型本篇(40)
SQL 语句DDL、DML、DQL 等语句怎么写41-48
多表设计多张表之间怎么设计本章后面还会走到
多表查询多张表连起来查本章后面还会走到
事务一组操作要么都成功、要么都失败本章后面还会走到

PPT 第 9 页是这张目录的收窄版——把五块砍到”MySQL概述 / SQL语句”两块,本批笔记的 40-48 篇就落在这个范围里。

Dao 层的数据该放在哪儿(PPT 第 1-3 页)#

PPT 第 1-3 页是这一章的开场。先看第 2 页那三条分层职责——这就是第 37 篇讲过的三层架构:

层职责(PPT 第 2 页原话)
Controller接收请求、响应数据
Service逻辑处理
Dao数据访问

PPT 在 Dao 这一层旁边画了一个分叉,把”数据”的两种存法摆在一起:

数据的存法结果(PPT 第 2 页原话)
存进文件不便维护、管理
存进数据库这才是后端开发的标准做法

想象一下把员工数据写进一个 txt:想按”薪资大于 8000”筛人,得自己读文件、切字符串、比大小;两个人同时改同一个文件,谁覆盖谁说不清;文件坏了就是全丢。数据库要解决的就是这三件事——统一的查询方式、并发下的数据一致、集中的管理与备份。

PPT 第 3 页把这章的主题收拢成一句话:接下来讲的,就是”Web 后端开发”里的数据库。

什么是数据库(PPT 第 4-6 页)#

PPT 第 4-6 页连翻三页讲同一个问题:“什么是数据库?“,答案是三个概念。

DB:数据库#

数据库:DataBase(DB),是存储和管理数据的仓库。

“仓库”这两个字很准:数据不是随便扔进去,而是按固定的结构、分类存放,要的时候能按条件取出来。PPT 第 4-5 页配的几张图就是”仓库里装的数据”在页面上的样子——你在网页上看到的商品、列表、记录,其实都是数据库里的数据被查出来、渲染上去的。

商品列表
图:PPT 第 4 页——京东的商品列表:每件商品的图片、名称、价格、评价数、店铺名,都是数据库里查出来的数据渲染到页面上的

管理系统里的表格
图:PPT 第 5 页——客达天下后台的线索列表:一行就是一条记录(线索 ID、手机号、渠道来源、创建时间、归属人、状态……),这一张表格的背后就是一个数据库表

DBMS:数据库管理系统#

数据库管理系统:DataBase Management System(DBMS),操纵和管理数据库的大型软件。

数据存在磁盘上、还要能被并发访问,总得有个”管家”:DBMS 就是那个软件。我们所有的操作(建库、建表、插数据、查数据)都是由它执行的——MySQL、Oracle 这些名字,指的就是具体某一款 DBMS 产品。

SQL:操作关系型数据库的编程语言#

SQL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

三个概念串起来就是一条链:

概念一句话例子
DB(数据库)存储和管理数据的仓库名为 db01 的库
DBMS(数据库管理系统)操纵和管理数据库的大型软件MySQL、Oracle、SQL Server……
SQL(结构化查询语言)操作关系型数据库的编程语言,定义了一套统一标准show databases;、select * from emp;
Important

这三者的关系是:我们写 SQL → 交给 DBMS 去执行 → 数据落在 DB 里。所以换个 DBMS(MySQL 换成 Oracle),大部分 SQL 写法照样通用——因为 SQL 是”统一标准”(PPT 第 7 页也是这么强调的),各家产品只在细节上有方言差异。

数据库产品一览(PPT 第 7 页)#

PPT 第 7 页把市面上常见的数据库产品一字排开,每个后面都跟着一句定位:

产品定位(PPT 第 7 页原文)
Oracle收费的大型数据库,Oracle 公司的产品
SQL ServerMicroSoft 公司收费的中型数据库,C#、.net 等语言常使用
PostgreSQL开源免费的中小型数据库
DB2IBM 公司的大型收费数据库产品
SQLite嵌入式的微型数据库,如作为 Android 内置数据库
MariaDB开源免费的中小型数据库
MySQL开源免费的中小型数据库(Sun 公司收购了 MySQL,Oracle 收购 Sun 公司)

数据库流行度排名
图:PPT 第 7 页——DB-Engines 的数据库流行度排名前 10。PPT 上列的产品都能在这张榜里找到位置:Oracle、MySQL、SQL Server、PostgreSQL 占据前四,紧跟其后的是 Snowflake、Db2、SQLite、Microsoft Access、Databricks、MariaDB;榜单里 MySQL 的得分(1022.76)仅次于 Oracle

这门课为什么选 MySQL:免费开源、安装包小、在中小型互联网项目里用得最多,而且语法标准、换到别的产品上也能迁移。企业里的对接方式也最省事——MySQL 服务端装在服务器上,本机随便装个客户端就能连(这一节讲连接)。

MySQL 的安装(PPT 第 10-11、14 页)#

PPT 第 10 页是章节导航(“MySQL 概述 01:安装 / 数据模型”),第 11 页才是版本说明。

两个版本,课程用社区版#

版本收费技术支持(PPT 第 11 页原文)
商业版(MySQL Enterprise Edition)收费,可以试用 30 天官方提供技术支持
社区版(MySQL Community Server)免费MySQL 官方不提供技术支持

本课程采用的是 MySQL 的最新社区版(MySQL Community Server 8.0.34) 下载地址:https://dev.mysql.com/downloads/mysql/

本课程用的 MySQL 8.0.34 在资料包里有现成的解压版(02. MySQL安装/mysql-8.0.34-winx64.zip),按资料里的文档操作即可(PPT 第 14 页的步骤总结里也写了这一条)。

命令行连接成功
图:PPT 第 12 页——安装完成后第一件事是连上去:mysql -uroot -proot@1234 回车即进入 MySQL 交互界面,能看到 Server version: 8.0.34 MySQL Community Server - GPL 这一行(顺便注意上面那行 Warning:把密码直接写在命令里有安全隐患)

MySQL 连接:命令行怎么连(PPT 第 12 页)#

PPT 第 12 页给了连接语法:

mysql –u用户名 –p密码 [-h数据库服务器IP地址 -P端口号]
参数含义不写时
-u数据库用户名必须给(课程用 root)
-p密码(紧跟在 -p 后面;-p 后面不写东西则回车后单独提示输入)必须给
-h数据库服务器 IP 地址默认本机(localhost)
-P端口号(注意是大写 P)默认 3306

两种写法 PPT 里都演示了:-p密码 一行里带上密码(省事但会留 Warning),或者只写 -p 让程序再问一次。

输入密码回车
图:PPT 第 12 页——只写 mysql -uroot -p 时,回车后出现 Enter password:,输入的内容不回显(连星号都不显示);密码正确就出现 mysql> 提示符,可以开始敲 SQL 了

实测:中文数据导入时报 1366#

Warning

命令行客户端有一个很容易踩的坑(本机实测,MySQL 9.0.1):Windows 下命令行客户端的默认字符集不是 utf8mb4,直接导入课程里带中文的 SQL 脚本会报错——

ERROR 1366 (HY000): Incorrect string value: '\x80\x90\xE5\xBA\xB8' for column 'name' at row 1

那些 \x.. 就是中文被错误编码后的字节。处理办法:连接时显式指定字符集——

Terminal window
# 本机实测用的连接方式(-h/-P 指向实验实例,平时连本机可以省略这两个参数)
$ mysql --default-character-set=utf8mb4 -uroot -p -h127.0.0.1 -P3307 db01

加上 --default-character-set=utf8mb4 之后,同一份脚本导入正常,中文数据也能正常显示。这条经验要记住:以后凡是”通过命令行导入/导出含中文的数据”,先把字符集参数带上,否则会得到一堆乱码或 1366。

企业开发里怎么连(PPT 第 13 页)#

PPT 第 13 页回答的是”企业开发使用方式”。真实场景和我们本机练手的差别在于:MySQL 服务端不在自己电脑上,而是在机房/云上的数据库服务器里,本机只装一个客户端,通过网络连过去。

远程连接数据库服务器
图:PPT 第 13 页——连远程数据库就是给 -h 和 -P 填上值:mysql -h47.98.197.98 -P3306 -uroot -p,这句话的意思是”连 47.98.197.98 这台机器 3306 端口上的 MySQL”

命令行的用法在哪儿都一样,但企业里日常开发不需要每次敲命令——一般用图形化客户端工具(比如下一篇章要介绍的 DataGrip)来连数据库、写 SQL、看数据。PPT 第 14 页把这一段的总结压成两条:

步骤做什么
MySQL 安装根据文档操作
MySQL 连接mysql -hxxx -Pxxx -uxxx -pxxx

数据模型(PPT 第 15-17 页)#

PPT 第 15 页又翻了一次”安装 / 数据模型”这页导航,接下来讲本篇章最需要建立的一个印象:数据在数据库里长什么样。

关系型数据库:多张二维表#

关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

两个特点(PPT 第 16 页原文):

  1. 使用表存储数据,格式统一,便于维护。
  2. 使用 SQL 语言操作,标准统一,使用方便,可用于复杂查询。

所谓”二维表”,就是行列规整的一张表格——列是字段、行是一条记录:

员工表
图:PPT 第 16 页——一张”员工表”:表头是 编号 / 姓名 / 工作 / 部门 四个字段,下面每一行是一条员工记录;PPT 还配了一张”部门表”,两张表通过”部门”这一列关联起来,这就是”多张相互连接的二维表”

PPT 第 16 页还画了一张关系图:员工表与部门表之间有一条连线——员工表里的”部门”字段指向部门表里的部门,两张表就”连接”起来了。这种关联(外键)是多表设计与多表查询的基础,本章后面会专门讲。

数据库 → 表 → 记录:数据是怎么存的#

PPT 第 17 页给出整体结构,PPT 第 18 页的问答页把它压成了两句话:

层是什么对应到关系型数据库
数据库(Database)一个仓库一台 MySQL 服务器上可以建多个库(如 db01、db02)
表(Table)库里的二维表一个库里可以建多张表(员工表、部门表……)
记录(Record)表里的一行一张表里可以存多行数据

PPT 第 17 页那张结构图(PPT 里是用形状画的,这里按它的结构画成文字版):

客户端 ──( 写 SQL )──► 数据库服务器
├── DBMS(MySQL 就是 DBMS)
├── 数据库1
│ ├── 表1
│ └── 表2
└── 数据库2
├── 表1
└── 表2

这张图有两个要点:

  • 左半边是客户端(命令行窗口、DataGrip、或者以后我们写的 Java 程序),它只会”发 SQL”;
  • 右半边是数据库服务器,DBMS 收到 SQL 后在某个库的某张表上执行;表是在库里的,记录是在表里的——所以后面写 SQL 之前总要先把”用哪个库”定下来(use 库名)。

问答回顾(PPT 第 18 页)#

问题答案
什么是关系型数据库?由多张二维表组成的数据库(RDBMS)
数据是如何在数据库中存储的?数据库 → 表 → 数据(记录)

小结#

问题答案
数据为什么要存数据库而不是文件文件存数据不便维护、管理(查询、并发、备份都是问题);数据库是存储和管理数据的仓库,DBMS 提供统一的存取方式
DB / DBMS / SQL 分别是什么DB 是存储和管理数据的仓库;DBMS 是操纵和管理数据库的大型软件(MySQL/Oracle 都是 DBMS);SQL 是操作关系型数据库的编程语言,定义了一套统一标准
常见数据库产品Oracle(收费大型)、SQL Server(微软收费中型,C#/.net 常用)、PostgreSQL(开源免费中小型)、DB2(IBM 大型收费)、SQLite(嵌入式微型,Android 内置)、MariaDB(开源免费)、MySQL(开源免费中小型,本课程选用)
MySQL 两个版本的区别商业版收费、可试用 30 天、官方提供技术支持;社区版免费、官方不提供技术支持——课程用社区版 8.0.34
命令行连接语法mysql –u用户名 –p密码 [-h数据库服务器IP地址 -P端口号];-h/-P 不写就是本机 3306 端口;-P 是大写
中文导入报 1366 怎么办本机实测(MySQL 9.0.1):命令行客户端默认字符集不是 utf8mb4,导入中文数据报 ERROR 1366 (HY000): Incorrect string value: ...,加上 --default-character-set=utf8mb4 即可
企业开发的连接方式MySQL 装在数据库服务器上,本机用客户端(命令行或图形化工具)远程连:mysql -h47.98.197.98 -P3306 -uroot -p
关系型数据库是什么建立在关系模型基础上、由多张相互连接的二维表组成的数据库;特点是用表存数据、格式统一便于维护,用 SQL 操作、标准统一可用于复杂查询
数据是怎么存的数据库 → 表 → 记录;表在库里、记录在表里;客户端写 SQL → DBMS 在数据库服务器上执行

相关#

练习题#

这一篇偏概念(DB/DBMS/SQL 是什么、MySQL 怎么连、数据模型长什么样),所以用概念自测代替裸写代码题:先合上文章自己讲一遍,再点开对答案。

一、知识回顾(读完直接做下面的实践题)#

  1. 数据的落脚点:Dao 层(数据访问层)拿到的数据来自数据库;存进文件会不便维护、管理
  2. 数据库(DB):DataBase,是存储和管理数据的仓库;数据库管理系统(DBMS):DataBase Management System,操纵和管理数据库的大型软件(MySQL 就是一款 DBMS)
  3. SQL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准
  4. 常见数据库产品:Oracle(收费大型)、SQL Server(微软收费中型,C#/.net 常用)、PostgreSQL(开源免费中小型)、DB2(IBM 大型收费)、SQLite(嵌入式微型,Android 内置)、MariaDB(开源免费中小型)、MySQL(开源免费中小型,本课程选用)
  5. MySQL 两个版本:商业版(MySQL Enterprise Edition)收费、可试用 30 天、官方提供技术支持;社区版(MySQL Community Server)免费、官方不提供技术支持;课程用社区版 8.0.34,下载地址 https://dev.mysql.com/downloads/mysql/
  6. 连接语法:mysql –u用户名 –p密码 [-h数据库服务器IP地址 -P端口号];-h、-P 不写时默认本机 3306 端口;-P 是大写;只写 -p 则回车后单独提示 Enter password:,输入不回显
  7. 本机实测的字符集坑(MySQL 9.0.1):命令行客户端默认字符集不是 utf8mb4,导入带中文的脚本报 ERROR 1366 (HY000): Incorrect string value;连接时加上 --default-character-set=utf8mb4 即可
  8. 企业开发的连法:MySQL 装在数据库服务器(机房/云)上,本机用客户端远程连,例:mysql -h47.98.197.98 -P3306 -uroot -p;日常开发更多用图形化客户端工具
  9. 关系型数据库:建立在关系模型基础上、由多张相互连接的二维表组成的数据库;两个特点——用表存储数据,格式统一便于维护;用 SQL 语言操作,标准统一、使用方便、可用于复杂查询
  10. 数据怎么存:数据库 → 表 → 记录;表头是字段,一行是一条记录;客户端写 SQL → DBMS 在数据库服务器上执行

二、概念自测#

  • 2-1 用一句话分别说清 DB、DBMS、SQL,并讲出三者的关系 说完再补一句:为什么 PPT 要把”整个软件”叫 DBMS,而不能直接说”MySQL 就是数据库”?

    提示(先自己想,实在想不出再点开)

    一级 · 思路:三个概念分别对应”仓库""管家""跟管家说话的语言”,最后要串成一条因果链 二级 · 方法:翻回”什么是数据库”那节的三段原文,注意每段的主语 三级 · 骨架:DB 是__;DBMS 是__软件;SQL 是__语言;关系:我们写 __ → 交给 __ 执行 → 数据落在 __ 里

    参考答案(做完再点开)

    ① DB(DataBase):存储和管理数据的仓库(数据真正存放的地方);② DBMS(DataBase Management System):操纵和管理数据库的大型软件,负责把 SQL 落到磁盘上;③ SQL(Structured Query Language):操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准。 关系:我们写 SQL → 交给 DBMS 执行 → 数据存在 DB 里。 不能直接说”MySQL 就是数据库”,是因为 MySQL 严格来说是DBMS(管理数据库的软件):一台 MySQL 上可以建很多个数据库(db01、db02……)。把软件和它管理的对象混为一谈,后面讲”一个服务器上有多个库”时会绕不过弯来。

  • 2-2 为什么要用数据库,而不是把数据写进文件? 结合三层架构里 Dao 层的职责回答,至少说出三点”文件存数据”的麻烦。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:从”怎么查""好几个人一起改""数据别丢了”三个角度想 二级 · 方法:对应 PPT 第 2 页 Dao 旁边那句”文件:不便维护、管理”,再看数据库解决的三个问题 三级 · 骨架:① 查询:文件要__,数据库只需__;② 并发:文件会__,数据库有__;③ 管理:文件__,数据库可以__

    参考答案(做完再点开)

    Dao 层负责”数据访问”——数据放哪儿,决定了这一层好不好写。文件的问题:① 查询麻烦:想筛”薪资 8000 以上、按入职时间排序”,得自己读文件、解析字符串、写排序,而数据库一条 SQL(select ... where ... order by ...)就完了;② 并发危险:多人同时改同一个文件,后写的会覆盖先写的,数据库有并发控制和事务保证;③ 不好管理:文件散落各处、没有统一结构,改动字段要全量改代码,数据库有明确的表结构(字段、类型、约束),还能集中备份、权限控制。 一句话:文件”不便维护、管理”,而数据库是专门为”存和管理数据”造的仓库。

  • 2-3 mysql -uroot -p123456 和 mysql -uroot -p 有什么区别?-h、-P 不写时连的是哪儿? 再顺带回答:为什么 -P 必须大写?

    提示(先自己想,实在想不出再点开)

    一级 · 思路:-p 后面”跟了东西”和”没跟东西”,程序的行为不一样;再看默认值 二级 · 方法:翻回连接语法那节的两张 PPT 截图,注意第二张里多了一行提示 三级 · 骨架:-p123456 = 密码__,会留一个 __ 警告;-p = 回车后出现 __,输入 __;默认连 __:__;大写 -P 是因为小写 __ 已被占用

    参考答案(做完再点开)

    mysql -uroot -p123456 是把密码直接写在命令行里,一次回车就进去了,但 MySQL 会警告 Using a password on the command line interface can be insecure(密码会留在命令历史里,不安全);mysql -uroot -p 是只声明”我要输密码”,回车后出现 Enter password:,此时输入的密码不回显,更安全。 -h 不写时默认连本机(localhost),-P 不写时默认连 3306 端口。 -P 必须大写,是因为小写 -p 已经被”密码”占用了——MySQL 的参数区分大小写。

  • 2-4 为什么导入课程脚本时中文会报 1366,怎么解决? 请把处理办法写成一条”以后每次都照做”的操作习惯。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:报错里那串 \x80\x90\xE5\xBA\xB8 是”中文被按错误的编码处理”留下的痕迹,说明两边的字符集没对齐 二级 · 方法:报错原文是 Incorrect string value ... for column 'name';连接命令里有一个可以指定客户端字符集的参数 三级 · 骨架:mysql __ -uroot -p 库名(把客户端字符集设成 utf8mb4)

    参考答案(做完再点开)

    原因:本机实测(MySQL 9.0.1),Windows 命令行客户端的默认字符集不是 utf8mb4,中文数据在”客户端 → 服务器”这条路上被按错误编码解释,于是服务器报

    ERROR 1366 (HY000): Incorrect string value: '\x80\x90\xE5\xBA\xB8' for column 'name' at row 1

    解决:连接时显式指定客户端字符集——

    Terminal window
    $ mysql --default-character-set=utf8mb4 -uroot -p 库名

    操作习惯:凡是命令行下导入/导出带中文的数据,先把 --default-character-set=utf8mb4 带上;如果表里已经存进了乱码数据,光改连接参数救不回来,得清掉重导。

  • 2-5 用”数据库 → 表 → 记录”描述一下你脑子里的一台 MySQL 服务器 要求说清:服务器上可以有几个库、一个库里可以有几张表、库里没被 use 选中时 SQL 会执行在哪。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:把 PPT 第 17 页那张结构图用文字复述一遍,从客户端出发 二级 · 方法:结构图的右半边是 DBMS + 多个库 + 每库多张表;-h -P -u -p 连上的是”服务器”,不是”某个库” 三级 · 骨架:一台服务器 = 一个 __ + 多个 __;一个库 = 多张 __;一张表 = 多行 __;不指定库时……(想想连接命令最后那个库名参数是干什么的)

    参考答案(做完再点开)

    一台 MySQL 服务器上跑着一个 DBMS,里面可以建多个数据库(db01、db02……以及 mysql、sys 这些系统库);每个库里可以建多张表(员工表、部门表……);每张表里存着多行记录,表头是字段。 注意:mysql -uroot -p 连上的是服务器(此时还没有”当前库”);要操作某张表,得先 use 库名 把”当前数据库”切成那个库(连接命令末尾也可以直接跟一个库名,等于连上就 use 它)。这就是下一篇要讲的 DDL-数据库那几条语句。

三、综合题#

  • 3-1 给一台陌生的机器做”数据库环境体检” 拿到一台装了 MySQL 的机器(没有文档),请按下面的步骤把环境摸清楚,并把每一步的结果记下来:

    1. 确认有客户端:找到命令行的 MySQL 客户端程序,把它连上服务器(用户名 root,密码自己输,不要写在命令里);
    2. 偷看服务器版本:连接成功时界面会打出一行 Server version: ...,把版本号抄下来,并回答这是商业版还是社区版;
    3. 模拟踩坑:你在这台机器上导入一份带中文的 SQL 脚本,报错信息是
      ERROR 1366 (HY000): Incorrect string value: '\x80\x90\xE5\xBA\xB8' for column 'name' at row 1
      请写出原因和处理办法,并给出改好后的完整连接命令;
    4. 看仓库:连上之后,先列出这台服务器上有哪些数据库;
    5. 分清系统库和业务库:information_schema、mysql、performance_schema、sys 是随 MySQL 一起出现的系统库,其余是业务库;把两条清单分别抄下来;
    6. 说清层次:用”数据库 → 表 → 记录”三层,说明这台服务器上每一层各有多少东西(库有几层含义、表要在库里才能建、记录要在表里才能存);
    7. 画结构:照着 PPT 第 17 页,把”客户端 - 数据库服务器(DBMS + 多个库 + 每库多张表)“的结构用文字画一遍,并标出”刚才那条连接命令”和”刚才那条列库语句”分别发生在哪一层。

    涉及知识点

    知识点在这里的应用
    DB / DBMS / SQL列出的是库(DB),执行命令的是 DBMS(MySQL),你敲的是 SQL
    MySQL 版本连接时打印的 Server version 就是版本号(社区版会带 Community Server - GPL)
    字符集坑1366 报错靠 --default-character-set=utf8mb4 解决
    连接语法mysql -u用户名 -p [-h IP -P 端口],-p 后面不写密码更安全
    数据模型数据库 → 表 → 记录;客户端 - DBMS - 数据库服务器
    提示(先自己想,实在想不出再点开)

    一级 · 思路:整条链路是”连上去(顺带看清版本)→ 解决字符集问题 → 列出库 → 分辨系统库/业务库 → 说清层次”;第 6、7 步是把结构图用自己的话复述 二级 · 方法:连接用 mysql 命令;列库用 show databases;看当前库用 select database();字符集参数是 --default-character-set=utf8mb4 三级 · 骨架:mysql __ -uroot -p → __ databases; → use __; select __();

    参考答案(做完再点开)
    1. 连接命令(不把密码写在命令里):
      Terminal window
      $ mysql --default-character-set=utf8mb4 -uroot -p
      Enter password: ********
    2. 成功界面上能看到版本相关信息(PPT 第 12 页截图的样子):
      Your MySQL connection id is 156
      Server version: 8.0.34 MySQL Community Server - GPL
      Community Server - GPL 说明这是社区版(商业版会显示 Enterprise)。
    3. 1366 的原因是客户端字符集不是 utf8mb4(Windows 命令行客户端的默认设置),中文在路上被按错误编码解释;处理办法是连接时显式指定:
      Terminal window
      $ mysql --default-character-set=utf8mb4 -uroot -p
      完整命令就是把 --default-character-set=utf8mb4 加在 mysql 后面(本机实测:不加就报 1366,加了就正常)。
    4. 列出所有数据库:
      mysql> show databases;
      +--------------------+
      | Database |
      +--------------------+
      | db01 |
      | information_schema |
      | mysql |
      | performance_schema |
      | sys |
      +--------------------+
      (本机实测(MySQL 9.0.1)的输出;业务库 db01 是练习用的库,其余四个是系统库)
    5. 系统库 4 个:information_schema(元数据)、mysql(用户与权限)、performance_schema(性能数据)、sys(性能视图);业务库是剩下的那些(本例只有 db01)。系统库是 MySQL 自带的、平时不要动。
    6. 三层对应关系:库是”仓库”,一台服务器上可以有多个;表必须建在某个库里面(use 库名 之后建的表就属于它);记录必须存在表里面(一行对应一条数据,表头是字段)。所以”库 → 表 → 记录”是一层套一层的包含关系。
    7. 文字版结构:
      客户端(命令行 / 图形化工具 / Java 程序)
      │ 写 SQL(第 4 步的 show databases; 就从这里发出)
      ▼
      数据库服务器(连接命令 -h/-P 指向的那台机器)
      ├── DBMS(MySQL) ← 收到 SQL 后在这里执行
      ├── 数据库1(如 db01)
      │ ├── 表1
      │ └── 表2
      └── 数据库2
      连接命令发生在客户端 → 数据库服务器这一段(它只负责”把门打开”);show databases 是客户端发出、DBMS 执行的一条 SQL,结果是从 DBMS 的元数据里读出来的。

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# AI绘图1# AI辅助开发2# Ajax7# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc4# CSS10# DeepSeek6# deepseek2# DELETE1# Docker5# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML9# HTTP10# ImageManager1# Java23# java13# JavaScript11# JavaWeb113# JDBC7# JSON2# JUnit1# LangChain25# Linux4# Logback1# Maven17# Muse Spark1# Mybatis1# MyBatis18# MySQL45# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python70# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot37# SpringMVC5# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue20# Waline3# Web3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端52# 动态1# 动漫1# 包1# 单词2# 博客8# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 后端48# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 实战4# 对象1# 导航栏1# 工具2# 布局2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程2# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常95# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试3# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 表单1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部署11# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 项目实战11# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]