胡金良 發表於 2025-12-23 09:10:27

MySQL常用命令速查之新手必备的20个高频操作

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">引言:踏上数据库之旅</a></li><li><a href="#_label1">第一部分:连接与环境设置</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">1. 登录 MySQL 服务器</a></li><li><a href="#_lab2_1_1">2. 退出 MySQL 客户端</a></li></ul><li><a href="#_label2">第二部分:数据库操作</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_2">3. 查看所有数据库</a></li><li><a href="#_lab2_2_3">4. 创建数据库</a></li><li><a href="#_lab2_2_4">5. 使用数据库</a></li><li><a href="#_lab2_2_5">6. 删除数据库</a></li></ul><li><a href="#_label3">第三部分:数据表操作</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_6">7. 查看当前数据库中的所有表</a></li><li><a href="#_lab2_3_7">8. 创建数据表</a></li><li><a href="#_lab2_3_8">9. 查看表结构</a></li><li><a href="#_lab2_3_9">10. 删除数据表</a></li></ul><li><a href="#_label4">第四部分:数据操作(增删改查)</a></li><ul class="second_class_ul"><li><a href="#_lab2_4_10">11. 插入数据</a></li><li><a href="#_lab2_4_11">12. 查询所有数据</a></li><li><a href="#_lab2_4_12">13. 条件查询</a></li><li><a href="#_lab2_4_13">14. 更新数据</a></li><li><a href="#_lab2_4_14">15. 删除数据</a></li></ul><li><a href="#_label5">第五部分:用户权限与管理</a></li><ul class="second_class_ul"><li><a href="#_lab2_5_15">16. 创建用户</a></li><li><a href="#_lab2_5_16">17. 授权用户</a></li><li><a href="#_lab2_5_17">18. 撤销权限</a></li><li><a href="#_lab2_5_18">19. 删除用户</a></li></ul><li><a href="#_label6">第六部分:数据库备份与恢复</a></li><ul class="second_class_ul"><li><a href="#_lab2_6_19">20. 备份与恢复数据库</a></li><ul class="third_class_ul"><li><a href="#_label3_6_19_0">备份数据库:</a></li><li><a href="#_label3_6_19_1">恢复数据库:</a></li></ul></ul><li><a href="#_label7">总结与最佳实践</a></li><ul class="second_class_ul"></ul><li><a href="#_label8">参考链接</a></li><ul class="second_class_ul"></ul></ul></div><p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309015378.jpg" /></p>
<p class="maodian"><a name="_label0"></a></p><h2>引言:踏上数据库之旅</h2>
<p>大家好!👋 欢迎来到这篇关于 MySQL 数据库常用命令的速查指南!无论你是刚接触数据库的新手,还是希望巩固基础的老手,这篇博客都将为你提供一份清晰、实用且易于上手的参考。我们将从最基础的连接和数据库操作开始,逐步深入到数据的增删改查(CRUD),并涵盖一些提升效率和安全性的关键命令。</p>
<p>MySQL,作为世界上最受欢迎的开源关系型数据库之一 🐘,以其易用性、稳定性和高性能而闻名。掌握其核心命令,是每一位开发者、数据库管理员乃至数据分析师的必修课。本文将为你梳理出 20 个在日常工作中<strong>高频出现</strong>的 MySQL 命令,并结合 Java 代码示例,让你不仅知道&ldquo;怎么做&rdquo;,更明白&ldquo;为什么要这么做&rdquo;。</p>
<p>准备好了吗?让我们一起开启这段探索 MySQL 的奇妙旅程吧!🚀</p>
<p class="maodian"><a name="_label1"></a></p><h2>第一部分:连接与环境设置</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>1. 登录 MySQL 服务器</h3>
<p>这是你与 MySQL 数据库建立联系的第一步。想象一下,你就像一位探险家,需要先找到通往宝藏(数据库)的大门钥匙 🔑。</p>
<p><strong>命令格式:</strong></p>
<div class="jb51code"><pre class="brush:ps;">mysql -u [用户名] -p [数据库名]
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:ps;">mysql -u root -p
</pre></div>
<blockquote><p>输入上述命令后,系统会提示你输入密码。如果你的 MySQL 服务运行在本地且用户 <code>root</code> 没有密码,可以直接回车。</p></blockquote>
<p><strong>带数据库名登录:</strong></p>
<div class="jb51code"><pre class="brush:ps;">mysql -u root -p my_database
</pre></div>
<blockquote><p>这会直接连接到名为 <code>my_database</code> 的数据库。</p></blockquote>
<p><strong>注意:</strong> <code>-h</code> 参数用于指定主机名(默认是 <code>localhost</code>),如果需要连接远程数据库,则需指定 IP 地址或主机名。</p>
<p><strong>Java 代码示例:</strong> 使用 JDBC 连接到 MySQL 数据库</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySQLConnectionExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/my_database"; // URL 包含主机、端口和数据库名
      String user = "root"; // 用户名
      String password = "your_password"; // 密码

      try {
            // 加载 MySQL JDBC 驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立连接
            Connection connection = DriverManager.getConnection(url, user, password);
            System.out.println("✅ 成功连接到 MySQL 数据库!");
            // 在这里可以执行数据库操作...
            connection.close(); // 关闭连接
      } catch (ClassNotFoundException e) {
            System.err.println("❌ 未找到 MySQL JDBC 驱动程序。");
            e.printStackTrace();
      } catch (SQLException e) {
            System.err.println("❌ 连接数据库失败。");
            e.printStackTrace();
      }
    }
}
</pre></div>
<blockquote><p>⚠️ <strong>重要提示:</strong> 请确保你的项目中包含了 MySQL 的 JDBC 驱动(如 <code>mysql-connector-java</code>)。你可以通过 Maven 或 Gradle 添加依赖。</p></blockquote>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>2. 退出 MySQL 客户端</h3>
<p>当你完成操作后,需要优雅地离开 MySQL 的命令行环境。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:ps;">exit;
-- 或者
quit;
</pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>第二部分:数据库操作</h2>
<p class="maodian"><a name="_lab2_2_2"></a></p><h3>3. 查看所有数据库</h3>
<p>在 MySQL 中,数据库就像是一个容器,用来存放相关的数据表。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:ps;">SHOW DATABASES;
</pre></div>
<p><strong>Java 代码示例:</strong> 获取所有数据库列表</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.*;

