Mysql常用命令(含示例)

1. 连接和退出

连接到 MySQL

命令:

mysql -u [username] -p
  • -u [username]:指定连接 MySQL 使用的用户名。
  • -p:提示输入密码。

示例:

mysql -u root -p

系统会提示您输入密码,输入密码后即可连接到 MySQL。

实际案例:

  • 开发环境:开发人员使用 mysql -u dev_user -p 命令连接到 MySQL 数据库,以便测试和开发应用程序。
  • 生产环境:DBA 使用 mysql -u admin -p 命令连接到生产数据库,进行维护和管理。

退出 MySQL

命令:

EXIT;

QUIT;
  • 这两个命令都用于安全退出 MySQL 会话。

实际案例:

  • 开发环境:开发人员在完成数据库查询后使用 EXIT; 退出 MySQL 会话。
  • 生产环境:DBA 在执行完管理任务后使用 QUIT; 退出 MySQL 会话。

2. 数据库操作

显示所有数据库

命令:

SHOW DATABASES;
  • 列出 MySQL 服务器上的所有数据库。

实际案例:

  • 开发环境:开发人员使用 SHOW DATABASES; 查看现有数据库,确认存储位置和名称。
  • 生产环境:DBA 使用 SHOW DATABASES; 检查和管理服务器上的所有数据库。

创建数据库

命令:

CREATE DATABASE [database_name];
  • 创建一个新数据库。

示例:

CREATE DATABASE project_db;

实际案例:

  • 项目启动:DBA 创建一个新数据库 project_db 来存储项目相关的数据。

删除数据库

命令:

DROP DATABASE [database_name];
  • 删除一个已有数据库。

示例:

DROP DATABASE project_db;

实际案例:

  • 项目结束或重构:DBA 删除不再需要的数据库 project_db,释放资源。

使用数据库

命令:

USE [database_name];
  • 切换到指定数据库。

示例:

USE project_db;

实际案例:

  • 执行 SQL 语句前:开发人员切换到目标数据库 project_db,以确保在正确的数据库中执行操作。

查看当前使用的数据库

命令:

SELECT DATABASE();
  • 返回当前使用的数据库名称。

实际案例:

  • 确认当前数据库:开发人员或 DBA 使用 SELECT DATABASE(); 确认当前操作的数据库,避免在错误的数据库中执行操作。

3. 表操作

显示所有表

命令:

SHOW TABLES;
  • 列出当前数据库中的所有表。

实际案例:

  • 查看表:开发人员或 DBA 使用 SHOW TABLES; 查看当前数据库中的所有表,了解数据库结构。

创建表

命令:

CREATE TABLE [table_name] (
    column1 datatype constraints,
    column2 datatype constraints,
    ...
) ENGINE=InnoDB;
  • 创建一个新表,定义列名、数据类型和约束。

示例:

CREATE TABLE employees (
    employee_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    position VARCHAR(50),
    salary DECIMAL(10, 2),
    hire_date DATE
) ENGINE=InnoDB;

实际案例:

  • HR 系统:创建 employees 表来存储员工信息。

删除表

命令:

DROP TABLE [table_name];
  • 删除一个已有表。

示例:

DROP TABLE employees;

实际案例:

  • 重构数据库:删除不再需要的表 employees,清理数据库结构。

查看表结构

命令:

DESCRIBE [table_name];
  • 显示表的列、数据类型、约束和其他信息。

示例:

DESCRIBE employees;

实际案例:

  • 了解表结构:开发人员或 DBA 使用 DESCRIBE employees; 查看 employees 表的结构,以便了解表列及其数据类型。

修改表结构

添加新列

命令:

ALTER TABLE [table_name] ADD [column_name] [datatype] [constraints];

示例:

ALTER TABLE employees ADD age INT;

实际案例:

  • 需求变更:在 employees 表中添加年龄字段。
添加新列并指定位置

命令:

ALTER TABLE [table_name] ADD [column_name] [datatype] [constraints] [FIRST | AFTER existing_column];
  • FIRST:将新列添加到表的第一个位置。
  • AFTER existing_column:将新列添加到指定列之后。

示例:

ALTER TABLE employees ADD age INT AFTER name;

实际案例:

  • 需求变更:在 employees 表中 name 列之后添加 age 字段。
修改列数据类型并指定位置

命令:

ALTER TABLE [table_name] MODIFY [column_name] [new_datatype] [constraints] [FIRST | AFTER existing_column];

示例:

ALTER TABLE employees MODIFY age SMALLINT AFTER position;

实际案例:

  • 优化数据类型:修改 employees 表中 age 字段的数据类型,并将其移动到 position 列之后。
重命名列并指定位置

命令:

ALTER TABLE [table_name] CHANGE [old_column_name] [new_column_name] [new_datatype] [constraints] [FIRST | AFTER existing_column];

示例:

ALTER TABLE employees CHANGE age employee_age INT AFTER position;

实际案例:

  • 提高可读性:将 age 字段重命名为 employee_age,并将其移动到 position 列之后。
修改列数据类型

命令:

