MySQL命令

目录

1、初级

一、连接和退出

[1. 连接到 MySQL](#1. 连接到 MySQL)

[2. 退出 MySQL](#2. 退出 MySQL)

二、数据库操作

[1. 显示数据库列表](#1. 显示数据库列表)

[2. 创建数据库](#2. 创建数据库)

[3. 使用数据库](#3. 使用数据库)

[4. 删除数据库](#4. 删除数据库)

三、表操作

[1. 显示当前数据库中的表](#1. 显示当前数据库中的表)

[2. 创建表](#2. 创建表)

[3. 查看表结构](#3. 查看表结构)

[4. 删除表](#4. 删除表)

[5. 修改表](#5. 修改表)

四、数据操作

[1. 插入数据](#1. 插入数据)

[2. 查询数据](#2. 查询数据)

[3. 更新数据](#3. 更新数据)

[4. 删除数据](#4. 删除数据)

五、用户管理

[1. 创建用户](#1. 创建用户)

[2. 授予权限](#2. 授予权限)

[3. 查看用户权限](#3. 查看用户权限)

[4. 撤销权限](#4. 撤销权限)

[5. 删除用户](#5. 删除用户)

六、备份和恢复

[1. 备份数据库](#1. 备份数据库)

[2. 恢复数据库](#2. 恢复数据库)

七、常用高级命令

[1. 查看正在运行的查询](#1. 查看正在运行的查询)

[2. 杀死一个查询](#2. 杀死一个查询)

[3. 查看表状态](#3. 查看表状态)

[4. 查看服务器状态](#4. 查看服务器状态)

2、高级

一、分页查询

[1. 使用 LIMIT 和 OFFSET](#1. 使用 LIMIT 和 OFFSET)

[2. 示例](#2. 示例)

二、嵌套查询(子查询)

[1. 基本嵌套查询](#1. 基本嵌套查询)

[2. 示例](#2. 示例)

[3. 使用 IN 和子查询](#3. 使用 IN 和子查询)

[4. 示例](#4. 示例)

三、联合查询(JOIN)

[1. 内连接 (INNER JOIN)](#1. 内连接 (INNER JOIN))

[2. 左连接 (LEFT JOIN)](#2. 左连接 (LEFT JOIN))

[3. 右连接 (RIGHT JOIN)](#3. 右连接 (RIGHT JOIN))

[4. 示例](#4. 示例)

四、其他高级查询

[1. 计算字段(计算列)](#1. 计算字段(计算列))

[2. 使用 CASE 实现条件逻辑](#2. 使用 CASE 实现条件逻辑)

[3. 分组和聚合](#3. 分组和聚合)


1、初级

MySQL 提供了丰富的命令集用于数据库管理和操作。以下是一些常用的 MySQL 命令,按功能分类:

一、连接和退出

1. 连接到 MySQL
复制代码
mysql -u username -p

提示输入密码后,输入你指定的用户名和密码。

2. 退出 MySQL
复制代码
exit;

二、数据库操作

1. 显示数据库列表
复制代码
SHOW DATABASES;
2. 创建数据库
复制代码
CREATE DATABASE database_name;
3. 使用数据库
复制代码
USE database_name;
4. 删除数据库
复制代码
DROP DATABASE database_name;

三、表操作

1. 显示当前数据库中的表
复制代码
SHOW TABLES;
2. 创建表
复制代码
CREATE TABLE table_name (
    column1_name column1_datatype,
    column2_name column2_datatype,
    ...
);
3. 查看表结构
复制代码
DESCRIBE table_name;
4. 删除表
复制代码
DROP TABLE table_name;
5. 修改表
  • 添加列:

    复制代码
    ALTER TABLE table_name ADD column_name column_datatype;
  • 删除列:

    复制代码
    ALTER TABLE table_name DROP COLUMN column_name;
  • 修改列:

    复制代码
    ALTER TABLE table_name MODIFY COLUMN column_name column_datatype;

四、数据操作

1. 插入数据
复制代码
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
2. 查询数据
复制代码
SELECT column1, column2, ... FROM table_name;
  • 查询所有列:

    复制代码
    SELECT * FROM table_name;
  • 带条件查询:

    复制代码
    SELECT * FROM table_name WHERE condition;
3. 更新数据
复制代码
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
4. 删除数据
复制代码
DELETE FROM table_name WHERE condition;

五、用户管理

1. 创建用户
复制代码
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
2. 授予权限
复制代码
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
  • 刷新权限:

    复制代码
    FLUSH PRIVILEGES;
3. 查看用户权限
复制代码
SHOW GRANTS FOR 'username'@'host';
4. 撤销权限
复制代码
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
5. 删除用户
复制代码
DROP USER 'username'@'host';

六、备份和恢复

1. 备份数据库

在命令行中使用 mysqldump 工具:

复制代码
mysqldump -u username -p database_name > backup_file.sql
2. 恢复数据库

在命令行中使用 mysql 工具:

复制代码
mysql -u username -p database_name < backup_file.sql

七、常用高级命令

1. 查看正在运行的查询
复制代码
SHOW PROCESSLIST;
2. 杀死一个查询
复制代码
KILL query_id;
3. 查看表状态
复制代码
SHOW TABLE STATUS LIKE 'table_name';
4. 查看服务器状态
复制代码
SHOW STATUS;

MySQL 的分页查询和嵌套查询是常用的高级查询操作。以下是这些查询的详细说明和示例。

2、高级

一、分页查询

分页查询用于从大量数据中分段获取数据,从而提高查询效率和用户体验。

1. 使用 LIMITOFFSET

LIMIT 用于指定返回记录的最大数量,OFFSET 用于指定起始位置。

复制代码
SELECT column1, column2, ...
FROM table_name
LIMIT limit OFFSET offset;
2. 示例

假设你有一个名为 employees 的表,包含员工信息,每页显示 10 条记录:

  • 第一页:

    复制代码
    SELECT * FROM employees
    LIMIT 10 OFFSET 0;
  • 第二页:

    复制代码
    SELECT * FROM employees
    LIMIT 10 OFFSET 10;
  • 第三页:

    复制代码
    SELECT * FROM employees
    LIMIT 10 OFFSET 20;

二、嵌套查询(子查询)

嵌套查询是指在一个 SQL 查询中嵌套另一个查询,通常用于条件过滤、数据筛选等场景。

1. 基本嵌套查询

WHERE 子句中使用子查询:

复制代码
SELECT column1, column2, ...
FROM table_name
WHERE column_name = (SELECT column_name FROM another_table WHERE condition);
2. 示例

假设你有两个表 employeesdepartments,分别存储员工和部门信息,你希望查找属于特定部门的所有员工。

  • 查找部门名称为 "Sales" 的部门 ID:

    复制代码
    SELECT department_id
    FROM departments
    WHERE department_name = 'Sales';
  • 使用子查询查找属于 "Sales" 部门的所有员工:

    复制代码
    SELECT employee_name
    FROM employees
    WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');
3. 使用 IN 和子查询

当子查询返回多个结果时,可以使用 IN 关键字:

复制代码
SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (SELECT column_name FROM another_table WHERE condition);
4. 示例

查找属于多个部门的员工:

复制代码
SELECT employee_name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE department_name IN ('Sales', 'Marketing'));

三、联合查询(JOIN)

联合查询用于从多个表中查询相关数据。

1. 内连接 (INNER JOIN)

返回两个表中满足连接条件的记录。

复制代码
SELECT a.column1, b.column2, ...
FROM table1 a
INNER JOIN table2 b ON a.common_column = b.common_column;
2. 左连接 (LEFT JOIN)

返回左表的所有记录及其匹配的右表记录。

复制代码
SELECT a.column1, b.column2, ...
FROM table1 a
LEFT JOIN table2 b ON a.common_column = b.common_column;
3. 右连接 (RIGHT JOIN)

返回右表的所有记录及其匹配的左表记录。

复制代码
SELECT a.column1, b.column2, ...
FROM table1 a
RIGHT JOIN table2 b ON a.common_column = b.common_column;
4. 示例

假设有两个表 employeesdepartments,分别存储员工和部门信息:

  • 内连接查询员工及其所在部门:

    复制代码
    SELECT e.employee_name, d.department_name
    FROM employees e
    INNER JOIN departments d ON e.department_id = d.department_id;
  • 左连接查询所有员工及其所在部门(包括没有分配部门的员工):

    复制代码
    SELECT e.employee_name, d.department_name
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.department_id;
  • 右连接查询所有部门及其员工(包括没有员工的部门):

    复制代码
    SELECT e.employee_name, d.department_name
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.department_id;

四、其他高级查询

1. 计算字段(计算列)

在查询中对字段进行计算:

复制代码
SELECT column1, (column2 * column3) AS computed_column
FROM table_name;
2. 使用 CASE 实现条件逻辑
复制代码
SELECT employee_name,
       CASE 
           WHEN salary >= 50000 THEN 'High'
           WHEN salary >= 30000 THEN 'Medium'
           ELSE 'Low'
       END AS salary_level
FROM employees;
3. 分组和聚合

使用 GROUP BY 和聚合函数(如 COUNT, SUM, AVG):

复制代码
SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id;
相关推荐
o(╥﹏╥)44 分钟前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
阿里嘎多学长1 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_1 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端
Sunyanhui11 小时前
牛客网 SQL36查找后排序
数据库·sql·mysql
老王笔记1 小时前
MHA binlog server
数据库·mysql
lovelin+v175030409662 小时前
安全性升级:API接口在零信任架构下的安全防护策略
大数据·数据库·人工智能·爬虫·数据分析
DT辰白3 小时前
基于Redis的网关鉴权方案与性能优化
数据库·redis·缓存
2401_871213303 小时前
mysql高阶语句
数据库·mysql
zxrhhm3 小时前
PostgreSQL的交互式终端使用一系列命令来获取有关文本搜索配置对象的信息
数据库·postgresql