public class ListDatabasesExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/";
      String user = "root";
      String password = "your_password";

      try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);

            DatabaseMetaData metaData = connection.getMetaData();
            ResultSet databases = metaData.getCatalogs();

            System.out.println("📋 所有数据库:");
            while (databases.next()) {
                String dbName = databases.getString("TABLE_CAT"); // MySQL 中使用 TABLE_CAT 获取数据库名
                System.out.println("- " + dbName);
            }

            databases.close();
            connection.close();
      } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
      }
    }
}
</pre></div>
<p class="maodian"><a name="_lab2_2_3"></a></p><h3>4. 创建数据库</h3>
<p>创建一个新的数据库,就像为你的项目开辟一片新的土地。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">CREATE DATABASE database_name;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">CREATE DATABASE IF NOT EXISTS company_db;
</pre></div>
<blockquote><p><code>IF NOT EXISTS</code> 是一个安全选项,防止因数据库已存在而报错。</p></blockquote>
<p class="maodian"><a name="_lab2_2_4"></a></p><h3>5. 使用数据库</h3>
<p>选择一个数据库作为当前操作的目标。就像切换到某个特定的房间进行工作一样。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">USE database_name;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">USE company_db;
</pre></div>
<p class="maodian"><a name="_lab2_2_5"></a></p><h3>6. 删除数据库</h3>
<p>当你不再需要某个数据库时,可以将其删除(注意:此操作不可逆!)。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DROP DATABASE database_name;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DROP DATABASE IF EXISTS company_db;
</pre></div>
<blockquote><p>同样,<code>IF EXISTS</code> 可以避免因数据库不存在而报错。</p></blockquote>
<p class="maodian"><a name="_label3"></a></p><h2>第三部分:数据表操作</h2>
<p class="maodian"><a name="_lab2_3_6"></a></p><h3>7. 查看当前数据库中的所有表</h3>
<p>了解当前数据库内有哪些&ldquo;房间&rdquo;(表)是很有必要的。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:ps;">SHOW TABLES;
</pre></div>
<p><strong>Java 代码示例:</strong> 获取当前数据库中的所有表名</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.*;

