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

简介: 教程来源 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字)
124 0
游戏安全运营中,如何用IP代理识别服务快速检测作弊网络出口?操作指南来了
|
1月前
|
关系型数据库 分布式数据库 数据库
RAG 不一定要外挂,数据库里就能原生实现
PolarSearch是PolarDB内置的智能搜索引擎,将全文检索、向量检索、结构化查询与大模型调用深度集成于同一数据库内核,实现RAG全流程“入库即向量化、查询即生成”,显著提升准确性、实时性与数据一致性,大幅降低架构复杂度与运维成本。
172 0
|
1月前
|
监控 NoSQL 物联网
全套智慧工地系统源码开源,可直接部署落地
智慧工地云平台源码,基于微服务架构(Spring Cloud+Java),支持PC/手机/平板多端协同与数据同步;集成IoT智能监控、AI预警、数字孪生大屏及实名制管理等核心功能,适配施工企业、现场项目与住建监管多场景需求。
141 0
|
3天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
8121 36
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
3天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
476 2
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
3天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
539 4
|
3天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
690 149
|
3天前
|
人工智能 缓存 自然语言处理
阿里Qwen3.7-Max评测:Agent能力显著提升,耗时与调用成本大幅下降
阿里云百炼推出面向智能体的旗舰大模型Qwen3.7-Max,具备长周期自主执行能力,显著提升编程、办公自动化等复杂任务处理水平;支持MCP集成与多框架兼容,并以限时5折+100万Tokens免费试用大幅降低使用门槛,助力企业高效落地AI应用。在阿里云百炼平台快速体验:https://t.aliyun.com/U/fPVHqY
1913 10
|
3天前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
1317 2

热门文章

最新文章