尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
一文入门三大数据库:MySQL + MongoDB + Redis(基础 + 进阶完整版)
一、三大数据库定位速览数据库类型核心特点最适合的场景MySQL关系型SQL严格表结构、ACID 事务、复杂关联查询订单、账户、用户信息等强一致性业务MongoDB文档型NoSQL动态 Schema、JSON 文档存储、海量写入日志、爬虫数据、物联网、内容管理Redis内存型NoSQL纯内存操作、微秒级响应、丰富数据结构缓存、计数器、排行榜、分布式锁、会话存储二、MySQL 完整操作手册1. 连接与基础操作-- 连接数据库 mysql -u root -p -- 查看所有数据库 SHOW DATABASES; -- 创建数据库 CREATE DATABASE my_shop; -- 切换数据库 USE my_shop; -- 创建表 CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT, phone VARCHAR(20) UNIQUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 查看表结构 DESC users; -- 查看建表语句 SHOW CREATE TABLE users;2. 数据操作CRUD-- 插入记录 INSERT INTO users (name, age, phone) VALUES (张三, 25, 13800001111); INSERT INTO users (name, age, phone) VALUES (李四, 30, 13800002222); -- 批量插入 INSERT INTO users (name, age, phone) VALUES (王五, 28, 13800003333), (赵六, 22, 13800004444); -- 查询全表 SELECT * FROM users; -- 条件查询 SELECT * FROM users WHERE age 25; SELECT name, phone FROM users WHERE age BETWEEN 20 AND 30; -- 排序与分页 SELECT * FROM users ORDER BY age DESC LIMIT 10 OFFSET 0; -- 聚合查询 SELECT COUNT(*) AS total, AVG(age) AS avg_age FROM users; -- 分组查询 SELECT age, COUNT(*) AS count FROM users GROUP BY age HAVING count 1; -- 更新务必带条件 UPDATE users SET age 26 WHERE name 张三; -- 删除务必带条件 DELETE FROM users WHERE name 李四; -- 退出 EXIT;3. 索引-- 创建普通索引 CREATE INDEX idx_name ON users (name); -- 创建唯一索引 CREATE UNIQUE INDEX idx_phone ON users (phone); -- 创建联合索引注意字段顺序 CREATE INDEX idx_name_age ON users (name, age); -- 创建前缀索引针对长文本字段 CREATE INDEX idx_text_prefix ON articles (content(20)); -- 查看索引 SHOW INDEX FROM users; -- 删除索引 DROP INDEX idx_name ON users; -- 查看查询执行计划判断是否命中索引 EXPLAIN SELECT * FROM users WHERE name 张三;4. 视图-- 创建视图封装复杂查询 CREATE VIEW user_summary AS SELECT id, name, age, DATE_FORMAT(created_at, %Y-%m-%d) AS register_date FROM users WHERE age 18; -- 查询视图 SELECT * FROM user_summary; -- 查看所有视图 SHOW FULL TABLES WHERE table_type VIEW; -- 删除视图 DROP VIEW user_summary;5. 存储过程-- 创建存储过程 DELIMITER // CREATE PROCEDURE GetUserById(IN p_id INT, OUT p_name VARCHAR(50)) BEGIN SELECT name INTO p_name FROM users WHERE id p_id; END // DELIMITER ; -- 调用 CALL GetUserById(1, name); SELECT name; -- 删除 DROP PROCEDURE GetUserById;6. 触发器-- 创建触发器删除用户时记录日志 DELIMITER // CREATE TRIGGER before_delete_user BEFORE DELETE ON users FOR EACH ROW BEGIN INSERT INTO delete_log (user_id, name, delete_time) VALUES (OLD.id, OLD.name, NOW()); END // DELIMITER ; -- 查看所有触发器 SHOW TRIGGERS; -- 删除触发器 DROP TRIGGER before_delete_user;7. 数据导入导出# 导出整个数据库 mysqldump -u root -p my_shop my_shop_backup.sql # 导出单张表 mysqldump -u root -p my_shop users users_backup.sql # 导入 mysql -u root -p my_shop my_shop_backup.sql三、MongoDB 完整操作手册1. 连接与基础操作javascript// 连接 mongosh // 查看所有数据库 show dbs; // 切换/创建数据库 use my_shop; // 查看当前数据库中的集合 show collections;2. 数据操作CRUDjavascript// 插入单条文档 db.users.insertOne({ name: 张三, age: 25, phone: 13800001111, tags: [VIP, 新用户], address: { city: 北京, district: 朝阳 } }); // 批量插入 db.users.insertMany([ { name: 李四, age: 30, phone: 13800002222 }, { name: 王五, age: 28, phone: 13800003333 } ]); // 查询所有 db.users.find(); // 格式化输出 db.users.find().pretty(); // 条件查询 db.users.find({ age: { $gt: 25 } }); db.users.find({ age: { $gte: 20, $lte: 30 } }); // 查询指定字段1 包含0 排除 db.users.find({}, { name: 1, age: 1, _id: 0 }); // 排序与分页 db.users.find().sort({ age: -1 }).limit(10).skip(0); // 聚合计数 db.users.countDocuments({ age: { $gt: 25 } }); // 更新$set 设置字段$inc 数值增减 db.users.updateOne( { name: 张三 }, { $set: { age: 26 }, $inc: { loginCount: 1 } } ); // 替换整个文档慎用 db.users.replaceOne({ name: 张三 }, { name: 张三, age: 26 }); // 删除 db.users.deleteOne({ name: 李四 }); db.users.deleteMany({ age: { $lt: 18 } }); // 退出 exit;四、Redis 完整操作手册1. 连接与基础操作# 连接 redis-cli # 认证如设置了密码 AUTH your_password # 测试连通性 PING # 查看所有键 KEYS * # 查看键数量 DBSIZE # 查看键类型 TYPE user:name # 查看键剩余存活时间-1 永久-2 已过期 TTL verify_code # 删除键 DEL user:name # 清空当前库生产慎用 FLUSHDB # 清空所有库生产慎用 FLUSHALL # 退出 EXIT2. 字符串String# 存储 SET user:name 张三 # 获取 GET user:name # 存储带过期时间秒 SET verify_code 123456 EX 60 # 存储带过期时间毫秒 SET session:001 data PX 30000 # 不存在时才存储分布式锁用 SET lock:order locked NX EX 10 # 追加内容 APPEND user:name 先生 # 获取子串 GETRANGE user:name 0 2 # 设置新值并返回旧值 GETSET user:name 李四 # 数值自增不存在则从0开始 INCR page_view:home INCRBY page_view:home 10 DECR page_view:home DECRBY page_view:home 5 # 批量操作 MSET key1 value1 key2 value2 MGET key1 key23. 哈希Hash—— 存储对象# 设置单个字段 HSET user:1001 name 张三 age 25 city 北京 # 设置多个字段 HMSET user:1001 name 张三 age 25 # 获取单个字段 HGET user:1001 name # 获取所有字段及值 HGETALL user:1001 # 获取所有字段名 HKEYS user:1001 # 获取所有值 HVALS user:1001 # 获取字段数量 HLEN user:1001 # 字段自增 HINCRBY user:1001 loginCount 1 # 判断字段是否存在 HEXISTS user:1001 age # 删除字段 HDEL user:1001 city4. 列表List—— 消息队列、最新列表# 左侧推入头部 LPUSH comments 评论1 LPUSH comments 评论2 # 右侧推入尾部 RPUSH comments 评论3 # 左侧弹出移除并返回 LPOP comments # 右侧弹出 RPOP comments # 阻塞弹出队列为空时等待超时秒数 BLPOP comments 5 BRPOP comments 5 # 获取列表范围0 -1 表示全部 LRANGE comments 0 -1 LRANGE comments 0 9 # 最新10条 # 获取列表长度 LLEN comments # 获取指定下标元素 LINDEX comments 0 # 删除指定值count 0 从头删 0 从尾删 0 删除全部 LREM comments 1 评论1 # 裁剪列表只保留指定区间 LTRIM comments 0 95. 集合Set—— 标签、去重# 添加元素 SADD tags 科技 互联网 AI 大数据 # 查看所有元素 SMEMBERS tags # 判断元素是否存在 SISMEMBER tags AI # 获取集合大小 SCARD tags # 随机弹出一个元素移除 SPOP tags # 随机取出一个元素不移除 SRANDMEMBER tags # 随机取出多个元素 SRANDMEMBER tags 2 # 从集合移动元素到另一个集合 SMOVE tags archive AI # 差集set1 有 set2 没有 SDIFF set1 set2 # 交集 SINTER set1 set2 # 并集 SUNION set1 set2 # 存储结果到新集合 SINTERSTORE new_set set1 set26. 有序集合Sorted Set—— 排行榜、延迟队列# 添加成员及分数 ZADD rank 100 张三 ZADD rank 95 李四 ZADD rank 85 王五 # 按分数从低到高查看升序 ZRANGE rank 0 -1 ZRANGE rank 0 -1 WITHSCORES # 按分数从高到低查看降序 ZREVRANGE rank 0 -1 ZREVRANGE rank 0 -1 WITHSCORES # 查看成员分数 ZSCORE rank 张三 # 增加分数 ZINCRBY rank 1 张三 # 获取排名0 开始 ZRANK rank 张三 # 升序排名 ZREVRANK rank 张三 # 降序排名 # 按分数区间查询 ZRANGEBYSCORE rank 80 100 ZRANGEBYSCORE rank 80 100 WITHSCORES LIMIT 0 5 # 按分数区间删除 ZREMRANGEBYSCORE rank 0 50 # 按排名区间删除 ZREMRANGEBYRANK rank 0 2 # 删除成员 ZREM rank 王五9. 持久化配置bash# 手动触发 RDB 持久化 SAVE # 阻塞主进程 BGSAVE # 后台子进程执行 # 触发 AOF 重写 BGREWRITEAOF # 查看持久化状态 INFO persistence10. 数据备份与恢复# 查看 RDB 文件位置 CONFIG GET dir CONFIG GET dbfilename # 手动备份 cp /var/lib/redis/dump.rdb /backup/dump_$(date %Y%m%d).rdb # 恢复停止 Redis覆盖文件重启五、三种数据库核心特性对比特性MySQLMongoDBRedis数据模型二维表行 列JSON 文档Key-Value 多种结构Schema严格固定动态灵活无事务完整 ACID多文档事务有限不支持回滚索引类型BTree、全文、空间单字段、复合、文本、地理、TTLKey 本身为主索引聚合能力GROUP BY 强大聚合管道丰富有限需应用层关联查询JOIN 完善$lookup性能一般不支持持久化双写 binlog检查点 journalRDB AOF内存管理Buffer Pool可配置WiredTiger Cache全内存 淘汰策略读写性能万级 QPS万级 QPS十万级 QPS典型场景账务、订单、用户日志、爬虫、内容管理缓存、计数器、排行榜、分布式锁
RELATED