public class ListTablesExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/company_db";
      String user = "root";
      String password = "your_password";

      try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);

            DatabaseMetaData metaData = connection.getMetaData();
            String[] types = {"TABLE"}; // 指定获取表类型
            ResultSet tables = metaData.getTables(null, null, "%", types);

            System.out.println("📄 当前数据库中的所有表:");
            while (tables.next()) {
                String tableName = tables.getString("TABLE_NAME");
                System.out.println("- " + tableName);
            }

            tables.close();
            connection.close();
      } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
      }
    }
}
</pre></div>
<p class="maodian"><a name="_lab2_3_7"></a></p><h3>8. 创建数据表</h3>
<p>表是存储数据的结构化容器。定义表结构是数据管理的核心。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    ...
   
);
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">CREATE TABLE IF NOT EXISTS employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    hire_date DATE NOT NULL,
    salary DECIMAL(10, 2)
);
</pre></div>
<blockquote><p>这个例子创建了一个名为 <code>employees</code> 的表,包含了员工的基本信息。<code>AUTO_INCREMENT</code> 使得 <code>id</code> 字段自动递增,<code>PRIMARY KEY</code> 设置为主键,<code>UNIQUE</code> 确保邮箱唯一,<code>NOT NULL</code> 约束不允许为空。</p></blockquote>
<p class="maodian"><a name="_lab2_3_8"></a></p><h3>9. 查看表结构</h3>
<p>了解表的字段(列)信息、数据类型和约束是进行后续操作的基础。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DESCRIBE table_name;
-- 或者
DESC table_name;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DESCRIBE employees;
</pre></div>
<p><strong>Java 代码示例:</strong> 获取表的列信息</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.*;

public class GetTableStructureExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/company_db";
      String user = "root";
      String password = "your_password";

      try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);

            DatabaseMetaData metaData = connection.getMetaData();
            String tableName = "employees";
            ResultSet columns = metaData.getColumns(null, null, tableName, "%");

            System.out.println(`📊 表 "${tableName}" 的结构:`);
            System.out.printf("%-20s %-15s %-10s %-10s%n", "列名", "类型", "允许空", "默认值");
            System.out.println("--------------------------------------------------------");
            while (columns.next()) {
                String columnName = columns.getString("COLUMN_NAME");
                String typeName = columns.getString("TYPE_NAME");
                int isNullable = columns.getInt("NULLABLE");
                String defaultValue = columns.getString("COLUMN_DEF");

                String nullableStr = (isNullable == DatabaseMetaData.columnNoNulls) ? "NO" : "YES";
                System.out.printf("%-20s %-15s %-10s %-10s%n", columnName, typeName, nullableStr, defaultValue);
            }

            columns.close();
            connection.close();
      } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
      }
    }
}
</pre></div>
<p class="maodian"><a name="_lab2_3_9"></a></p><h3>10. 删除数据表</h3>
<p>当表不再需要时,可以将其删除。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:ps;">DROP TABLE table_name;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:ps;">DROP TABLE IF EXISTS employees;
</pre></div>
<p class="maodian"><a name="_label4"></a></p><h2>第四部分:数据操作(增删改查)</h2>
<p class="maodian"><a name="_lab2_4_10"></a></p><h3>11. 插入数据</h3>
<p>向表中添加新的记录。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">INSERT INTO employees (first_name, last_name, email, hire_date, salary)
VALUES ('John', 'Doe', 'john.doe@example.com', '2024-01-15', 75000.00);
</pre></div>
<p><strong>Java 代码示例:</strong> 使用 PreparedStatement 插入数据</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.*;

