mysql数据库的基本操作-数据库

MySQL 基本操作——数据库

本文档只讲 针对“数据库”本身的基本操作:查看、创建、选择、修改、删除数据库,以及字符集、命名等。每一步都配有详细说明和多个示例,适合零基础新手跟着做。


目录

  1. “基本操作-数据库”指什么
  2. 操作前:如何连接 MySQL
  3. 查看所有数据库
  4. 创建数据库
  5. 选择(使用)数据库
  6. 查看当前使用的是哪个数据库
  7. 查看数据库的创建信息
  8. 修改数据库
  9. 删除数据库
  10. 数据库命名规则与建议
  11. 字符集与排序规则(入门)
  12. 常见错误与注意点
  13. 完整示例:从零建一个练习库
  14. 命令速查表

1. “基本操作-数据库”指什么

在 MySQL 里,数据的组织是分层的:

数据库(Database)  ← 本文只讲这一层
    └── 表(Table)
          └── 行、列(数据)

“基本操作-数据库” 指的是对 数据库这一层 的增删改查,不涉及表里的数据,包括:

  • 查看:当前服务器上有哪些数据库
  • 创建:新建一个数据库
  • 选择:指定“当前要操作的数据库”(后续建表、查表都在这个库里)
  • 修改:改数据库的字符集、排序规则等
  • 删除:删除整个数据库(慎用)

这些操作是使用 MySQL 的第一步:先有库,再在库里建表、插数据。


2. 操作前:如何连接 MySQL

所有“数据库”操作都要在 已经连上 MySQL 的前提下进行。

2.1 在命令行连接

打开 CMDPowerShell,输入(把密码换成你自己的):

mysql -u root -p

回车后输入 root 密码,看到提示符变成 mysql> 就表示已经连接成功。

示例(连接成功):

C:UsersAdministrator> mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.
...
mysql>

2.2 连接时直接指定数据库(可选)

若已知要用的数据库名,可以在登录时直接“进入”该库:

mysql -u root -p 数据库名

例如:

mysql -u root -p school

输入密码后,会连上 MySQL,并且当前数据库已经是 school,无需再执行 USE school;

示例:

mysql -u root -p school
Enter password: ****
...
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| school     |
+------------+

3. 查看所有数据库

3.1 基本命令:SHOW DATABASES

mysql> 下输入:

SHOW DATABASES;

注意: 末尾的 分号 ; 表示一条 SQL 结束,必须写上。

示例输出:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| school             |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

上面会列出当前 MySQL 服务器上所有数据库的名字

3.2 输出结果说明

  • information_schema:存放数据库、表、列等“元信息”,系统用,不要删改。
  • mysql:存放用户、权限等,系统用,不要删改。
  • performance_schema:性能相关数据,系统用。
  • sys:系统视图,方便诊断,系统用。
  • school:可能是你或教程里自己建的库。

新手记住:带 schemamysql、sys 的一般是系统库,只操作你自己建的库(如 schooltest)即可。

3.3 只查看“非系统”的数据库(了解)

若想排除系统库,可以用(了解即可,不必强记):

SHOW DATABASES WHERE `Database` NOT IN ('information_schema','mysql','performance_schema','sys');

或用 LIKE 按名字模糊匹配:

SHOW DATABASES LIKE 's%';

表示只显示名字以 s 开头的数据库,例如 schoolsys


4. 创建数据库

4.1 最简写法:CREATE DATABASE 库名

语法:

CREATE DATABASE 数据库名;

示例:创建一个名叫 school 的数据库

CREATE DATABASE school;

示例输出:

Query OK, 1 row affected (0.02 sec)

表示创建成功。再用 SHOW DATABASES; 就能看到 school

4.2 避免“库已存在”报错:IF NOT EXISTS

如果 school 已经存在,再执行一次 CREATE DATABASE school; 会报错:

ERROR 1007 (HY000): Can't create database 'school'; database exists

可以加上 IF NOT EXISTS:只有在该库不存在时才创建,存在就跳过不报错。

CREATE DATABASE IF NOT EXISTS school;

示例:

  • 第一次执行:会创建 school
  • 第二次再执行:不会报错,也不会重复创建。

适合写在脚本里,重复执行也不会出错。

4.3 指定字符集和排序规则(推荐)

为了正确存中文、emoji 等,建议创建时就指定 utf8mb4

CREATE DATABASE 数据库名
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

示例:

CREATE DATABASE school
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;
  • DEFAULT CHARACTER SET utf8mb4:该库下表的默认字符集为 utf8mb4(支持中文、emoji)。
  • COLLATE utf8mb4_unicode_ci:默认排序/比较规则,ci 表示比较时不区分大小写。

若不做特殊要求,建库时用上面这一句即可。

4.4 一次创建多个数据库(少见)

MySQL 允许一条语句创建多个库(不常用,了解即可):