ALTER TABLE [table_name] MODIFY [column_name] [new_datatype];

示例:

ALTER TABLE employees MODIFY age SMALLINT;

实际案例:

  • 优化数据类型:由于年龄数据量小,修改 employees 表中 age 字段的数据类型。
重命名列

命令:

ALTER TABLE [table_name] CHANGE [old_column_name] [new_column_name] [new_datatype];

示例:

ALTER TABLE employees CHANGE age employee_age INT;

实际案例:

  • 提高可读性:将 age 字段重命名为 employee_age,使字段名称更具描述性。
删除列

命令:

ALTER TABLE [table_name] DROP COLUMN [column_name];

示例:

ALTER TABLE employees DROP COLUMN employee_age;

实际案例:

  • 需求变更:删除不再需要的 employee_age 字段。

复制表结构和数据

复制表结构

命令:

CREATE TABLE [new_table_name] LIKE [existing_table_name];

示例:

CREATE TABLE employees_backup LIKE employees;

实际案例:

  • 数据备份:在进行大规模数据修改前,备份 employees 表的结构。
复制表数据

命令:

INSERT INTO [new_table_name] SELECT * FROM [existing_table_name];

示例:

INSERT INTO employees_backup SELECT * FROM employees;

实际案例:

  • 数据备份:在进行大规模数据修改前,备份 employees 表的数据。

4. 数据操作

插入数据

命令:

INSERT INTO [table_name] ([column1], [column2], ...) VALUES ([value1], [value2], ...);

示例:

INSERT INTO employees (name, position, salary, hire_date) VALUES ('John Doe', 'Manager', 75000, '2022-01-15');

实际案例:

  • HR 系统:在 employees 表中添加新员工 John Doe 的信息。

批量插入数据

命令:

INSERT INTO [table_name] ([column1], [column2], ...) VALUES 
([value1], [value2], ...),
([value3], [value4], ...),
...;

示例:

INSERT INTO employees (name, position, salary, hire_date) VALUES 
('Alice Smith', 'Developer', 60000, '2021-05-22'),
('Bob Johnson', 'Designer', 55000, '2020-11-02'),
('Charlie Brown', 'Analyst', 50000, '2019-08-18');

实际案例:

  • HR 系统:批量添加多名员工的信息。

更新数据

更单条记录

命令:

UPDATE [table_name] SET [column1] = [value1], [column2] = [value2], ... WHERE [condition];

示例:

UPDATE employees SET salary = 80000 WHERE name = 'John Doe';

实际案例:

  • 员工加薪:更新 John Doe 的薪资信息。
更新多条记录

命令:

UPDATE [table_name] SET [column1] = [value1], [column2] = [value2], ... WHERE [condition];

示例:

UPDATE employees SET position = 'Senior Developer' WHERE position = 'Developer';

实际案例:

  • 职位升级:更新所有 Developer 的职位为 Senior Developer

删除数据

删除单条记录

命令:

DELETE FROM [table_name] WHERE [condition];

示例:

DELETE FROM employees WHERE name = 'Charlie Brown';

实际案例:

  • 员工离职:删除 Charlie Brown 的信息。
删除多条记录

命令:

DELETE FROM [table_name] WHERE [condition];

示例:

DELETE FROM employees WHERE hire_date < '2020-01-01';

实际案例:

  • 清理历史数据:删除 2020 年之前入职的员工记录。

查询数据

查询所有数据

命令:

SELECT * FROM [table_name];

示例:

SELECT * FROM employees;

实际案例:

  • 查看所有员工信息:HR 系统中查看 employees 表的所有记录。
查询特定列

命令:

SELECT [column1], [column2], ... FROM [table_name];

示例:

SELECT name, position FROM employees;

实际案例:

  • 查询特定信息:查询所有员工的姓名和职位。
使用条件查询

命令:

SELECT * FROM [table_name] WHERE [condition];

示例:

SELECT * FROM employees WHERE position = 'Manager';

实际案例:

  • 筛选特定记录:查询所有经理的信息。
使用模糊查询

命令:

SELECT * FROM [table_name] WHERE [column] LIKE '[pattern]';

示例:

SELECT * FROM employees WHERE name LIKE 'A%';

实际案例:

  • 模糊搜索:查询名字以 ‘A’ 开头的员工。
使用排序

命令:

SELECT * FROM [table_name] ORDER BY [column1] [ASC|DESC], [column2] [ASC|DESC], ...;

示例:

SELECT * FROM employees ORDER BY hire_date DESC;

实际案例:

  • 排序查询结果:按入职日期倒序查询所有员工信息。
使用分页

命令:

SELECT * FROM [table_name] LIMIT [offset], [row_count];

示例:

SELECT * FROM employees LIMIT 5 OFFSET 10;

实际案例:

  • 分页显示:分页显示员工信息,每页 5 条记录,从第 11 条开始。

5. 用户和权限管理

创建用户

命令:

CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';

示例:

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';

实际案例:

  • 新开发人员入职:为新开发人员创建数据库访问账号。

删除用户

命令:

