温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL命令整理

发布时间:2021-08-31 23:17:30 来源:亿速云 阅读:192 作者:chen 栏目:数据库
# 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 表名; 

数据操作语言(DML)

插入数据

-- 单行插入 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 行数]; 

数据查询语言(DQL)

基础查询

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备份

# 备份单个数据库 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分析

EXPLN SELECT ...; 

优化建议

  1. 合理设计索引
  2. 避免SELECT *
  3. 使用连接代替子查询
  4. 适当拆分大表
  5. 优化数据类型
  6. 使用缓存
  7. 定期维护表(ANALYZE TABLE, OPTIMIZE TABLE)

慢查询日志

-- 开启慢查询 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字版本需要扩展每个章节的详细说明、使用场景、注意事项和实际案例) “`

向AI问一下细节
推荐阅读:
  1. MySQL命令讲析
  2. mysql命令

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI