# SQL 文档模板 ## 元数据 - 需求编号: - 创建时间:YYYY-MM-DD - 创建人: - 版本:1.0.0 - 文档类型:数据库设计文档/SQL查询文档/存储过程文档/数据流程文档 ## 数据库基本信息 - **数据库系统**:MySQL/PostgreSQL/Oracle/其他 - **数据库名称**: - **版本**: - **环境**:开发/测试/生产 ## 文档概述 - **文档目标**: - **适用范围**: - **使用对象**: ## 数据库结构 ### 数据库关系图 ``` [数据库表关系的可视化表示] ``` ### 表结构 #### 表 1:[表名] - **描述**: - **表结构**: | 字段名 | 数据类型 | 约束 | 默认值 | 描述 | | ------ | ------ | ---- | ------ | ---- | | id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | - | 主键 | | name | VARCHAR(50) | NOT NULL | - | 名称 | | create_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 创建时间 | | update_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | - **索引**: | 索引名 | 类型 | 字段 | 描述 | | ------ | ---- | ---- | ---- | | idx_name | INDEX | name | 名称索引 | - **备注**: #### 表 2:[表名] - **描述**: - **表结构**: | 字段名 | 数据类型 | 约束 | 默认值 | 描述 | | ------ | ------ | ---- | ------ | ---- | | id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | - | 主键 | | foreign_id | BIGINT | NOT NULL, FOREIGN KEY REFERENCES table1(id) | - | 外键 | | value | VARCHAR(100) | NOT NULL | - | 值 | - **索引**: | 索引名 | 类型 | 字段 | 描述 | | ------ | ---- | ---- | ---- | | idx_foreign_id | INDEX | foreign_id | 外键索引 | - **备注**: ## SQL 代码 ### 查询语句 #### 查询 1:[查询名称] - **功能描述**: - **SQL 语句**: ```sql -- 查询1描述 SELECT t1.id, t1.name, t2.value FROM table1 t1 JOIN table2 t2 ON t1.id = t2.foreign_id WHERE t1.name LIKE '%%' AND t2.value IS NOT NULL ORDER BY t1.create_time DESC; ``` - **使用场景**: - **性能优化**: #### 查询 2:[查询名称] - **功能描述**: - **SQL 语句**: ```sql -- 查询2描述 ``` - **使用场景**: - **性能优化**: ### 存储过程 #### 存储过程 1:[存储过程名称] - **功能描述**: - **SQL 代码**: ```sql -- 存储过程1描述 DELIMITER // CREATE PROCEDURE procedure_name(IN param1 INT, OUT result INT) BEGIN -- 存储过程逻辑 SELECT COUNT(*) INTO result FROM table1 WHERE id > param1; END // DELIMITER ; ``` - **参数说明**: | 参数名 | 类型 | 方向 | 描述 | | ------ | ---- | ---- | ---- | | param1 | INT | IN | 输入参数 | | result | INT | OUT | 输出参数 | - **调用示例**: ```sql CALL procedure_name(100, @result); SELECT @result; ``` ### 触发器 #### 触发器 1:[触发器名称] - **功能描述**: - **SQL 代码**: ```sql -- 触发器1描述 DELIMITER // CREATE TRIGGER trigger_name AFTER INSERT ON table1 FOR EACH ROW BEGIN -- 触发器逻辑 INSERT INTO table2(foreign_id, value) VALUES(NEW.id, 'default_value'); END // DELIMITER ; ``` - **触发条件**: - **执行逻辑**: ### 视图 #### 视图 1:[视图名称] - **功能描述**: - **SQL 代码**: ```sql -- 视图1描述 CREATE VIEW view_name AS SELECT t1.id, t1.name, t2.value FROM table1 t1 JOIN table2 t2 ON t1.id = t2.foreign_id; ``` - **使用场景**: ## 使用示例 ### 基本查询示例 ```sql -- 基本查询示例 SELECT * FROM table1 WHERE name = 'example'; ``` ### 复杂查询示例 ```sql -- 复杂查询示例 ``` ### 存储过程调用示例 ```sql -- 存储过程调用示例 ``` ## 优化建议 ### 索引优化 - 建议1: - 建议2: ### 查询优化 - 建议1: - 建议2: ### 性能监控 - 监控指标: - 监控工具: ## 维护指南 ### 备份策略 - 备份频率: - 备份方式: - 备份存储位置: ### 恢复流程 - 恢复步骤: - 验证方法: ### 更新流程 - 更新步骤: - 测试方法: - 回滚方案: ### 常见问题 | 问题 | 解决方案 | | ---- | ------ | | 问题1 | 解决方案1 | | 问题2 | 解决方案2 | ## 变更历史 | 版本 | 日期 | 变更内容 | 变更人 | | ---- | ---- | ------ | ------ | | 1.0.0 | YYYY-MM-DD | 初始版本 | | | 1.1.0 | YYYY-MM-DD | 添加新表 | | ## 相关文档 - [需求文档](../requirements/YYYY-MM-DD-00X-需求名.md) - [设计文档](../design/YYYY-MM-DD-00X-设计名.md)