public class InsertDataExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/company_db";
      String user = "root";
      String password = "your_password";

      try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);

            String sql = "INSERT INTO employees (first_name, last_name, email, hire_date, salary) VALUES (?, ?, ?, ?, ?)";
            PreparedStatement pstmt = connection.prepareStatement(sql);

            // 设置参数
            pstmt.setString(1, "Jane");
            pstmt.setString(2, "Smith");
            pstmt.setString(3, "jane.smith@example.com");
            pstmt.setDate(4, Date.valueOf("2024-02-01"));
            pstmt.setBigDecimal(5, new java.math.BigDecimal("80000.00"));

            // 执行插入
            int rowsAffected = pstmt.executeUpdate();
            System.out.println("✅ 成功插入 " + rowsAffected + " 行数据。");

            pstmt.close();
            connection.close();
      } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
      }
    }
}
</pre></div>
<p class="maodian"><a name="_lab2_4_11"></a></p><h3>12. 查询所有数据</h3>
<p>最基本的操作,查看表中所有的记录。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">SELECT * FROM table_name;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">SELECT * FROM employees;
</pre></div>
<p class="maodian"><a name="_lab2_4_12"></a></p><h3>13. 条件查询</h3>
<p>根据特定条件筛选数据,这是数据库查询的核心。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">SELECT column1, column2, ... FROM table_name WHERE condition;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">SELECT first_name, last_name, salary FROM employees WHERE salary &gt; 70000;
</pre></div>
<p><strong>Java 代码示例:</strong> 使用 PreparedStatement 执行条件查询</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.*;
import java.util.ArrayList;
import java.util.List;

class Employee {
    private int id;
    private String firstName;
    private String lastName;
    private String email;
    private java.sql.Date hireDate;
    private java.math.BigDecimal salary;

    // 构造函数、getter 和 setter 方法...
    public Employee(int id, String firstName, String lastName, String email, Date hireDate, BigDecimal salary) {
      this.id = id;
      this.firstName = firstName;
      this.lastName = lastName;
      this.email = email;
      this.hireDate = hireDate;
      this.salary = salary;
    }

    // Getter 和 Setter 方法...
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getFirstName() { return firstName; }
    public void setFirstName(String firstName) { this.firstName = firstName; }
    public String getLastName() { return lastName; }
    public void setLastName(String lastName) { this.lastName = lastName; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
    public Date getHireDate() { return hireDate; }
    public void setHireDate(Date hireDate) { this.hireDate = hireDate; }
    public BigDecimal getSalary() { return salary; }
    public void setSalary(BigDecimal salary) { this.salary = salary; }

    @Override
    public String toString() {
      return "Employee{" +
                "id=" + id +
                ", firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ", email='" + email + '\'' +
                ", hireDate=" + hireDate +
                ", salary=" + salary +
                '}';
    }
}

public class SelectWithConditionExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/company_db";
      String user = "root";
      String password = "your_password";

