---
title: 数据库学习笔记
published: 2025-01-08
tags: [学习笔记, 笔记]
category: 学习笔记
draft: false
---

### MySQL和MariaDB常用命令

| 数据库          | 操作                | 命令                                                      | 描述                                   |
|-----------------|---------------------|-----------------------------------------------------------|----------------------------------------|
| **MySQL**       | 更新软件包列表       | `sudo apt update`                                        | 更新可用软件包列表                      |
|                 | 安装 MySQL 服务器    | `sudo apt install mysql-server`                           | 安装 MySQL 服务器                       |
|                 | 启动 MySQL 服务      | `sudo systemctl start mysql`                              | 启动 MySQL 服务                         |
|                 | 检查 MySQL 服务状态  | `sudo systemctl status mysql`                             | 检查 MySQL 服务的运行状态               |
|                 | 运行安全安装脚本    | `sudo mysql_secure_installation`                           | 配置 MySQL 安全选项                     |
|                 | 登录 MySQL          | `sudo mysql -u root -p`                                   | 登录 MySQL，输入 root 用户密码          |
| **MariaDB**     | 更新软件包列表       | `sudo apt update`                                        | 更新可用软件包列表                      |
|                 | 安装 MariaDB 服务器 | `sudo apt install mariadb-server`                         | 安装 MariaDB 服务器                     |
|                 | 启动 MariaDB 服务   | `sudo systemctl start mariadb`                            | 启动 MariaDB 服务                       |
|                 | 检查 MariaDB 服务状态 | `sudo systemctl status mariadb`                           | 检查 MariaDB 服务的运行状态             |
|                 | 运行安全安装脚本    | `sudo mysql_secure_installation`                           | 配置 MariaDB 安全选项                   |
|                 | 登录 MariaDB        | `sudo mysql -u root -p`                                   | 登录 MariaDB，输入 root 用户密码       |




| 功能分类    | 命令                                                      | 描述                                                     |
|-------------|------------------------------------------------------------|----------------------------------------------------------|
| **登录数据库** | `mysql -u 用户名 -p`                                        | 登录 MySQL，使用指定的用户名，`-p` 会提示输入密码         |
| **显示数据库** | `SHOW DATABASES;`                                         | 列出当前 MySQL 服务器中的所有数据库                       |
| **使用数据库** | `USE 数据库名;`                                             | 切换到指定数据库                                          |
| **创建数据库** | `CREATE DATABASE 数据库名;`                                  | 创建一个新的数据库                                        |
| **删除数据库** | `DROP DATABASE 数据库名;`                                    | 删除指定数据库                                            |
| **显示当前数据库** | `SELECT DATABASE();`                                  | 显示当前正在使用的数据库                                  |
| **显示数据库表** | `SHOW TABLES;`                                           | 列出当前数据库中的所有表                                  |
| **查看表结构** | `DESCRIBE 表名;`                                             | 查看表的结构 (字段、类型、主键等)                         |
| **创建表**    | `CREATE TABLE 表名 (字段1 数据类型, 字段2 数据类型, ...);`      | 创建一张表，指定列和数据类型                              |
| **删除表**    | `DROP TABLE 表名;`                                           | 删除指定的表                                              |
| **插入数据**  | `INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);` | 插入一条数据                                              |
| **查询数据**  | `SELECT 字段1, 字段2 FROM 表名 WHERE 条件;`                   | 查询表中的数据，可以使用条件过滤                          |
| **更新数据**  | `UPDATE 表名 SET 字段1=值1 WHERE 条件;`                       | 更新指定的表数据                                          |
| **删除数据**  | `DELETE FROM 表名 WHERE 条件;`                                | 删除符合条件的数据                                        |
| **显示创建表语句** | `SHOW CREATE TABLE 表名;`                               | 显示指定表的创建语句                                      |
| **清空表数据** | `TRUNCATE TABLE 表名;`                                      | 清空表中的所有数据，但保留表结构                          |
| **查看索引**  | `SHOW INDEX FROM 表名;`                                       | 查看表中所有的索引                                        |
| **创建索引**  | `CREATE INDEX 索引名 ON 表名 (字段);`                         | 创建索引，提升查询速度                                    |
| **删除索引**  | `DROP INDEX 索引名 ON 表名;`                                  | 删除指定的索引                                            |
| **备份数据库** | `mysqldump -u 用户名 -p 数据库名 > 备份文件.sql`               | 备份数据库，将数据库内容导出为 `.sql` 文件                |
| **恢复数据库** | `mysql -u 用户名 -p 数据库名 < 备份文件.sql`                  | 恢复数据库，将 `.sql` 文件导入指定数据库                  |
| **创建用户**  | `CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';`       | 创建一个新的 MySQL 用户                                   |
| **删除用户**  | `DROP USER '用户名'@'localhost';`                             | 删除 MySQL 用户                                           |
| **授权权限**  | `GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'localhost';`   | 授予用户对某个数据库的所有权限                           |
| **显示用户权限** | `SHOW GRANTS FOR '用户名'@'localhost';`                    | 显示指定用户的权限                                        |
| **撤销权限**  | `REVOKE ALL PRIVILEGES ON 数据库名.* FROM '用户名'@'localhost';` | 撤销指定用户对某个数据库的权限                            |
| **刷新权限**  | `FLUSH PRIVILEGES;`                                          | 刷新 MySQL 权限表，使权限更改生效                         |
| **查看服务器状态** | `SHOW STATUS;`                                           | 查看 MySQL 服务器的状态和性能指标                         |
| **查看数据库引擎** | `SHOW ENGINES;`                                          | 显示 MySQL 支持的所有存储引擎                             |
| **查看连接信息** | `SHOW PROCESSLIST;`                                        | 显示当前 MySQL 的所有连接信息                             |