CREATE DATABASE db1;
CREATE DATABASE db2;
CREATE DATABASE db3;

不能写成 CREATE DATABASE db1, db2, db3;,必须分开写或多条语句。

4.5 完整示例汇总

-- 最简
CREATE DATABASE mydb;

-- 推荐:带字符集 + 不存在才创建
CREATE DATABASE IF NOT EXISTS mydb
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

5. 选择(使用)数据库

创建好数据库后,建表、查表、插数据 等操作都要在“当前选中的数据库”里进行。选中某个库的动作叫 “使用”或“选择”数据库

5.1 命令:USE 数据库名

语法:

USE 数据库名;

示例:选择 school 数据库

USE school;

示例输出:

Database changed

表示之后的操作默认都在 school 里进行,直到你再次 USE 别的库或断开连接。

5.2 选择后会发生什么

  • 之后执行的 CREATE TABLE 会在这个库里建表。
  • *SELECT FROM 表名** 会先在这个库里找 表名
  • 若表名在多个库里存在,不写库名时用当前库里的表。

示例:

USE school;
CREATE TABLE students (id INT, name VARCHAR(50));   -- 表建在 school 里
SELECT * FROM students;                             -- 查的是 school.students

5.3 不写 USE,直接带库名(可选)

也可以不执行 USE,在写表名时带上库名

SELECT * FROM school.students;

这里 库名.表名 叫“完全限定名”。但习惯上我们会先 USE school;,再写 SELECT * FROM students;,更简洁。

5.4 若库不存在会怎样

如果写错了库名或库还没建:

USE not_exist_db;

会报错:

ERROR 1049 (42000): Unknown database 'not_exist_db'

解决:先用 SHOW DATABASES; 确认库名,再 USE 正确库名;


6. 查看当前使用的是哪个数据库

6.1 命令:SELECT DATABASE();

mysql> 下执行:

SELECT DATABASE();

示例输出(当前已选择 school):

+------------+
| DATABASE() |
+------------+
| school     |
+------------+
1 row in set (0.00 sec)

若还没有执行过任何 USE,或连接时没指定库,可能显示:

+------------+
| DATABASE() |
+------------+
| NULL       |
+------------+

NULL 表示当前没有选中任何数据库。此时若执行 CREATE TABLE xxx (...); 会报错:没有选择数据库。

6.2 使用场景

  • 不确定当前在哪个库时,先 SELECT DATABASE(); 确认。
  • 在脚本或教程里,用它可以“打印当前库”,方便排查问题。

7. 查看数据库的创建信息

7.1 命令:SHOW CREATE DATABASE 库名

语法:

SHOW CREATE DATABASE 数据库名;

会显示创建该库时用的完整 SQL(包括字符集、排序规则)。

示例:

SHOW CREATE DATABASE school;

示例输出:

+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| school   | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4  |
|          | COLLATE utf8mb4_unicode_ci */                                    |
+----------+----------------------------------------------------------------+

可以看到该库的 DEFAULT CHARACTER SETCOLLATE,便于对照或重建库。


8. 修改数据库

创建后,一般很少改数据库本身,但可以改默认字符集排序规则

8.1 命令:ALTER DATABASE

语法:

ALTER DATABASE 数据库名
  [选项1] [选项2] ...;

常用选项:

  • CHARACTER SET 字符集名
  • COLLATE 排序规则名

8.2 示例:修改默认字符集为 utf8mb4

ALTER DATABASE school
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

说明:

  • 这只影响该库之后新建的表的默认字符集。
  • 已经存在的表不会自动改,需要单独对表执行 ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4; 等(表操作会在别的文档里讲)。

8.3 只改排序规则

ALTER DATABASE school COLLATE utf8mb4_general_ci;

9. 删除数据库

9.1 命令:DROP DATABASE 库名

语法:

DROP DATABASE 数据库名;

示例:删除名为 test_db 的数据库

DROP DATABASE test_db;

示例输出:

Query OK, 0 rows affected (0.05 sec)

表示删除成功。该库里的所有表和所有数据都会一起被删掉,且无法恢复

9.2 避免“库不存在”报错:IF EXISTS

若库本来就不存在,直接 DROP DATABASE xxx; 会报错:

ERROR 1008 (HY000): Can't drop database 'xxx'; database doesn't exist

可以加上 IF EXISTS:只有存在才删除,不存在就跳过不报错。

DROP DATABASE IF EXISTS test_db;

适合写在脚本里。

9.3 重要提醒

  • 不要对系统库执行 DROP DATABASE(如 mysqlinformation_schema 等),可能导致 MySQL 无法正常使用。
  • 删除前务必确认库名,建议先用 SHOW DATABASES;USE 库名; 确认一次。
  • 若当前正在使用该库(刚执行过 USE 该库),也可以删除;删除后当前“选中的库”会变成未选中(SELECT DATABASE(); 为 NULL)。