      try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);

            String sql = "SELECT id, first_name, last_name, email, hire_date, salary FROM employees WHERE salary &gt; ?";
            PreparedStatement pstmt = connection.prepareStatement(sql);
            pstmt.setBigDecimal(1, new java.math.BigDecimal("70000.00"));

            ResultSet rs = pstmt.executeQuery();

            List&lt;Employee&gt; employees = new ArrayList&lt;&gt;();
            while (rs.next()) {
                int id = rs.getInt("id");
                String firstName = rs.getString("first_name");
                String lastName = rs.getString("last_name");
                String email = rs.getString("email");
                Date hireDate = rs.getDate("hire_date");
                BigDecimal salary = rs.getBigDecimal("salary");

                employees.add(new Employee(id, firstName, lastName, email, hireDate, salary));
            }

            System.out.println("💰 薪资高于 70000 的员工:");
            for (Employee emp : employees) {
                System.out.println(emp);
            }

            rs.close();
            pstmt.close();
            connection.close();
      } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
      }
    }
}
</pre></div>
<p class="maodian"><a name="_lab2_4_13"></a></p><h3>14. 更新数据</h3>
<p>修改现有记录中的数据。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">UPDATE employees SET salary = 85000.00 WHERE first_name = 'John' AND last_name = 'Doe';
</pre></div>
<p><strong>Java 代码示例:</strong> 使用 PreparedStatement 更新数据</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.*;

public class UpdateDataExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/company_db";
      String user = "root";
      String password = "your_password";

      try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);

            String sql = "UPDATE employees SET salary = ? WHERE first_name = ? AND last_name = ?";
            PreparedStatement pstmt = connection.prepareStatement(sql);

            pstmt.setBigDecimal(1, new java.math.BigDecimal("90000.00"));
            pstmt.setString(2, "Jane");
            pstmt.setString(3, "Smith");

            int rowsAffected = pstmt.executeUpdate();
            System.out.println("✅ 成功更新 " + rowsAffected + " 行数据。");

            pstmt.close();
            connection.close();
      } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
      }
    }
}
</pre></div>
<p class="maodian"><a name="_lab2_4_14"></a></p><h3>15. 删除数据</h3>
<p>移除不需要的记录。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DELETE FROM table_name WHERE condition;
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DELETE FROM employees WHERE first_name = 'John' AND last_name = 'Doe';
</pre></div>
<blockquote><p>⚠️ <strong>警告:</strong> 不要忘记 <code>WHERE</code> 子句!否则会删除表中的所有数据!</p></blockquote>
<p><strong>Java 代码示例:</strong> 使用 PreparedStatement 删除数据</p>
<div class="jb51code"><pre class="brush:java;">import java.sql.*;

public class DeleteDataExample {
    public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/company_db";
      String user = "root";
      String password = "your_password";

