[特殊字符] MySQL 常用指令大全

### 文章目录

  • [@TOC](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**一、数据库操作**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**二、数据表操作**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**三、数据操作(CRUD)**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**四、备份与恢复**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**五、用户与权限管理**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**六、高级查询**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**七、索引管理**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)
  • [**八、性能与状态**](#文章目录 @[TOC] 一、数据库操作 二、数据表操作 三、数据操作(CRUD) 四、备份与恢复 五、用户与权限管理 六、高级查询 七、索引管理 八、性能与状态)

一、数据库操作

sql 复制代码
-- 查看所有数据库
SHOW DATABASES;

-- 创建数据库(指定字符集)
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用/切换数据库
USE db_name;

-- 删除数据库
DROP DATABASE db_name;

-- 查看当前数据库
SELECT DATABASE();

二、数据表操作

sql 复制代码
-- 查看所有表
SHOW TABLES;

-- 查看表结构
DESC table_name;
-- 或
SHOW CREATE TABLE table_name;

-- 创建表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 修改表
ALTER TABLE users ADD COLUMN age INT;
ALTER TABLE users MODIFY COLUMN email VARCHAR(150);
ALTER TABLE users DROP COLUMN age;

-- 删除表
DROP TABLE users;

-- 清空表(保留结构)
TRUNCATE TABLE users;

三、数据操作(CRUD)

sql 复制代码
-- 插入数据
INSERT INTO users (username, email) VALUES ('zhangsan', 'zs@example.com');
INSERT INTO users VALUES (1, 'lisi', 'ls@example.com', NOW());

-- 查询数据
SELECT * FROM users;
SELECT id, username FROM users WHERE email IS NOT NULL ORDER BY created_at DESC LIMIT 10;

-- 更新数据
UPDATE users SET email = 'new@example.com' WHERE username = 'zhangsan';

-- 删除数据
DELETE FROM users WHERE id = 1;

四、备份与恢复

bash 复制代码
# 导出整个数据库
mysqldump -u root -p db_name > /path/backup.sql

# 导出多个数据库
mysqldump -u root -p --databases db1 db2 > backup.sql

# 导出所有数据库
mysqldump -u root -p --all-databases > all_backup.sql

# 导出指定表
mysqldump -u root -p db_name table1 table2 > tables_backup.sql

# 只导出表结构(不含数据)
mysqldump -u root -p --no-data db_name > structure.sql

# 远程导出
mysqldump -h host -P port -u user -p db_name > backup.sql
sql 复制代码
-- 导入SQL文件(MySQL命令行内)
SOURCE /path/backup.sql;

-- 导入指定数据库
mysql -u root -p db_name < backup.sql

五、用户与权限管理

sql 复制代码
-- 创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

-- 授权
GRANT ALL PRIVILEGES ON db_name.* TO 'newuser'@'localhost';
GRANT SELECT, INSERT ON db_name.table1 TO 'newuser'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

-- 查看用户权限
SHOW GRANTS FOR 'newuser'@'localhost';

-- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

-- 删除用户
DROP USER 'newuser'@'localhost';

六、高级查询

sql 复制代码
-- 去重
SELECT DISTINCT column FROM table;

-- 分组统计
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;

-- 联表查询
SELECT a.*, b.name FROM orders a LEFT JOIN customers b ON a.customer_id = b.id;

-- 子查询
SELECT * FROM products WHERE price > (SELECT AVG(price) FROM products);

-- 分页查询
SELECT * FROM table LIMIT 10 OFFSET 20;  -- 第3页,每页10条
SELECT * FROM table LIMIT 20, 10;         -- 同上

七、索引管理

sql 复制代码
-- 查看索引
SHOW INDEX FROM table_name;

-- 创建索引
CREATE INDEX idx_name ON table_name(column);
CREATE UNIQUE INDEX idx_unique ON table_name(column);

-- 删除索引
DROP INDEX idx_name ON table_name;

-- 添加主键
ALTER TABLE table_name ADD PRIMARY KEY (id);

八、性能与状态

sql 复制代码
-- 查看MySQL版本
SELECT VERSION();

-- 查看当前连接
SHOW PROCESSLIST;

-- 查看表状态
SHOW TABLE STATUS;

-- 查看慢查询日志是否开启
SHOW VARIABLES LIKE 'slow_query_log%';

-- 分析查询
EXPLAIN SELECT * FROM users WHERE username = 'zhangsan';

💡 小贴士

  • 生产环境操作前务必先备份:mysqldump
  • 大数据量删除用 TRUNCATEDELETE 快,但不可回滚
  • 字符串类型推荐用 utf8mb4 支持emoji
  • 重要操作先 BEGIN; 测试,确认无误再 COMMIT;
相关推荐
i220818 Faiz Ul几秒前
药店管理|基于springboot + vue药店管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·美食分享系统
不吃土豆的马铃薯5 分钟前
C++ 正则表达式入门详解
linux·服务器·网络·数据库·c++·正则表达式
sulikey7 分钟前
数据库系统概论 - 定义与查询 期末速成课笔记
数据库·笔记·期末考试·数据查询·期末速成·数据库系统概论·数据定义
nan madol14 分钟前
PolarDB 分布式版(PolarDB-X)
数据库
johnny23319 分钟前
数据库客户端:DBGate、DBX、dblab、SQLQueryStress、openhare、DBcooper、RedisME
数据库
IT策士25 分钟前
Redis 从入门到精通:缓存经典难题 —— 穿透、击穿、雪崩
数据库·redis·缓存
huisheng_qaq34 分钟前
【项目篇-01】Vmware虚拟机和环境安装配置
redis·mysql·canal·rocketmq·es·vaware虚拟机
湘美书院--湘美谈教育35 分钟前
湘美谈教育湘美书院考古教育系列:湖南史前文化序列整理
大数据·数据库·人工智能·深度学习·神经网络·机器学习
IT策士37 分钟前
Redis 从入门到精通:内存管理与淘汰策略
数据库·redis·缓存
承渊政道39 分钟前
【MySQL数据库学习】(MySQL内置函数)
数据库·学习·mysql·ubuntu·bash·数据库开发·数据库系统