当前位置: 首页 > news >正文

数据库笔记

数据库结构解析

数据库结构通常分为三层:外模式(用户视图)、概念模式(逻辑设计)和内模式(物理存储)。核心组件包括表、字段、索引、约束(如主键、外键)以及视图。关系型数据库遵循ACID原则(原子性、一致性、隔离性、持久性),而非关系型数据库(如MongoDB)采用文档或键值存储。

-- 示例:查看表结构
DESCRIBE employees;

建库建表

创建数据库需定义字符集和排序规则,建表时需明确字段类型(如VARCHAR, INT)和约束。主键确保唯一性,外键维护表间关系。

-- 创建数据库
CREATE DATABASE company CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 创建表
CREATE TABLE employees (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,dept_id INT,FOREIGN KEY (dept_id) REFERENCES departments(id)
);

查询基础

基础查询包括SELECT、WHERE筛选、GROUP BY分组和ORDER BY排序。聚合函数(如COUNT, SUM)常与GROUP BY配合使用。

-- 条件查询示例
SELECT name, salary 
FROM employees 
WHERE salary > 5000 
ORDER BY hire_date DESC;

JOIN操作

JOIN用于关联多张表,常见类型包括INNER JOIN(交集)、LEFT JOIN(左表全保留)和RIGHT JOIN。需注意关联字段的索引性能。

-- INNER JOIN示例
SELECT e.name, d.dept_name
FROM employees e
INNER JOIN departments d ON e.dept_id = d.id;

进阶知识点

索引优化
创建索引加速查询,但过多索引影响写入性能。复合索引需遵循最左前缀原则。

-- 创建复合索引
CREATE INDEX idx_name_dept ON employees(name, dept_id);

事务控制
使用BEGIN, COMMIT, ROLLBACK管理事务,隔离级别(如READ COMMITTED)影响并发行为。

-- 事务示例
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

窗口函数
适用于分组计算但不合并行的场景,如排名、累积求和。

-- 计算部门薪资排名
SELECT name, salary,RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rank
FROM employees;

存储过程与触发器
存储过程封装复杂逻辑,触发器自动响应数据变更。

-- 存储过程示例
CREATE PROCEDURE raise_salary(IN emp_id INT, IN amount DECIMAL)
BEGINUPDATE employees SET salary = salary + amount WHERE id = emp_id;
END;
http://www.xdnf.cn/news/738055.html

相关文章:

  • 近屿智能第六代 AI 得贤招聘官首秀 —— 解锁「拟人化智能交互」AI面试新体验
  • 《计算机操作系统-慕课版》期末复习题库与内容梳理
  • 5G 核心网 NGAP UE-TNL 偶联和绑定
  • azure web app创建分步指南系列之一
  • Bootstrap:精通级教程(VIP10万字版)
  • Splunk Attack Analyzer 深度解析:技术、技巧与最佳实践
  • 目标人群精准洞察,打造超差异化内容
  • 投稿 IEEE Transactions on Knowledge and Data Engineering 注意事项
  • RAG中的chunk以及评测方法
  • 详解Seata的四种事务模式:AT、TCC、SAGA、XA
  • 深入浅出网络分析与故障检测工具
  • Chrome插件学习笔记(二)
  • C++核心编程_赋值运算符重载
  • 2025最新Nginx安装配置保姆级教程(Windows)
  • 《JavaScript高级程序设计》读书笔记 34 - 代理基础
  • 【术语扫盲】BSP与MSP
  • FreeRTOS多任务系统①
  • Vector - VT System - 板卡_VT板卡使用介绍目录
  • 【Redis】hash
  • LevelDB、BoltDB 和 RocksDB区块链应用比较
  • 前端基础之《Vue(17)—路由集成》
  • 【C/C++】无限长有序数组中查找特定元素
  • 语音通信接通率、应答率和转化率有什么区别?
  • (20)Java 在 AI ML 领域应用
  • Spring AI开发跃迁指南(第二章:急速上手5——Spring AI 结构化输出源码级原理详解及使用实例)
  • 电动飞行器(eVTOL)动力测试实验室系统方案
  • JavaScript正则表达式
  • 精通 Kubernetes:从故障排除到化繁为简
  • MySql--定义表存储引擎、字符集和排序规则
  • 前端面试题目-高频问题集合