王培顺的博客&WangPeishun’s Blog

以下是 MySQL 命令行操作的常用命令及示例说明,覆盖了数据库管理、表操作、权限控制等核心场景,按功能分类整理,供大家参考:


一、连接与退出

  1. 连接 MySQL 服务器

    mysql -u 用户名 -p

    示例

    mysql -u root -p  # -u 指定用户名为 root,-p 表示需要输入密码
  2. 退出 MySQL

    exit;  -- 退出 MySQL 命令行(也可用 \q 或 Ctrl+D)

二、数据库管理

  1. 显示所有数据库

    SHOW DATABASES;  -- 列出当前 MySQL 服务器中所有数据库
  2. 创建数据库

    CREATE DATABASE 数据库名;  -- 创建一个新数据库

    示例

    CREATE DATABASE testdb;  -- 创建名为 testdb 的数据库
  3. 选择数据库

    USE 数据库名;  -- 切换操作上下文到指定数据库

    示例

    USE testdb;  -- 后续操作默认在 testdb 数据库执行
  4. 删除数据库

    DROP DATABASE 数据库名;  -- 彻底删除数据库(谨慎操作!)

    示例

    DROP DATABASE olddb;  -- 删除名为 olddb 的数据库

三、表操作

  1. 显示当前数据库所有表

    SHOW TABLES;  -- 列出当前数据库中的所有表
  2. 创建表

    CREATE TABLE 表名 (列定义);  -- 定义表结构(列名、类型、约束等)

    示例

    CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,  -- 自增主键,唯一标识每行
      name VARCHAR(50),                  -- 用户名,最大 50 字符
      email VARCHAR(100)                 -- 邮箱,最大 100 字符
    );
  3. 查看表结构

    DESC 表名;  -- 显示表的列名、类型、是否允许 NULL 等详细信息

    示例

    DESC users;  -- 查看 users 表的结构
  4. 修改表结构(添加列)

    ALTER TABLE 表名 ADD 列名 数据类型;  -- 向表中添加新列

    示例

    ALTER TABLE users ADD age INT;  -- 添加 age 列,类型为整数
  5. 删除表

    DROP TABLE 表名;  -- 彻底删除表及其数据(不可恢复!)

    示例

    DROP TABLE temp_users;  -- 删除名为 temp_users 的表

四、数据操作(CRUD)

  1. 插入数据

    INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);  -- 插入一行数据

    示例

    INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); 
    -- 插入 name 为 Alice、email 为 alice@example.com 的记录
  2. 查询数据

    SELECT 列1, 列2 FROM 表名 [WHERE 条件];  -- 查询满足条件的数据

    示例

    SELECT * FROM users WHERE name LIKE 'A%';  
    -- 查询所有 name 以 A 开头的用户(* 表示返回所有列)
  3. 更新数据

    UPDATE 表名 SET 列名=新值 [WHERE 条件];  -- 修改符合条件的记录

    示例

    UPDATE users SET email='bob@new.com' WHERE id=2;  
    -- 将 id=2 的用户的 email 更新为 bob@new.com
  4. 删除数据

    DELETE FROM 表名 [WHERE 条件];  -- 删除符合条件的记录(无 WHERE 会清空表!)

    示例

    DELETE FROM users WHERE age < 18;  -- 删除所有 age 小于 18 的用户

五、索引与约束

  1. 创建索引

    CREATE INDEX 索引名 ON 表名 (列名);  -- 为列创建索引,加速查询

    示例

    CREATE INDEX idx_email ON users (email);  -- 为 email 列创建索引
  2. 添加主键约束

    ALTER TABLE 表名 ADD PRIMARY KEY (列名);  -- 将列设为主键(唯一且非空)

    示例

    ALTER TABLE orders ADD PRIMARY KEY (order_id);  -- 设置 order_id 为主键

六、用户与权限

  1. 创建用户

    CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';  -- 创建新用户并设置密码

    示例

    CREATE USER 'dev'@'localhost' IDENTIFIED BY '123456';  
    -- 创建用户 dev,仅允许从本地登录,密码为 123456
  2. 授权

    GRANT 权限 ON 数据库.表 TO '用户'@'主机';  -- 授予用户特定权限

    示例

    GRANT SELECT, INSERT ON testdb.* TO 'dev'@'localhost';  
    -- 允许 dev 用户在 testdb 所有表上执行 SELECT 和 INSERT
  3. 撤销权限

    REVOKE 权限 ON 数据库.表 FROM '用户'@'主机';  -- 撤销用户权限

    示例

    REVOKE DELETE ON testdb.* FROM 'dev'@'localhost';  
    -- 禁止 dev 用户在 testdb 所有表上执行 DELETE
  4. 刷新权限

    FLUSH PRIVILEGES;  -- 使权限修改立即生效(授权或撤销后建议执行)

七、备份与恢复

  1. 导出数据库(命令行)

    mysqldump -u 用户名 -p 数据库名 > 文件名.sql  -- 将数据库导出为 SQL 文件

    示例

    mysqldump -u root -p testdb > backup.sql  
    # 导出 testdb 数据库到 backup.sql 文件(需输入密码)
  2. 导入 SQL 文件

    SOURCE 文件路径;  -- 执行 SQL 文件中的命令(用于恢复数据)

    示例

    SOURCE /home/user/backup.sql;  -- 导入 backup.sql 文件到当前数据库

八、事务管理

  1. 开启事务

    START TRANSACTION;  -- 开始一个事务(后续操作可回滚)
  2. 提交事务

    COMMIT;  -- 提交事务,确认所有修改
  3. 回滚事务

    ROLLBACK;  -- 撤销事务内的所有未提交操作

    示例

    START TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE id=1;  -- 账户1扣款100
    UPDATE accounts SET balance = balance + 100 WHERE id=2;  -- 账户2收款100
    COMMIT;  -- 若两条更新均成功,提交事务(否则用 ROLLBACK 回滚)

九、其他实用命令

  1. 显示服务器状态

    SHOW STATUS;  -- 查看 MySQL 服务器运行状态(连接数、查询次数等)
  2. 查看正在执行的进程

    SHOW PROCESSLIST;  -- 显示当前所有客户端连接及执行的 SQL
  3. 查看建表语句

    SHOW CREATE TABLE 表名;  -- 显示创建表的完整 SQL 语句
  4. 优化表(碎片整理)

    OPTIMIZE TABLE 表名;  -- 整理表碎片,回收未使用空间(适用于频繁修改的表)

十、高级功能

  1. 存储过程

    DELIMITER $$  -- 修改分隔符为 $$(避免与 SQL 语句中的 ; 冲突)
    CREATE PROCEDURE 存储过程名()
    BEGIN
      -- SQL 逻辑
    END $$
    DELIMITER ;   -- 恢复分隔符为 ;

    示例

    DELIMITER $$
    CREATE PROCEDURE GetUsers()
    BEGIN
      SELECT * FROM users;  -- 定义存储过程:查询所有用户
    END $$
    DELIMITER ;
    -- 调用存储过程:CALL GetUsers();

标签: none

添加新评论