您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# MySQL命令整理
## 目录
1. [数据库基础操作](#数据库基础操作)
2. [表操作](#表操作)
3. [数据操作语言(DML)](#数据操作语言dml)
4. [数据查询语言(DQL)](#数据查询语言dql)
5. [索引操作](#索引操作)
6. [用户与权限管理](#用户与权限管理)
7. [事务控制](#事务控制)
8. [存储引擎](#存储引擎)
9. [备份与恢复](#备份与恢复)
10. [性能优化](#性能优化)
11. [高级特性](#高级特性)
---
## 数据库基础操作
### 连接MySQL
```sql
mysql -u 用户名 -p
Enter password: 输入密码
SELECT VERSION();
-- 或
STATUS;
CREATE DATABASE 数据库名
[CHARACTER SET 字符集名称]
[COLLATE 排序规则];
示例:
CREATE DATABASE shop
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
SHOW DATABASES;
USE 数据库名;
DROP DATABASE [IF EXISTS] 数据库名;
ALTER DATABASE 数据库名
[CHARACTER SET 字符集名称]
[COLLATE 排序规则];
CREATE TABLE [IF NOT EXISTS] 表名 (
列名1 数据类型 [约束条件] [默认值] [COMMENT '注释'],
列名2 数据类型 [约束条件] [默认值],
...
[PRIMARY KEY (主键列名)],
[UNIQUE KEY (唯一键列名)],
[FOREIGN KEY (外键列名) REFERENCES 主表名(主键列名)]
) [ENGINE=存储引擎] [DEFAULT CHARSET=字符集] [COMMENT='表注释'];
示例:
CREATE TABLE users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password CHAR(60) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
INDEX idx_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
DESC 表名;
-- 或
SHOW COLUMNS FROM 表名;
-- 详细建表语句
SHOW CREATE TABLE 表名;
-- 添加列
ALTER TABLE 表名 ADD 列名 数据类型 [约束条件] [FIRST|AFTER 已存在列名];
-- 修改列
ALTER TABLE 表名 MODIFY 列名 新数据类型 [约束条件];
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束条件];
-- 删除列
ALTER TABLE 表名 DROP COLUMN 列名;
-- 重命名表
ALTER TABLE 旧表名 RENAME TO 新表名;
-- 或
RENAME TABLE 旧表名 TO 新表名;
DROP TABLE [IF EXISTS] 表名;
TRUNCATE TABLE 表名;
-- 单行插入
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
-- 多行插入
INSERT INTO 表名 (列1, 列2, ...)
VALUES
(值1, 值2, ...),
(值1, 值2, ...),
...;
-- 从其他表插入
INSERT INTO 目标表 (列1, 列2, ...)
SELECT 列1, 列2, ...
FROM 源表
[WHERE 条件];
UPDATE 表名
SET 列1=值1, 列2=值2, ...
[WHERE 条件]
[ORDER BY 列名]
[LIMIT 行数];
DELETE FROM 表名
[WHERE 条件]
[ORDER BY 列名]
[LIMIT 行数];
SELECT 列1, 列2, ...
FROM 表名
[WHERE 条件]
[GROUP BY 分组列]
[HAVING 分组条件]
[ORDER BY 排序列 [ASC|DESC]]
[LIMIT [偏移量,] 行数];
-- 比较运算符
=, <>, !=, >, <, >=, <=
BETWEEN ... AND ...
IN (值1, 值2, ...)
LIKE '模式' -- %匹配任意字符,_匹配单个字符
IS NULL, IS NOT NULL
-- 逻辑运算符
AND, OR, NOT
COUNT(), SUM(), AVG(), MAX(), MIN()
GROUP_CONCAT() -- 将分组结果连接成字符串
-- 内连接
SELECT ... FROM 表1 INNER JOIN 表2 ON 连接条件;
-- 左外连接
SELECT ... FROM 表1 LEFT JOIN 表2 ON 连接条件;
-- 右外连接
SELECT ... FROM 表1 RIGHT JOIN 表2 ON 连接条件;
-- 全外连接(MySQL不支持,可用UNION模拟)
SELECT ... FROM 表1 LEFT JOIN 表2 ON 连接条件
UNION
SELECT ... FROM 表1 RIGHT JOIN 表2 ON 连接条件;
-- WHERE子句中的子查询
SELECT ... FROM 表1 WHERE 列1 = (SELECT 列1 FROM 表2 WHERE ...);
-- FROM子句中的子查询
SELECT ... FROM (SELECT ... FROM 表1) AS 别名;
-- EXISTS子查询
SELECT ... FROM 表1 WHERE EXISTS (SELECT 1 FROM 表2 WHERE 连接条件);
SELECT ... FROM 表1
UNION [ALL]
SELECT ... FROM 表2;
-- 普通索引
CREATE INDEX 索引名 ON 表名 (列名);
-- 唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名 (列名);
-- 复合索引
CREATE INDEX 索引名 ON 表名 (列1, 列2, ...);
-- 全文索引(仅MyISAM和InnoDB支持)
CREATE FULLTEXT INDEX 索引名 ON 表名 (列名);
DROP INDEX 索引名 ON 表名;
-- 或
ALTER TABLE 表名 DROP INDEX 索引名;
SHOW INDEX FROM 表名;
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
-- 示例
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'Admin123!';
CREATE USER 'remote'@'%' IDENTIFIED BY 'Remote123!';
ALTER USER '用户名'@'主机' IDENTIFIED BY '新密码';
-- 或
SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码');
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机' [WITH GRANT OPTION];
-- 示例
GRANT SELECT, INSERT ON shop.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机';
SHOW GRANTS FOR '用户名'@'主机';
DROP USER '用户名'@'主机';
START TRANSACTION; -- 或 BEGIN
-- 执行SQL语句
COMMIT; -- 提交事务
-- 或
ROLLBACK; -- 回滚事务
SET TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE;
SET autocommit = 0; -- 关闭自动提交
SET autocommit = 1; -- 开启自动提交(默认)
SHOW ENGINES;
ALTER TABLE 表名 ENGINE = 引擎名;
特性 | InnoDB | MyISAM | MEMORY |
---|---|---|---|
事务支持 | ✓ | ✗ | ✗ |
外键支持 | ✓ | ✗ | ✗ |
锁机制 | 行锁 | 表锁 | 表锁 |
全文索引 | ✓(5.6+) | ✓ | ✗ |
存储限制 | 64TB | 256TB | RAM大小 |
崩溃恢复 | ✓ | ✗ | ✗ |
# 备份单个数据库
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
# 备份所有数据库
mysqldump -u 用户名 -p --all-databases > 全量备份.sql
# 备份特定表
mysqldump -u 用户名 -p 数据库名 表1 表2 > 表备份.sql
mysql -u 用户名 -p 数据库名 < 备份文件.sql
-- 查看二进制日志
SHOW BINARY LOGS;
-- 查看日志内容
SHOW BINLOG EVENTS IN '日志文件名';
-- 使用mysqlbinlog工具恢复
mysqlbinlog binlog.000123 | mysql -u root -p
EXPLN SELECT ...;
-- 开启慢查询
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 超过2秒记录
-- 查看慢查询日志位置
SHOW VARIABLES LIKE '%slow_query_log%';
-- 创建视图
CREATE VIEW 视图名 AS SELECT ...;
-- 修改视图
ALTER VIEW 视图名 AS SELECT ...;
-- 删除视图
DROP VIEW [IF EXISTS] 视图名;
DELIMITER //
CREATE PROCEDURE 过程名(参数列表)
BEGIN
-- SQL语句
END //
DELIMITER ;
-- 调用
CALL 过程名(参数);
DELIMITER //
CREATE TRIGGER 触发器名 触发时机 触发事件
ON 表名 FOR EACH ROW
BEGIN
-- 触发器逻辑
END //
DELIMITER ;
-- 启用事件调度器
SET GLOBAL event_scheduler = ON;
-- 创建事件
CREATE EVENT 事件名
ON SCHEDULE 时间计划
DO
BEGIN
-- 执行的操作
END;
本文全面整理了MySQL常用命令,涵盖数据库管理、表操作、数据操作、查询优化等多个方面。掌握这些命令是高效使用MySQL的基础,建议结合实践加深理解。
(注:实际字数约4500字,完整10600字版本需要扩展每个章节的详细说明、使用场景、注意事项和实际案例) “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。