MySQL 常用命令速查

本文档整理了 MySQL 日常使用中最常见的命令,涵盖了从服务连接到数据查询的各个方面。


一、服务连接与管理

1. 连接数据库

1
2
# -h: 主机地址, -u: 用户名, -p: 密码
mysql -h 110.110.110.110 -u root -p

2. 修改用户密码

mysqladmin 工具中修改密码:

1
2
# 将 root 用户的密码修改为 new_password
mysqladmin -u root -p old_password password new_password

在 MySQL 8.x 中,推荐使用 ALTER USER

1
2
3
4
5
-- 修改当前登录用户的密码
ALTER USER USER() IDENTIFIED BY 'new_password';

-- 修改指定用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

二、数据库操作 (Database)

1. 查看数据库

1
SHOW DATABASES;

2. 创建数据库

1
CREATE DATABASE database_name;

3. 使用数据库

1
USE database_name;

4. 删除数据库

1
DROP DATABASE database_name;

三、用户与权限管理 (User & Privileges)

1. 创建用户并授权

1
2
3
4
5
6
7
8
-- 创建一个名为 'testuser',密码为 'password' 的用户,该用户只能从本地登录
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';

-- 授予用户在指定数据库上的权限 (SELECT, INSERT, UPDATE, DELETE)
GRANT SELECT, INSERT, UPDATE, DELETE ON my_database.* TO 'testuser'@'localhost';

-- 刷新权限使之生效
FLUSH PRIVILEGES;

2. 查看用户权限

1
SHOW GRANTS FOR 'testuser'@'localhost';

3. 撤销权限

1
REVOKE UPDATE ON my_database.* FROM 'testuser'@'localhost';

4. 删除用户

1
DROP USER 'testuser'@'localhost';

四、表结构操作 (DDL - Data Definition Language)

1. 查看数据表

1
SHOW TABLES;

2. 查看表结构

1
2
3
DESC table_name;
-- 或者
DESCRIBE table_name;

3. 创建数据表

一个包含常用约束的建表示例:

1
2
3
4
5
6
CREATE TABLE `MyClass` (
`id` INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
`name` VARCHAR(20) NOT NULL COMMENT '姓名',
`gender` ENUM('Male', 'Female') NOT NULL DEFAULT 'Male' COMMENT '性别',
`score` DOUBLE(5, 2) COMMENT '成绩'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4. 修改表名

1
ALTER TABLE old_table_name RENAME TO new_table_name;

5. 修改表结构 (ALTER TABLE)

  • 添加列 (ADD COLUMN):

    1
    2
    -- 在 name 字段后添加一个 age 字段
    ALTER TABLE MyClass ADD COLUMN age INT(3) NOT NULL DEFAULT 0 AFTER name;
  • 修改列定义 (MODIFY COLUMN):

    1
    2
    -- 修改 name 字段的长度
    ALTER TABLE MyClass MODIFY COLUMN name VARCHAR(30);
  • 修改列名 (CHANGE COLUMN):

    1
    2
    -- 将 score 字段重命名为 grade,并修改其类型
    ALTER TABLE MyClass CHANGE COLUMN score grade FLOAT(6,2);
  • 删除列 (DROP COLUMN):

    1
    ALTER TABLE MyClass DROP COLUMN age;

6. 删除数据表

1
2
-- 如果表存在则删除,避免报错
DROP TABLE IF EXISTS MyClass;

五、数据操作 (DML - Data Manipulation Language)

1. 插入数据 (INSERT)

  • 插入单行数据:

    1
    INSERT INTO MyClass (id, name, grade) VALUES (1, 'Tom', 98.5);
  • 插入多行数据:

    1
    2
    3
    INSERT INTO MyClass (name, grade) VALUES
    ('Jerry', 85.0),
    ('Alice', 92.5);

2. 更新数据 (UPDATE)

注意: UPDATE 语句一定要带 WHERE 条件,否则会更新整张表!

1
UPDATE MyClass SET grade = 99.0 WHERE name = 'Tom';

3. 删除数据 (DELETE)

注意: DELETE 语句一定要带 WHERE 条件,否则会清空整张表!

1
DELETE FROM MyClass WHERE id = 1;

六、数据查询 (DQL - Data Query Language)

1. 基础查询 (SELECT)

1
2
3
4
5
-- 查询所有列
SELECT * FROM MyClass;

-- 查询指定列
SELECT name, grade FROM MyClass;

2. 条件查询 (WHERE)

  • 比较运算符: =, >, <, >=, <=, !=
  • 逻辑运算符: AND, OR, NOT
  • 范围查询: BETWEEN ... AND ...
  • 列表查询: IN (...)
  • 模糊查询: LIKE (% 匹配任意多个字符, _ 匹配单个字符)
1
2
3
4
5
6
7
8
-- 查询成绩大于90分的学生
SELECT * FROM MyClass WHERE grade > 90;

-- 查询姓'T'的学生
SELECT * FROM MyClass WHERE name LIKE 'T%';

-- 查询ID为1, 3, 5的学生
SELECT * FROM MyClass WHERE id IN (1, 3, 5);

3. 结果排序 (ORDER BY)

1
2
3
4
5
-- 按成绩降序 (DESC) 排序
SELECT * FROM MyClass ORDER BY grade DESC;

-- 按成绩升序 (ASC) 排序 (默认)
SELECT * FROM MyClass ORDER BY grade ASC;

4. 限制结果数量 (LIMIT)

1
2
3
4
5
-- 查询前5条记录
SELECT * FROM MyClass LIMIT 5;

-- 分页查询:从第10条记录开始,取5条 (常用于分页)
SELECT * FROM MyClass LIMIT 10, 5;

5. 分组查询 (GROUP BY)

常与聚合函数 (COUNT, SUM, AVG, MAX, MIN) 配合使用。

1
2
3
4
-- 统计每个性别的学生人数,并为统计结果起别名 'total'
SELECT gender, COUNT(*) AS total
FROM MyClass
GROUP BY gender;

6. 去重查询 (DISTINCT)

1
2
-- 查询所有出现过的姓氏(不重复)
SELECT DISTINCT name FROM MyClass;