- 大多数 SQL 语句都以分号 `;` 结尾。
- 如果 MySQL 的权限系统发生变动（如添加或撤销用户权限），建议运行 `FLUSH PRIVILEGES;` 以刷新权限。


### SQLite常用命令

| 功能分类        | 命令                                                            | 描述                                               |
|-----------------|-----------------------------------------------------------------|----------------------------------------------------|
| **安装 SQLite** | `sudo apt install sqlite3`                                       | 在 Linux（Ubuntu）中安装 SQLite                   |
| **连接 SQLite** | `sqlite3 数据库名.db`                                            | 连接到 SQLite 数据库（如果不存在则创建）           |
| **退出 SQLite** | `.quit`                                                          | 退出 SQLite 命令行工具                             |
| **显示数据库表** | `.tables`                                                       | 显示当前数据库中的所有表                           |
| **查看表结构**   | `.schema 表名`                                                   | 显示指定表的创建语句                               |
| **创建表**      | `CREATE TABLE 表名 (字段1 数据类型, 字段2 数据类型, ...);`        | 创建一张表，指定字段和数据类型                     |
| **插入数据**    | `INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);`   | 插入一条数据                                       |
| **查询数据**    | `SELECT 字段1, 字段2 FROM 表名 WHERE 条件;`                      | 查询表中的数据，可以使用条件过滤                   |
| **更新数据**    | `UPDATE 表名 SET 字段1=值1 WHERE 条件;`                          | 更新指定的表数据                                   |
| **删除数据**    | `DELETE FROM 表名 WHERE 条件;`                                   | 删除符合条件的数据                                 |
| **删除表**      | `DROP TABLE 表名;`                                               | 删除指定的表                                       |
| **查看索引**    | `PRAGMA index_list(表名);`                                       | 查看指定表的索引                                   |
| **创建索引**    | `CREATE INDEX 索引名 ON 表名 (字段);`                            | 创建索引，提升查询速度                             |
| **删除索引**    | `DROP INDEX 索引名;`                                             | 删除指定的索引                                     |
| **导出数据库**  | 先`.output 文件名.sql` 再`.dump`                                  | 导出整个数据库，保存到指定的 SQL 文件              |
| **导入数据库**  | `.read 文件名.sql`                                             | 从 SQL 文件导入数据到当前数据库                    |
| **打开数据库**  | `.open 数据库名.db`                                              | 打开或切换到另一个数据库                           |




