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;
相关推荐
月光水岸New1 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6751 小时前
数据库基础1
数据库
我爱松子鱼1 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)3 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231113 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白3 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码3 小时前
【SQL实验】触发器
数据库·笔记·sql