DROP USER '[username]'@'[host]';

示例:

DROP USER 'new_user'@'localhost';

实际案例:

  • 开发人员离职:删除离职员工的数据库访问账号。

授予权限

授予全部权限

命令:

GRANT ALL PRIVILEGES ON [database_name].* TO '[username]'@'[host]';

示例:

GRANT ALL PRIVILEGES ON project_db.* TO 'new_user'@'localhost';

实际案例:

  • 赋予权限:为新开发人员授予 project_db 数据库的所有权限。
授予特定权限

命令:

GRANT [privilege1], [privilege2], ... ON [database_name].* TO '[username]'@'[host]';

示例:

GRANT SELECT, INSERT, UPDATE ON project_db.* TO 'new_user'@'localhost';

实际案例:

  • 限定权限:为开发人员授予 project_db 数据库的查询、插入和更新权限。

撤销权限

命令:

REVOKE [privilege1], [privilege2], ... ON [database_name].* FROM '[username]'@'[host]';

示例:

REVOKE ALL PRIVILEGES ON project_db.* FROM 'new_user'@'localhost';

实际案例:

  • 收回权限:限制开发人员的数据库访问权限。

刷新权限

命令:

FLUSH PRIVILEGES;

6. 备份和恢复

备份数据库

命令:

mysqldump -u [username] -p [database_name] > [backup_file.sql]

示例:

mysqldump -u root -p project_db > backup.sql

实际案例:

  • 定期备份:定期备份

project_db 数据库以防数据丢失。

恢复数据库

命令:

mysql -u [username] -p [database_name] < [backup_file.sql]

示例:

mysql -u root -p project_db < backup.sql

实际案例:

  • 数据恢复:从备份文件恢复 project_db 数据库。

7. 系统命令

查看 MySQL 服务器状态

命令:

mysqladmin -u [username] -p status

示例:

mysqladmin -u remote_user666 -p -h 192.168.1.121 -P 3366 status

实际案例:

  • 检查状态:DBA 检查 MySQL 服务器的运行状态。

8. 常用快捷命令

查看当前数据库

命令:

SELECT DATABASE();

实际案例:

  • 确认当前数据库:开发人员或 DBA 使用 SELECT DATABASE(); 确认当前操作的数据库。

查看当前用户

命令:

SELECT USER();

实际案例:

  • 确认用户身份:开发人员或 DBA 使用 SELECT USER(); 确认当前连接 MySQL 的用户身份。

查看 MySQL 版本

命令:

SELECT VERSION();

实际案例:

  • 检查版本信息:开发人员或 DBA 使用 SELECT VERSION(); 检查 MySQL 服务器的版本信息,以确保兼容性。

查看当前日期和时间

命令:

SELECT NOW();

实际案例:

  • 记录日志:开发人员或 DBA 使用 SELECT NOW(); 获取当前日期和时间,用于记录日志或进行时间戳比对。

9. 高级查询

聚合函数

计数

命令:

SELECT COUNT(*) FROM [table_name];

示例:

SELECT COUNT(*) FROM employees;

实际案例:

  • 统计员工总数:HR 系统中统计公司员工总数。
求和

命令:

SELECT SUM([column]) FROM [table_name];

示例:

SELECT SUM(salary) FROM employees;

实际案例:

  • 计算总工资支出:计算公司总工资支出。
平均值

命令:

SELECT AVG([column]) FROM [table_name];

示例:

SELECT AVG(salary) FROM employees;

实际案例:

  • 计算平均工资:计算员工的平均工资。
最大值和最小值

命令:

SELECT MAX([column]), MIN([column]) FROM [table_name];

示例:

SELECT MAX(salary), MIN(salary) FROM employees;

实际案例:

  • 找出最高和最低工资:找出公司最高和最低工资。

分组查询

命令:

SELECT [column], COUNT(*) FROM [table_name] GROUP BY [column];

示例:

SELECT position, COUNT(*) FROM employees GROUP BY position;

实际案例:

  • 统计职位员工数量:统计每个职位的员工数量。

多表连接

内连接

命令:

SELECT [columns] FROM [table1]
JOIN [table2] ON [table1.column] = [table2.column];

示例:

SELECT employees.name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.department_id;

实际案例:

  • 查询员工所属部门:查询员工所属的部门信息。
左连接

命令:

SELECT [columns] FROM [table1]
LEFT JOIN [table2] ON [table1.column] = [table2.column];

示例:

SELECT employees.name, orders.order_id
FROM employees
LEFT JOIN orders ON employees.employee_id = orders.employee_id;

实际案例:

  • 查询员工及其订单信息:查询所有员工及其订单信息(包括没有订单的员工)。
右连接

命令:

SELECT [columns] FROM [table1]
RIGHT JOIN [table2] ON [table1.column] = [table2.column];

示例:

SELECT employees.name, orders.order_id
FROM employees
RIGHT JOIN orders ON employees.employee_id = orders.employee_id;

实际案例:

  • 查询订单及其相关员工信息:查询所有订单及其相关员工信息(包括没有关联员工的订单)。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