相关推荐

ARM官方ML-KWS-for-MCU源码审计:Cortex-M边缘AI唤醒词部署全解析

ARM官方ML-KWS-for-MCU源码审计:Cortex-M边缘AI唤醒词部署全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/11 14:34:20
基于协同过滤算法的音乐推荐系统设计与实现(源码+文档+部署讲解等)

基于协同过滤算法的音乐推荐系统设计与实现(源码+文档+部署讲解等)

联系博主 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 …

📅 2026/10/3 15:46:01
前端文件预览实战:从PDF到Office的通用组件封装指南

前端文件预览实战:从PDF到Office的通用组件封装指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/19 20:48:11
MORE NEWS

更多资讯

📰

博乐电工证培训怎么报名?证书过期了不知道怎么复审延期?信阳电工从业者必看

博乐电工证培训怎么报名?证书过期了不知道怎么复审延期?信阳电工从业者必看 证书过期了不知道怎么复审延期?是不是你最近也遇到了类似的情况?特别是像你这样在 信阳公路工程…

📰

电工证审核要多久怎么报名学历不高也能考

电工证审核要多久怎么报名学历不高也能考 你是不是也担心学历不高报不了名?其实很多过来人都说,只要资料齐全, 电工证审核要多久 根本不影响报名,关键是 怎么报名…