      try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);

            String sql = "DELETE FROM employees WHERE first_name = ? AND last_name = ?";
            PreparedStatement pstmt = connection.prepareStatement(sql);

            pstmt.setString(1, "Jane");
            pstmt.setString(2, "Smith");

            int rowsAffected = pstmt.executeUpdate();
            System.out.println("✅ 成功删除 " + rowsAffected + " 行数据。");

            pstmt.close();
            connection.close();
      } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
      }
    }
}
</pre></div>
<p class="maodian"><a name="_label5"></a></p><h2>第五部分:用户权限与管理</h2>
<p class="maodian"><a name="_lab2_5_15"></a></p><h3>16. 创建用户</h3>
<p>为不同的应用或人员分配访问数据库的账户。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">CREATE USER 'username'@'host' IDENTIFIED BY 'password';
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'secure_password_123';
</pre></div>
<blockquote><p><code>&#39;app_user&#39;@&#39;localhost&#39;</code> 表示用户名为 <code>app_user</code>,只能从本机(<code>localhost</code>)连接。</p></blockquote>
<p class="maodian"><a name="_lab2_5_16"></a></p><h3>17. 授权用户</h3>
<p>赋予用户特定的权限,遵循最小权限原则。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">GRANT privileges ON database.table TO 'username'@'host';
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">GRANT SELECT, INSERT, UPDATE ON company_db.employees TO 'app_user'@'localhost';
</pre></div>
<blockquote><p>这授予了 <code>app_user</code> 对 <code>company_db</code> 数据库中 <code>employees</code> 表的查询、插入和更新权限。</p></blockquote>
<p class="maodian"><a name="_lab2_5_17"></a></p><h3>18. 撤销权限</h3>
<p>收回已授予的权限。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">REVOKE privileges ON database.table FROM 'username'@'host';
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">REVOKE UPDATE ON company_db.employees FROM 'app_user'@'localhost';
</pre></div>
<p class="maodian"><a name="_lab2_5_18"></a></p><h3>19. 删除用户</h3>
<p>当不再需要某个用户时,将其从系统中移除。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DROP USER 'username'@'host';
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">DROP USER 'app_user'@'localhost';
</pre></div>
<p class="maodian"><a name="_label6"></a></p><h2>第六部分:数据库备份与恢复</h2>
<p class="maodian"><a name="_lab2_6_19"></a></p><h3>20. 备份与恢复数据库</h3>
<p>数据安全至关重要!定期备份是保护数据免受意外损失的关键措施。</p>
<p class="maodian"><a name="_label3_6_19_0"></a></p><h4>备份数据库:</h4>
<p>使用 <code>mysqldump</code> 工具导出数据库结构和数据。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">mysqldump -u [用户名] -p [数据库名] &gt; backup_file.sql
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">mysqldump -u root -p company_db &gt; company_backup.sql
</pre></div>
<p class="maodian"><a name="_label3_6_19_1"></a></p><h4>恢复数据库:</h4>
<p>将备份文件导入到 MySQL 中。</p>
<p><strong>命令:</strong></p>
<div class="jb51code"><pre class="brush:sql;">mysql -u [用户名] -p [数据库名] &lt; backup_file.sql
</pre></div>
<p><strong>示例:</strong></p>
<div class="jb51code"><pre class="brush:sql;">mysql -u root -p company_db &lt; company_backup.sql
</pre></div>
<blockquote><p>💡 <strong>提示:</strong> <code>mysqldump</code> 生成的是纯文本 SQL 文件,可以方便地进行版本控制和传输。</p></blockquote>
<p class="maodian"><a name="_label7"></a></p><h2>总结与最佳实践</h2>
<p>掌握这些 MySQL 命令是走向数据库精通的第一步。它们构成了日常数据库工作的基石。记住以下几点,会让你事半功倍:</p>
<ol><li><strong>安全第一:</strong> 使用强密码,遵循最小权限原则,定期审查用户权限。</li><li><strong>备份策略:</strong> 定期进行数据库备份,测试恢复流程。</li><li><strong>性能优化:</strong> 合理使用索引,避免 <code>SELECT *</code>,编写高效的 SQL 查询。</li><li><strong>命名规范:</strong> 使用清晰、一致的表名和字段名。</li><li><strong>事务处理:</strong> 在需要保证数据一致性的场景下,使用事务(<code>BEGIN</code>, <code>COMMIT</code>, <code>ROLLBACK</code>)。</li><li><strong>学习资源:</strong> 不断学习官方文档和其他优质教程。例如,<a href="https://dev.mysql.com/doc/" rel="external nofollow">MySQL 官方文档</a> 是最权威的参考资料。</li></ol>
<p>希望这篇博客能帮助你快速上手 MySQL!如果你有任何疑问或想了解更高级的话题,请随时留言讨论。祝你数据库之旅愉快!🌟</p>
<p class="maodian"><a name="_label8"></a></p><h2>参考链接</h2>
<ul><li><a href="https://dev.mysql.com/doc/" rel="external nofollow" target="_blank">MySQL 官方文档</a></li><li><a href="https://www.w3schools.com/mysql/" rel="external nofollow" target="_blank">MySQL 教程 - W3Schools</a></li><li><a href="https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-j2ee.html" rel="external nofollow" target="_blank">MySQL 8.0 与 JDBC 驱动连接示例</a></li></ul>
頁: [1]
查看完整版本: MySQL常用命令速查之新手必备的20个高频操作