9.4 示例:安全删除

-- 先确认
SHOW DATABASES;
-- 再删除(存在才删)
DROP DATABASE IF EXISTS old_backup_db;

10. 数据库命名规则与建议

10.1 合法字符与规则

  • 可由字母、数字、下划线 _ 组成。
  • 不能是纯数字,不能包含空格、横线 -、点 . 等(除非用反引号包起来,不推荐)。
  • 长度限制:MySQL 库名长度受限于目录名长度(通常足够用)。

10.2 推荐写法

  • 小写英文:如 schooluser_system
  • 见名知意order_dbblogshop
  • 多个词用下划线student_manageproduct_db

10.3 不推荐

  • 用中文或拼音(兼容性、可读性差):如 学生库xuesheng(除非团队约定)。
  • 用横线:my-db 容易和减号混淆。
  • 过长或过短:太长难写,太短不知含义。

10.4 若必须用特殊字符(不推荐)

可以用反引号把名字包起来(仅作了解):

CREATE DATABASE `my-db`;
USE `my-db`;

11. 字符集与排序规则(入门)

11.1 为什么要在“数据库”这层设字符集

  • 字符集决定能存哪些字符(如中文、emoji)。
  • 建库时指定 DEFAULT CHARACTER SET,以后在该库里建表时,若不单独指定,表会继承库的字符集,省事且统一。

11.2 常用字符集

字符集 说明
utf8mb4 推荐,完整 UTF-8,支持中文、emoji
utf8 MySQL 里实际只支持 3 字节,不推荐
gbk 中文环境常见,但不如 utf8mb4 通用

建议:统一用 utf8mb4

11.3 排序规则(COLLATE)简单理解

  • 决定字符串怎么比较、怎么排序(如 ORDER BY 名字)。
  • utf8mb4_unicode_ci:按 Unicode 规则,ci 表示不区分大小写。
  • utf8mb4_general_ci:稍快但略粗糙,一般用 unicode_ci 即可。

建库时写:

CREATE DATABASE mydb
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

就足够应对绝大多数场景。


12. 常见错误与注意点

12.1 忘记写分号

SHOW DATABASES

MySQL 会认为语句没结束,提示符变成 ->,需要补上 ; 并回车。

正确:

SHOW DATABASES;

12.2 库名、表名大小写(Windows vs Linux)

  • Windows 下库名、表名通常不区分大小写
  • Linux 下可能区分,取决于配置。
    建议:全程小写,避免换系统后出问题。

12.3 未选择数据库就建表

若没执行 USE 某库; 就执行:

CREATE TABLE students (id INT);

会报错:

ERROR 1046 (3D000): No database selected

解决:先 USE 数据库名; 再建表。

12.4 删除错了库

没有“回收站”,DROP DATABASE 后无法恢复。只能靠备份恢复。所以删除前务必确认库名,生产环境更要谨慎。


13. 完整示例:从零建一个练习库

下面把“查看 → 创建 → 选择 → 确认 → 删除”串起来做一遍,你可以在自己电脑上跟着执行(删除那步可以换成不重要的库名练习)。

-- 1. 查看当前有哪些数据库
SHOW DATABASES;

-- 2. 创建练习库(带字符集,不存在才创建)
CREATE DATABASE IF NOT EXISTS practice_db
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

-- 3. 再次查看,确认 practice_db 已出现
SHOW DATABASES;

-- 4. 选择该库
USE practice_db;

-- 5. 确认当前库
SELECT DATABASE();

-- 6. 查看创建信息
SHOW CREATE DATABASE practice_db;

-- 7. (可选)建一张简单表,确认库可用
CREATE TABLE demo (id INT, name VARCHAR(20));
SHOW TABLES;

-- 8. 若确定不再需要,可删除(慎用)
-- 先切到别的库再删,避免“当前库”状态
USE mysql;
DROP DATABASE IF EXISTS practice_db;
SHOW DATABASES;

建议:保留 practice_db 用来练手,只在不用的库上练习 DROP DATABASE


14. 命令速查表

操作 命令
查看所有数据库 SHOW DATABASES;
创建数据库 CREATE DATABASE 库名;
创建(不存在才创建) CREATE DATABASE IF NOT EXISTS 库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
选择数据库 USE 库名;
查看当前库 SELECT DATABASE();
查看库的创建信息 SHOW CREATE DATABASE 库名;
修改库(字符集) ALTER DATABASE 库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
删除数据库 DROP DATABASE 库名;
删除(存在才删) DROP DATABASE IF EXISTS 库名;

把以上“数据库”层面的操作练熟后,再学的创建与增删改查就会很顺。建议在 MySQL 里把 13 节的完整示例跑一遍,并反复用 SHOW DATABASES;USESELECT DATABASE(); 加深印象。

发表评论