### PostgreSQL常用命令

| 操作                       | 命令                                                                                           | 说明                                                                                      |
|----------------------------|------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| **安装 PostgreSQL**         | `sudo apt update` <br> `sudo apt install postgresql postgresql-contrib`                        | 更新包管理器并安装 PostgreSQL 和相关插件                                                   |
| **启动 PostgreSQL 服务**    | `sudo systemctl start postgresql`                                                             | 启动 PostgreSQL 服务                                                                      |
| **重启 PostgreSQL 服务**    | `sudo systemctl restart postgresql`                                                           | 重启 PostgreSQL 服务                                                                      |
| **停止 PostgreSQL 服务**    | `sudo systemctl stop postgresql`                                                              | 停止 PostgreSQL 服务                                                                      |
| **检查 PostgreSQL 状态**    | `sudo systemctl status postgresql`                                                            | 检查 PostgreSQL 服务的当前状态                                                            |
| **设置 PostgreSQL 开机启动**| `sudo systemctl enable postgresql`                                                            | 设置 PostgreSQL 随系统启动自动运行                                                        |
| **切换到 postgres 用户**    | `sudo -i -u postgres`                                                                         | 以 `postgres` 管理员用户登录                                             |
| **以指定用户登录**          | `psql -U 用户名 -d 数据库名`                    | 以指定用户登录指定数据库              |
| **进入 PostgreSQL shell**   | `psql`                                                                                        | 进入 PostgreSQL 的交互式命令行 shell                                                      |
| **退出 PostgreSQL shell**   | `\q`                                                                                          | 退出 PostgreSQL shell                                                                     |
| **查看数据库列表**          | `\l`                                                                                          | 显示当前 PostgreSQL 实例中的所有数据库                                                    |
| **创建数据库**              | `CREATE DATABASE 数据库名;`                                                                   | 创建一个新数据库                                                                          |
| **删除数据库**              | `DROP DATABASE 数据库名;`                                                                     | 删除指定的数据库                                                                          |
| **查看表格列表**            | `\dt`                                                                                         | 显示当前数据库中的所有表格                                                                |
| **创建表格**                | `CREATE TABLE 表格名 (列1 数据类型, 列2 数据类型, ...);`                                       | 在数据库中创建一个新表格，并定义其列和数据类型                                            |
| **插入数据**                | `INSERT INTO 表格名 (列1, 列2, ...) VALUES (值1, 值2, ...);`                                   | 向表格中插入一条数据记录                                                                  |
| **查询数据**                | `SELECT * FROM 表格名;`                                                                       | 从表格中查询所有数据                                                                      |
| **创建用户**                | `CREATE USER 用户名 WITH PASSWORD '密码';`                                                    | 创建一个新用户，并为其设置密码                                                            |
| **给用户授权**              | `GRANT ALL PRIVILEGES ON DATABASE 数据库名 TO 用户名;`                                         | 为指定的用户授权访问和操作指定数据库的所有权限                                            |
| **删除用户**                | `DROP USER 用户名;`                                                                           | 删除一个指定的用户                                                                        |
| **修改用户密码**            | `ALTER USER 用户名 WITH PASSWORD '新密码';`                                                   | 修改指定用户的密码                                                                        |
| **备份数据库**              | `pg_dump 数据库名 > 备份文件名.sql`                                                           | 将指定数据库备份到一个 `.sql` 文件中                                                      |
| **还原数据库**              | `psql 数据库名 < 备份文件名.sql`                                                              | 从备份的 `.sql` 文件还原数据库                                                            |
