初级程序员必备的十大技能之计算机基础必备(四)

简介: 教程来源 http://lemci.cn 本节系统讲解数据库核心知识:涵盖关系型与非关系型数据库对比;SQL增删改查、多表JOIN、事务及EXPLAIN优化;B+树索引原理与失效场景;连接池机制与实践;以及三大范式驱动的规范化设计。理论结合代码,助力高效、可靠的数据持久化开发。

四、数据库:数据的持久化存储

4.1 关系型数据库与非关系型数据库
image.png
4.2 SQL 核心知识

-- 1. 数据库操作
CREATE DATABASE myapp;
USE myapp;

-- 2. 表操作
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 3. 索引(性能优化关键)
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_age ON users(age);
-- 复合索引
CREATE INDEX idx_users_age_email ON users(age, email);

-- 4. 增删改查
-- 插入
INSERT INTO users (username, email, age) VALUES ('zhangsan', 'zs@example.com', 25);

-- 查询
SELECT * FROM users WHERE age > 18 ORDER BY created_at DESC LIMIT 10;
SELECT COUNT(*) FROM users WHERE age BETWEEN 18 AND 30;
SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 5;

-- 更新
UPDATE users SET age = 26 WHERE username = 'zhangsan';

-- 删除
DELETE FROM users WHERE username = 'zhangsan';

-- 5. 多表查询(JOIN)
-- 内连接
SELECT u.username, o.order_amount 
FROM users u 
INNER JOIN orders o ON u.id = o.user_id;

-- 左连接(即使没有订单的用户也会显示)
SELECT u.username, COALESCE(o.order_amount, 0) as amount
FROM users u 
LEFT JOIN orders o ON u.id = o.user_id;

-- 6. 事务(保证数据一致性)
BEGIN TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
    -- 如果中间出错,执行 ROLLBACK
COMMIT;

-- 7. 查询优化分析
EXPLAIN SELECT * FROM users WHERE email = 'zs@example.com';

4.3 索引的工作原理
索引类似于书的目录,能大幅提升查询速度,但会降低写入速度。

// 索引底层使用 B+ 树(平衡多路搜索树)
// B+ 树特点:
// 1. 所有数据都在叶子节点
// 2. 叶子节点之间有链表连接(范围查询高效)
// 3. 节点存储多个键值(降低树高度)

// 无索引查询:全表扫描 O(n)
// 有索引查询:B+树查找 O(log n)

// 索引失效的场景
SELECT * FROM users WHERE age + 1 = 26;      -- ❌ 对列进行运算
SELECT * FROM users WHERE UPPER(name) = 'ZHANG'; -- ❌ 使用函数
SELECT * FROM users WHERE name LIKE '%三%';   -- ❌ 前导模糊匹配
SELECT * FROM users WHERE age > 18 OR name = '李四'; -- ⚠️ OR 可能失效

4.4 数据库连接池

// Node.js + MySQL 连接池示例
const mysql = require('mysql2');

const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'myapp',
    waitForConnections: true,
    connectionLimit: 10,      // 最大连接数
    queueLimit: 0,            // 队列无限制
    enableKeepAlive: true,
    keepAliveInitialDelay: 0
});

// 使用连接池执行查询
async function query(sql, params) {
    const [rows] = await pool.promise().execute(sql, params);
    return rows;
}

// 连接池的好处
// 1. 复用连接,避免频繁创建/销毁开销
// 2. 限制并发连接数,防止数据库过载
// 3. 自动管理连接生命周期

4.5 数据库设计原则
三大范式
image.png

-- 违反第三范式的示例
CREATE TABLE orders_bad (
    order_id INT PRIMARY KEY,
    user_id INT,
    user_name VARCHAR(50),   -- 依赖 user_id,不是直接依赖 order_id
    product_id INT,
    product_name VARCHAR(50) -- 依赖 product_id
);

-- 符合第三范式
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    product_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (product_id) REFERENCES products(id)
);

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

来源:
http://xcfsr.cn

相关文章
|
1月前
|
弹性计算 安全 数据可视化
2026低代码平台排名综合测评:六大维度量化与选型指南
2026 年,在政策引导与技术迭代的双重驱动下,低代码开发平台已从企业数字化的 "可选工具" 转变为 "核心标配"。据艾瑞咨询最新数据,中国低代码市场规模已突破 131 亿元,年复合增长率稳定在 20% 以上,越来越多的企业选择通过低代码技术加速业务系统搭建。
|
1月前
|
缓存 自然语言处理 安全
游戏安全运营中,如何用IP代理识别服务快速检测作弊网络出口?操作指南来了
某MMO开服即遭工作室刷榜,IP 3小时轮换200+网段。依托IP数据云离线库,基于net_type、risk_score等20+维度,毫秒级识别作弊网络出口,误判率<0.5%,单机QPS超250万,助力游戏安全从“封IP”升级为实时出口风控。(239字)
147 0
游戏安全运营中,如何用IP代理识别服务快速检测作弊网络出口?操作指南来了
|
1月前
|
关系型数据库 分布式数据库 数据库
RAG 不一定要外挂,数据库里就能原生实现
PolarSearch是PolarDB内置的智能搜索引擎,将全文检索、向量检索、结构化查询与大模型调用深度集成于同一数据库内核,实现RAG全流程“入库即向量化、查询即生成”,显著提升准确性、实时性与数据一致性,大幅降低架构复杂度与运维成本。
189 0
|
1月前
|
监控 NoSQL 物联网
全套智慧工地系统源码开源,可直接部署落地
智慧工地云平台源码,基于微服务架构(Spring Cloud+Java),支持PC/手机/平板多端协同与数据同步;集成IoT智能监控、AI预警、数字孪生大屏及实名制管理等核心功能,适配施工企业、现场项目与住建监管多场景需求。
167 0
|
2天前
|
云安全 人工智能 运维
阿里云SecOps Agent,全新安全跨产品执行体验
自然语言驱动 云安全中心/WAF/CFW/ 等多款安全产品联动
1583 2
|
2天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
482 2
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
13天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
14天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
874 11
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
2天前
|
数据采集 人工智能 搜索推荐
企业智能体的下半场,如何让智能体越用越聪明?
AgentLoop 正在邀测期,点击申请邀测资格。
192 124