[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbase":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbase":696,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbase":721},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":13,"pinned":14,"draft":14,"body":15,"seo":692,"stem":693,"id":694,"extension":695},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbase","MySQL 基础概念","MySQL 是目前最流行的开源关系型数据库管理系统之一。学习路径见 数据存储导读。广泛应用于 Web 应用、企业系统和大数据领域。理解其基础概念是掌握数据库开发的第一步。","技能小册",[12],"mysql","2021-03-18",false,{"type":16,"value":17,"toc":683},"minimark",[18,22,32,37,45,48,76,80,83,89,104,114,119,127,131,134,227,231,236,256,260,288,292,299,303,333,337,354,358,386,390,414,418,428,451,455,462,520,523,527,535,539,625,628,632,679],[19,20,8],"h1",{"id":21},"mysql-基础概念",[23,24,25,26,31],"p",{},"MySQL 是目前最流行的开源关系型数据库管理系统之一。学习路径见 ",[27,28,30],"a",{"href":29},"\u002Fknowledge\u002Fbooklet\u002Fsql","数据存储导读","。广泛应用于 Web 应用、企业系统和大数据领域。理解其基础概念是掌握数据库开发的第一步。",[33,34,36],"h3",{"id":35},"一什么是数据库","一、什么是数据库",[23,38,39,40,44],{},"数据库（Database）是按照数据结构来",[41,42,43],"strong",{},"组织、存储和管理数据","的仓库。简单来说，就像电子化的文件柜，专门用于保存大量结构化信息，并支持高效的增、删、改、查操作。",[23,46,47],{},"与 Excel 等文件不同，数据库具有以下特点：",[49,50,51,58,64,70],"ul",{},[52,53,54,57],"li",{},[41,55,56],{},"持久化存储","：数据长期保存在磁盘中，不因程序关闭而丢失。",[52,59,60,63],{},[41,61,62],{},"并发访问","：允许多个用户或应用同时读写数据，并提供事务隔离保证。",[52,65,66,69],{},[41,67,68],{},"安全性","：提供用户权限控制、备份恢复等机制。",[52,71,72,75],{},[41,73,74],{},"减少冗余","：通过规范化的设计，避免数据重复存储。",[33,77,79],{"id":78},"二关系型数据库","二、关系型数据库",[23,81,82],{},"关系型数据库（Relational Database）是目前应用最广泛的数据库类型，其核心思想由 IBM 的 E.F. Codd 于 1970 年提出。",[23,84,85,88],{},[41,86,87],{},"基本特征","：",[49,90,91,94,97],{},[52,92,93],{},"数据以**二维表（Table）**的形式组织，每个表由行和列构成。",[52,95,96],{},"表与表之间通过**关联键（外键）**建立联系，反映现实世界实体间的关联。",[52,98,99,100,103],{},"支持",[41,101,102],{},"结构化查询语言（SQL）","，使用统一的标准操作数据。",[23,105,106,109,110,113],{},[41,107,108],{},"为何称为“关系型”？","\n“关系”指的是",[41,111,112],{},"数学上的集合关系","。一张表可以看作一个关系，表中的每一行是关系的一个元组（tuple），列是属性（attribute）。通过关系代数运算（如选择、投影、连接）来操作数据。",[23,115,116,88],{},[41,117,118],{},"常见的关系型数据库",[49,120,121,124],{},[52,122,123],{},"商业：Oracle、SQL Server、DB2",[52,125,126],{},"开源：MySQL、PostgreSQL、SQLite",[33,128,130],{"id":129},"三mysql-特点","三、MySQL 特点",[23,132,133],{},"MySQL 最初由瑞典 MySQL AB 公司开发，后被 Sun 公司收购，现属于 Oracle 旗下。其流行原因包括：",[135,136,137,150],"table",{},[138,139,140],"thead",{},[141,142,143,147],"tr",{},[144,145,146],"th",{},"特点",[144,148,149],{},"说明",[151,152,153,164,174,184,194,203,213],"tbody",{},[141,154,155,161],{},[156,157,158],"td",{},[41,159,160],{},"开源免费",[156,162,163],{},"社区版基于 GPL 协议，可自由使用、修改和分发",[141,165,166,171],{},[156,167,168],{},[41,169,170],{},"跨平台",[156,172,173],{},"支持 Windows、Linux、macOS、FreeBSD 等多种操作系统",[141,175,176,181],{},[156,177,178],{},[41,179,180],{},"高性能",[156,182,183],{},"通过索引、缓冲池、存储引擎优化（如 InnoDB）实现高吞吐量；MySQL 8.0 已移除查询缓存（Query Cache）",[141,185,186,191],{},[156,187,188],{},[41,189,190],{},"易用性",[156,192,193],{},"提供命令行工具、图形化管理工具（如 MySQL Workbench），学习曲线平缓",[141,195,196,200],{},[156,197,198],{},[41,199,68],{},[156,201,202],{},"支持 SSL 传输、用户权限分级、加密插件等",[141,204,205,210],{},[156,206,207],{},[41,208,209],{},"扩展性",[156,211,212],{},"支持主从复制、分库分表、集群方案（如 NDB Cluster）",[141,214,215,220],{},[156,216,217],{},[41,218,219],{},"存储引擎可插拔",[156,221,222,223,226],{},"默认 ",[41,224,225],{},"InnoDB","（事务、行锁、外键）；其他引擎（如 MEMORY）按场景选用，新项目一般以 InnoDB 为主",[33,228,230],{"id":229},"四常用术语详解","四、常用术语详解",[232,233,235],"h4",{"id":234},"_1-数据库database","1. 数据库（Database）",[23,237,238,239,242,243,247,248,251,252,255],{},"数据库是表的集合，也是最高级别的存储容器。一个 MySQL 服务器可以管理多个数据库，每个数据库之间相互隔离。",[240,241],"br",{},"\n例如：一个电商系统可能包含 ",[244,245,246],"code",{},"user_db","（用户库）、",[244,249,250],{},"order_db","（订单库）、",[244,253,254],{},"product_db","（商品库）。",[232,257,259],{"id":258},"_2-表table","2. 表（Table）",[23,261,262,263,266,267,269,270,273,274,277,278,277,281,277,284,287],{},"表是数据库中存储数据的核心结构，由**行（记录）",[41,264,265],{},"和","列（字段）**组成的二维网格。",[240,268],{},"\n例如：用户表 ",[244,271,272],{},"users"," 可能包含 ",[244,275,276],{},"id","、",[244,279,280],{},"name",[244,282,283],{},"email",[244,285,286],{},"age"," 等列。",[232,289,291],{"id":290},"_3-行row-record","3. 行（Row \u002F Record）",[23,293,294,295,298],{},"行表示表中的一条具体数据记录。例如用户表里的一行代表一个实际用户：",[244,296,297],{},"(1, '张三', 'zhangsan@example.com', 25)","。",[232,300,302],{"id":301},"_4-列column-field","4. 列（Column \u002F Field）",[23,304,305,306,309,310,277,313,277,316,319,320,277,323,326,327,329,330,332],{},"列定义了表的一个属性，每个列都有特定的",[41,307,308],{},"数据类型","（如 ",[244,311,312],{},"INT",[244,314,315],{},"VARCHAR",[244,317,318],{},"DATE","），并可以设置约束（如 ",[244,321,322],{},"NOT NULL",[244,324,325],{},"DEFAULT","）。例如 ",[244,328,286],{}," 列的类型为 ",[244,331,312],{},"，表示存储整数年龄。",[232,334,336],{"id":335},"_5-主键primary-key","5. 主键（Primary Key）",[23,338,339,340,343,344,347,348,350,351,353],{},"主键是表中",[41,341,342],{},"唯一标识","每一行的一列或列的组合。主键的值必须唯一且不能为 ",[244,345,346],{},"NULL","。一张表只能有一个主键。",[240,349],{},"\n例如用户表的 ",[244,352,276],{}," 列就是主键，确保每个用户有唯一的编号。",[232,355,357],{"id":356},"_6-外键foreign-key","6. 外键（Foreign Key）",[23,359,360,361,364,365,368,369,371,372,374,375,378,379,382,383,385],{},"外键用于",[41,362,363],{},"建立表与表之间的关联","，它指向另一张表的主键。外键可以保证数据的",[41,366,367],{},"参照完整性","，即外键值必须在被引用表中存在（或为 ",[244,370,346],{},"）。",[240,373],{},"\n例如：订单表 ",[244,376,377],{},"orders"," 中的 ",[244,380,381],{},"user_id"," 列作为外键，引用用户表的 ",[244,384,276],{},"，表示每个订单属于某个已存在的用户。",[232,387,389],{"id":388},"_7-索引index","7. 索引（Index）",[23,391,392,393,396,397,400,401,277,404,277,407,410,411,413],{},"索引是一种用于",[41,394,395],{},"加速数据检索","的数据库对象，类似于书籍的目录。它基于一列或多列创建，能够大幅提高 ",[244,398,399],{},"SELECT"," 查询的速度，但会略微降低 ",[244,402,403],{},"INSERT",[244,405,406],{},"UPDATE",[244,408,409],{},"DELETE"," 的性能（因为需要更新索引）。",[240,412],{},"\n常见的索引类型：普通索引、唯一索引（UNIQUE）、全文索引（FULLTEXT）、组合索引（多列）。",[232,415,417],{"id":416},"_8-视图view","8. 视图（View）",[23,419,420,421,424,425,427],{},"视图是一个",[41,422,423],{},"虚拟表","，它不实际存储数据，而是保存了一条 ",[244,426,399],{}," 查询语句。用户可以将复杂的多表关联查询定义为视图，之后像操作普通表一样查询视图，简化代码并隐藏底层表结构。视图也可以实现数据安全（例如只展示某些列）。",[429,430,435],"pre",{"className":431,"code":432,"language":433,"meta":434,"style":434},"language-sql shiki shiki-themes material-theme-lighter github-light github-dark","CREATE VIEW active_users AS\nSELECT id, name FROM users WHERE status = 'active';\n","sql","",[244,436,437,445],{"__ignoreMap":434},[438,439,442],"span",{"class":440,"line":441},"line",1,[438,443,444],{},"CREATE VIEW active_users AS\n",[438,446,448],{"class":440,"line":447},2,[438,449,450],{},"SELECT id, name FROM users WHERE status = 'active';\n",[232,452,454],{"id":453},"_9-存储过程stored-procedure","9. 存储过程（Stored Procedure）",[23,456,457,458,461],{},"存储过程是一组",[41,459,460],{},"预编译的 SQL 语句","，存储在数据库中，可以接受参数并返回结果。它类似于编程语言中的函数，能够封装复杂的业务逻辑，减少网络传输，提高执行效率。",[429,463,465],{"className":431,"code":464,"language":433,"meta":434,"style":434},"DELIMITER \u002F\u002F\nCREATE PROCEDURE GetUser(IN userId INT)\nBEGIN\n  SELECT * FROM users WHERE id = userId;\nEND \u002F\u002F\nDELIMITER ;\n\n-- 调用\nCALL GetUser(100);\n",[244,466,467,472,477,483,489,495,501,508,514],{"__ignoreMap":434},[438,468,469],{"class":440,"line":441},[438,470,471],{},"DELIMITER \u002F\u002F\n",[438,473,474],{"class":440,"line":447},[438,475,476],{},"CREATE PROCEDURE GetUser(IN userId INT)\n",[438,478,480],{"class":440,"line":479},3,[438,481,482],{},"BEGIN\n",[438,484,486],{"class":440,"line":485},4,[438,487,488],{},"  SELECT * FROM users WHERE id = userId;\n",[438,490,492],{"class":440,"line":491},5,[438,493,494],{},"END \u002F\u002F\n",[438,496,498],{"class":440,"line":497},6,[438,499,500],{},"DELIMITER ;\n",[438,502,504],{"class":440,"line":503},7,[438,505,507],{"emptyLinePlaceholder":506},true,"\n",[438,509,511],{"class":440,"line":510},8,[438,512,513],{},"-- 调用\n",[438,515,517],{"class":440,"line":516},9,[438,518,519],{},"CALL GetUser(100);\n",[23,521,522],{},"存储过程常用于数据校验、批量处理、报表生成等场景。",[33,524,526],{"id":525},"五图示数据库结构层次","五、图示：数据库结构层次",[429,528,533],{"className":529,"code":531,"language":532},[530],"language-text","MySQL Server\n├── Database1 (e.g., shop)\n│   ├── Table: users\n│   │   ├── Columns: id (PK), name, email, ...\n│   │   ├── Rows: (1, 'Alice', ...), (2, 'Bob', ...)\n│   │   └── Indexes: idx_email\n│   ├── Table: orders\n│   │   ├── Columns: id (PK), user_id (FK), amount, ...\n│   │   └── Rows: (101, 1, 99.9), ...\n│   └── Views: v_user_orders\n├── Database2 (e.g., blog)\n└── ...\n","text",[244,534,531],{"__ignoreMap":434},[33,536,538],{"id":537},"六总结","六、总结",[135,540,541,551],{},[138,542,543],{},[141,544,545,548],{},[144,546,547],{},"术语",[144,549,550],{},"作用",[151,552,553,561,569,577,585,593,601,609,617],{},[141,554,555,558],{},[156,556,557],{},"数据库",[156,559,560],{},"表的集合",[141,562,563,566],{},[156,564,565],{},"表",[156,567,568],{},"数据的二维结构",[141,570,571,574],{},[156,572,573],{},"行",[156,575,576],{},"一条具体记录",[141,578,579,582],{},[156,580,581],{},"列",[156,583,584],{},"一个字段，描述属性",[141,586,587,590],{},[156,588,589],{},"主键",[156,591,592],{},"唯一标识一行",[141,594,595,598],{},[156,596,597],{},"外键",[156,599,600],{},"关联其他表",[141,602,603,606],{},[156,604,605],{},"索引",[156,607,608],{},"加速查询",[141,610,611,614],{},[156,612,613],{},"视图",[156,615,616],{},"虚拟表，简化查询",[141,618,619,622],{},[156,620,621],{},"存储过程",[156,623,624],{},"预编译的 SQL 代码块",[23,626,627],{},"理解这些基础概念，是学习 SQL 语句、数据库设计以及进一步掌握 MySQL 高级特性（事务、锁、优化等）的前提。建议结合实际建表、查询操作加深印象。",[629,630,631],"h2",{"id":631},"参考文献",[135,633,634,643],{},[138,635,636],{},[141,637,638,641],{},[144,639,640],{},"资料",[144,642,149],{},[151,644,645,658,670],{},[141,646,647,655],{},[156,648,649],{},[27,650,654],{"href":651,"rel":652},"https:\u002F\u002Fdev.mysql.com\u002Fdoc\u002Frefman\u002F8.0\u002Fen\u002Fintroduction.html",[653],"nofollow","MySQL 8.0 手册 · Introduction",[156,656,657],{},"官方",[141,659,660,667],{},[156,661,662],{},[27,663,666],{"href":664,"rel":665},"https:\u002F\u002Fdev.mysql.com\u002Fdoc\u002Frefman\u002F8.0\u002Fen\u002Finnodb-storage-engine.html",[653],"InnoDB Storage Engine",[156,668,669],{},"默认引擎",[141,671,672,676],{},[156,673,674],{},[27,675,30],{"href":29},[156,677,678],{},"本目录路径",[680,681,682],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":434,"searchDepth":447,"depth":447,"links":684},[685,686,687,688,689,690,691],{"id":35,"depth":479,"text":36},{"id":78,"depth":479,"text":79},{"id":129,"depth":479,"text":130},{"id":229,"depth":479,"text":230},{"id":525,"depth":479,"text":526},{"id":537,"depth":479,"text":538},{"id":631,"depth":447,"text":631},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fsql\u002FMySql\u002Fbase","knowledge\u002Fknowledge\u002Fbooklet\u002Fsql\u002FMySql\u002Fbase.md","md",{"items":697},[698,702,706,710,713,717],{"path":699,"title":700,"description":701,"category":10,"score":497},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Ftool","常用函数","MySQL 提供了丰富的内置函数，用于处理字符串、数值、日期和时间以及条件逻辑。下面分类介绍最常用的基础函数。",{"path":703,"title":704,"description":705,"category":10,"score":497},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fjoin","多表查询","多表查询用于从两个或更多表中获取数据。常见的连接类型包括内连接、外连接（左、右）和自连接。",{"path":707,"title":708,"description":709,"category":10,"score":497},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Finstall","MySQL 安装与基本操作","MySQL 的安装因操作系统而异，但安装完成后，通过命令行客户端连接并进行基本管理的方法是通用的。下面分别介绍安装方式和常用命令。",{"path":711,"title":308,"description":712,"category":10,"score":497},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Ftype","MySQL 支持多种数据类型，可分为数值、字符串、日期时间、枚举\u002F集合以及 JSON 等。选择合适的类型可以优化存储空间和查询性能。",{"path":714,"title":715,"description":716,"category":10,"score":497},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdql","查询数据","数据查询语言（DQL）用于从数据库中检索数据，核心是 SELECT 语句。下面从基础查询、条件筛选、排序、限制行数、聚合与分组等方面进行介绍。",{"path":718,"title":719,"description":720,"category":10,"score":497},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fddl","数据库与表的基本操作","DDL（Data Definition Language）用于定义数据库结构，包括创建、修改、删除数据库和表。下面介绍 MySQL 中常用的 DDL 语句。",{"series":722,"title":12,"items":723,"index":447,"prev":753,"next":754},"booklet\u002Fsql\u002Fmysql",[724,728,732,733,737,739,743,745,747,749,751],{"path":725,"title":726,"date":727,"pinned":14},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fauth","用户与权限管理","2021-06-06",{"path":729,"title":730,"date":731,"pinned":14},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbackup","备份与恢复","2024-02-23",{"path":7,"title":8,"date":13,"pinned":14},{"path":734,"title":735,"date":736,"pinned":14},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fconstraints","约束","2020-03-31",{"path":718,"title":719,"date":738,"pinned":14},"2024-07-14",{"path":740,"title":741,"date":742,"pinned":14},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdml","数据操作","2024-05-30",{"path":714,"title":715,"date":744,"pinned":14},"2024-08-16",{"path":707,"title":708,"date":746,"pinned":14},"2025-04-04",{"path":703,"title":704,"date":748,"pinned":14},"2025-11-29",{"path":699,"title":700,"date":750,"pinned":14},"2026-01-19",{"path":711,"title":308,"date":752,"pinned":14},"2024-10-16",{"path":729,"title":730,"date":731,"pinned":14},{"path":734,"title":735,"date":736,"pinned":14}]