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

简介: 教程来源 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

相关文章
|
14天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23497 11
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
3天前
|
人工智能 BI 持续交付
Claude Code 深度适配 DeepSeek V4-Pro 实测:全场景通关与真实体验报告
在 AI 编程工具日趋主流的今天,Claude Code 凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但随着原生模型账号稳定性问题频发,寻找一套兼容、稳定、能力在线的替代方案变得尤为重要。DeepSeek V4-Pro 作为新一代高性能大模型,提供了完整兼容 Claude 协议的 API 接口,只需简单配置即可无缝驱动 Claude Code,且在任务执行、工具调用、复杂流程处理上表现极为稳定。
1042 0
|
8天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
1952 4
|
18天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
5654 21
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
19天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
6764 16
|
7天前
|
前端开发 API 内存技术
对比claude code等编程cli工具与deepseek v4的适配情况
DeepSeek V4发布后,多家编程工具因未适配其强制要求的`reasoning_content`字段而报错。本文对比Claude Code、GitHub Copilot、Langcli、OpenCode及DeepSeek-TUI等主流工具的兼容性:Claude Code需按官方方式配置;Langcli表现最佳,开箱即用且无报错;Copilot与OpenCode暂未修复问题;DeepSeek-TUI尚处早期阶段。
1250 3
对比claude code等编程cli工具与deepseek v4的适配情况
|
7天前
|
人工智能 前端开发 测试技术
Qoder Skills 完全指南:从零开始,让 AI 按你的标准执行
文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。