📰

电工证办证流程保姆级教程:工地太忙根本没时间复习考试

电工证办证流程保姆级教程:工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这几乎是每个一线电工的真实写照。但不管多忙, 电工证…

📰

考电工证要多少学时全流程办理指南

电工证要多少学时?2026河南最新政策下如何高效报考 现在找工作处处要证, 电工证 更是不少建筑、制造、电力相关岗位的“硬门槛”。尤其是河南地区的中小型施工企业,像许昌这类地方,对持证上岗要求越来越严格,不及时考取或更新证件,别说找工作,连…

📰

电工证审核要多久 急需上岗必备的特种作业证怎么搞

电工证审核要多久 急需上岗必备的特种作业证怎么搞 你是不是正盯着招聘网站上的电工岗位,心里直打鼓?缺个电工证,连面试机会都没有。电工证不仅是上岗必备的门槛,更是你职业发展的“身份证”。但问题来了, 电工证审核要多久…

📰

营口学电工证在哪里考多少钱能办下来

营口学电工证在哪里考多少钱能办下来 之前考的证在外省能不能转过来?这几乎是每个想在营口考电工证或者打算把外地证转过来的人最关心的问题。现在很多人拿着外地的电工证,想要在营口上岗或者换证,但流程复杂、政策多变,一不小心就可能出错,甚至白花钱。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