📄 一句话概括
SHOW DATABASES 看【现在有哪些库】,USE 说【接下来我就在这个库里干活】——先看清地图,再选位置。
📝 本节和前面几节的关系
3-3 学会造库拆库;本节是【库级】的收尾两小招:查看与选择。学完它,下一节就下到【表】这一层。SQLite 用户照旧:本节命令在 MySQL 里用,SQLite 没有库层所以没有它们。
一、SHOW DATABASES:看库存清单
SHOW DATABASES;
MySQL 里的输出大概长这样:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| school |
| sys |
+--------------------+
- 你自己造的(school)和系统自带的(information_schema、mysql、sys)混排在一起
- 系统库别动——那是 DBMS 的账本,动了它管理员系统自己就瘫了
二、USE:选一个库开工
库里会有很多表,操作表之前要先声明【我在哪个库里干活】:
USE school;
- USE 之后,
CREATE TABLE students ...、SELECT * FROM students全都默认对准 school 库 - 不选库就建表:MySQL 直接报错【No database selected】——这是新手高频错误第一名
- 切换也用 USE:
USE other_db;一句就搬家
比喻:DBMS 是一栋楼,库是房间;SHOW 是看楼层索引牌,USE 是推开某扇房门——进错房间搬东西,全乱套。
三、两条命令是【环境操作】不是【数据操作】
注意这对命令的定位:
- 它们不碰任何数据——只看清单、换房间
- 所以 1-6 的四大家族里它们通常归在【工具/辅助命令】,面试考【SQL 分类】时和 CREATE 一起算作数据库级操作
四、动手 Demo:SQLite 的对应世界
SQLite 没有【库】这一层(3-3 说过:一个文件一个库),也就没有 SHOW DATABASES 和 USE。但它有【看清单】的等价物——看当前库里的表:
-- 准备块
CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, class INTEGER, score INTEGER);
INSERT INTO students VALUES (1, '张三', 1, 85);
INSERT INTO students VALUES (2, '李四', 1, 92);
-- 看当前库里有哪些表(SQLite 的 SHOW TABLES 等价物)
SELECT name FROM sqlite_master WHERE type = 'table';
输出:
name
students
看到什么算成功:清单里看到 students——MySQL 里 SHOW DATABASES 看库清单、USE 选库;SQLite 里查 sqlite_master 看表清单,两套世界做的是同一件事:动手前先看清家里有什么。
五、30 秒实验
在在线运行器里把 sqlite_master 那句跑一遍,再建一张 classes 表后重跑——清单多了一行。清单会随你的操作实时变化,这是【账本】的感觉:你的每一步,DBMS 都记着。
六、常见误区
- "USE 是把数据加载进来" —— 不是搬数据,只是声明默认位置;数据从来都在库里,USE 只是让你后续语句别写全名。
- "系统库里的表也可以拿来做练习" —— 别。系统库是 DBMS 的内脏,改坏一次整个管理员系统罢工。
- "SQLite 用户可以跳过本节" —— 命令跳得过,意识跳不过:【先看清有什么、再选好位置动手】是所有 DBMS 通用的习惯。
自测三问(点开对答案)
1. SHOW DATABASES 和 USE 分别干什么? **看库清单;声明后续语句的默认库**。 2. 不 USE 就 CREATE TABLE 会怎样(MySQL)? **报错 No database selected**——新手错误第一名。 3. SQLite 里看【有哪些表】的等价办法? **查 `sqlite_master`**(`SELECT name FROM sqlite_master WHERE type = 'table'`)。- ☐ 下一节(3-5 CREATE TABLE、DROP TABLE-创建和删除表)
相关笔记
- CREATE DATABASE、DROP DATABASE-创建和删除数据库 —— 上一节:库造好了,本节看清单、选位置
- 🗄️ 数据库基础 · 索引 —— 全课路线图