[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdql":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdql":1094,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdql":1120},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":14,"pinned":15,"draft":15,"body":16,"seo":1090,"stem":1091,"id":1092,"extension":1093},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdql","查询数据","数据查询语言（DQL）用于从数据库中检索数据，核心是 SELECT 语句。下面从基础查询、条件筛选、排序、限制行数、聚合与分组等方面进行介绍。","技能小册",[12,13],"mysql","dql","2024-08-16",false,{"type":17,"value":18,"toc":1078},"minimark",[19,22,27,36,41,100,107,123,128,171,175,181,201,206,357,361,427,431,445,464,469,484,488,522,526,532,561,567,576,580,609,623,627,634,638,711,714,743,759,763,842,847,869,873,879,919,925,965,969,1027,1033,1036,1074],[20,21,8],"h1",{"id":8},[23,24,26],"h2",{"id":25},"查询数据dql-select","查询数据（DQL - SELECT）",[28,29,30,31,35],"p",{},"数据查询语言（DQL）用于从数据库中检索数据，核心是 ",[32,33,34],"code",{},"SELECT"," 语句。下面从基础查询、条件筛选、排序、限制行数、聚合与分组等方面进行介绍。",[37,38,40],"h3",{"id":39},"一基础查询","一、基础查询",[42,43,48],"pre",{"className":44,"code":45,"language":46,"meta":47,"style":47},"language-sql shiki shiki-themes material-theme-lighter github-light github-dark","-- 查询所有列\nSELECT * FROM table_name;\n\n-- 查询指定列\nSELECT column1, column2 FROM table_name;\n\n-- 查询并去重\nSELECT DISTINCT column1 FROM table_name;\n","sql","",[32,49,50,58,64,71,77,83,88,94],{"__ignoreMap":47},[51,52,55],"span",{"class":53,"line":54},"line",1,[51,56,57],{},"-- 查询所有列\n",[51,59,61],{"class":53,"line":60},2,[51,62,63],{},"SELECT * FROM table_name;\n",[51,65,67],{"class":53,"line":66},3,[51,68,70],{"emptyLinePlaceholder":69},true,"\n",[51,72,74],{"class":53,"line":73},4,[51,75,76],{},"-- 查询指定列\n",[51,78,80],{"class":53,"line":79},5,[51,81,82],{},"SELECT column1, column2 FROM table_name;\n",[51,84,86],{"class":53,"line":85},6,[51,87,70],{"emptyLinePlaceholder":69},[51,89,91],{"class":53,"line":90},7,[51,92,93],{},"-- 查询并去重\n",[51,95,97],{"class":53,"line":96},8,[51,98,99],{},"SELECT DISTINCT column1 FROM table_name;\n",[28,101,102,106],{},[103,104,105],"strong",{},"说明","：",[108,109,110,117],"ul",{},[111,112,113,116],"li",{},[32,114,115],{},"*"," 表示返回所有列，但在生产环境中建议列出具体列名，减少网络传输并提高可读性。",[111,118,119,122],{},[32,120,121],{},"DISTINCT"," 用于去除查询结果中重复的行（作用于所有选中的列）。",[28,124,125,106],{},[103,126,127],{},"示例",[42,129,131],{"className":44,"code":130,"language":46,"meta":47,"style":47},"-- 查看学生表所有信息\nSELECT * FROM students;\n\n-- 只查询姓名和年龄\nSELECT name, age FROM students;\n\n-- 查询有哪些不同的班级编号\nSELECT DISTINCT class_id FROM students;\n",[32,132,133,138,143,147,152,157,161,166],{"__ignoreMap":47},[51,134,135],{"class":53,"line":54},[51,136,137],{},"-- 查看学生表所有信息\n",[51,139,140],{"class":53,"line":60},[51,141,142],{},"SELECT * FROM students;\n",[51,144,145],{"class":53,"line":66},[51,146,70],{"emptyLinePlaceholder":69},[51,148,149],{"class":53,"line":73},[51,150,151],{},"-- 只查询姓名和年龄\n",[51,153,154],{"class":53,"line":79},[51,155,156],{},"SELECT name, age FROM students;\n",[51,158,159],{"class":53,"line":85},[51,160,70],{"emptyLinePlaceholder":69},[51,162,163],{"class":53,"line":90},[51,164,165],{},"-- 查询有哪些不同的班级编号\n",[51,167,168],{"class":53,"line":96},[51,169,170],{},"SELECT DISTINCT class_id FROM students;\n",[37,172,174],{"id":173},"二带条件查询where","二、带条件查询（WHERE）",[28,176,177,180],{},[32,178,179],{},"WHERE"," 子句用于过滤行，只返回满足条件的记录。",[42,182,184],{"className":44,"code":183,"language":46,"meta":47,"style":47},"SELECT column1, column2\nFROM table_name\nWHERE condition;\n",[32,185,186,191,196],{"__ignoreMap":47},[51,187,188],{"class":53,"line":54},[51,189,190],{},"SELECT column1, column2\n",[51,192,193],{"class":53,"line":60},[51,194,195],{},"FROM table_name\n",[51,197,198],{"class":53,"line":66},[51,199,200],{},"WHERE condition;\n",[28,202,203,106],{},[103,204,205],{},"常用条件运算符",[207,208,209,224],"table",{},[210,211,212],"thead",{},[213,214,215,219,222],"tr",{},[216,217,218],"th",{},"类型",[216,220,221],{},"运算符",[216,223,127],{},[225,226,227,264,285,300,315,339],"tbody",{},[213,228,229,233,259],{},[230,231,232],"td",{},"比较",[230,234,235,238,239,242,243,246,247,238,250,238,253,238,256],{},[32,236,237],{},"=",", ",[32,240,241],{},"\u003C>","（或 ",[32,244,245],{},"!=","）, ",[32,248,249],{},">",[32,251,252],{},"\u003C",[32,254,255],{},">=",[32,257,258],{},"\u003C=",[230,260,261],{},[32,262,263],{},"age >= 18",[213,265,266,269,280],{},[230,267,268],{},"逻辑",[230,270,271,238,274,238,277],{},[32,272,273],{},"AND",[32,275,276],{},"OR",[32,278,279],{},"NOT",[230,281,282],{},[32,283,284],{},"age >= 18 AND city = 'Beijing'",[213,286,287,290,295],{},[230,288,289],{},"范围",[230,291,292],{},[32,293,294],{},"BETWEEN ... AND ...",[230,296,297],{},[32,298,299],{},"score BETWEEN 60 AND 100",[213,301,302,305,310],{},[230,303,304],{},"集合",[230,306,307],{},[32,308,309],{},"IN (value1, value2, ...)",[230,311,312],{},[32,313,314],{},"class_id IN (101, 102)",[213,316,317,320,334],{},[230,318,319],{},"模糊匹配",[230,321,322,325,326,329,330,333],{},[32,323,324],{},"LIKE","（",[32,327,328],{},"%"," 任意多个字符，",[32,331,332],{},"_"," 单个字符）",[230,335,336],{},[32,337,338],{},"name LIKE '张%'",[213,340,341,344,352],{},[230,342,343],{},"空值判断",[230,345,346,238,349],{},[32,347,348],{},"IS NULL",[32,350,351],{},"IS NOT NULL",[230,353,354],{},[32,355,356],{},"email IS NULL",[28,358,359,106],{},[103,360,127],{},[42,362,364],{"className":44,"code":363,"language":46,"meta":47,"style":47},"-- 查询年龄大于20的学生\nSELECT * FROM students WHERE age > 20;\n\n-- 查询班级为101或102，且成绩及格的学生\nSELECT * FROM students\nWHERE class_id IN (101, 102) AND score >= 60;\n\n-- 查询姓“李”且名字只有两个字的同学\nSELECT * FROM students WHERE name LIKE '李_';\n\n-- 查询手机号未填写的用户\nSELECT * FROM users WHERE phone IS NULL;\n",[32,365,366,371,376,380,385,390,395,399,404,410,415,421],{"__ignoreMap":47},[51,367,368],{"class":53,"line":54},[51,369,370],{},"-- 查询年龄大于20的学生\n",[51,372,373],{"class":53,"line":60},[51,374,375],{},"SELECT * FROM students WHERE age > 20;\n",[51,377,378],{"class":53,"line":66},[51,379,70],{"emptyLinePlaceholder":69},[51,381,382],{"class":53,"line":73},[51,383,384],{},"-- 查询班级为101或102，且成绩及格的学生\n",[51,386,387],{"class":53,"line":79},[51,388,389],{},"SELECT * FROM students\n",[51,391,392],{"class":53,"line":85},[51,393,394],{},"WHERE class_id IN (101, 102) AND score >= 60;\n",[51,396,397],{"class":53,"line":90},[51,398,70],{"emptyLinePlaceholder":69},[51,400,401],{"class":53,"line":96},[51,402,403],{},"-- 查询姓“李”且名字只有两个字的同学\n",[51,405,407],{"class":53,"line":406},9,[51,408,409],{},"SELECT * FROM students WHERE name LIKE '李_';\n",[51,411,413],{"class":53,"line":412},10,[51,414,70],{"emptyLinePlaceholder":69},[51,416,418],{"class":53,"line":417},11,[51,419,420],{},"-- 查询手机号未填写的用户\n",[51,422,424],{"class":53,"line":423},12,[51,425,426],{},"SELECT * FROM users WHERE phone IS NULL;\n",[37,428,430],{"id":429},"三排序order-by","三、排序（ORDER BY）",[28,432,433,436,437,440,441,444],{},[32,434,435],{},"ORDER BY"," 用于对结果集进行排序，默认为升序（",[32,438,439],{},"ASC","），可指定降序（",[32,442,443],{},"DESC","）。",[42,446,448],{"className":44,"code":447,"language":46,"meta":47,"style":47},"SELECT column_list\nFROM table_name\nORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;\n",[32,449,450,455,459],{"__ignoreMap":47},[51,451,452],{"class":53,"line":54},[51,453,454],{},"SELECT column_list\n",[51,456,457],{"class":53,"line":60},[51,458,195],{},[51,460,461],{"class":53,"line":66},[51,462,463],{},"ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;\n",[28,465,466,106],{},[103,467,468],{},"规则",[108,470,471,474],{},[111,472,473],{},"先按第一列排序，若相同再按第二列，依此类推。",[111,475,476,477,480,481,483],{},"空值（",[32,478,479],{},"NULL","）在排序中通常视为最小值（具体取决于数据库实现，MySQL 中默认 ",[32,482,479],{}," 最小）。",[28,485,486,106],{},[103,487,127],{},[42,489,491],{"className":44,"code":490,"language":46,"meta":47,"style":47},"-- 按年龄升序（从小到大）\nSELECT name, age FROM students ORDER BY age;\n\n-- 按成绩降序（从高到低），成绩相同则按姓名升序\nSELECT name, score FROM students\nORDER BY score DESC, name ASC;\n",[32,492,493,498,503,507,512,517],{"__ignoreMap":47},[51,494,495],{"class":53,"line":54},[51,496,497],{},"-- 按年龄升序（从小到大）\n",[51,499,500],{"class":53,"line":60},[51,501,502],{},"SELECT name, age FROM students ORDER BY age;\n",[51,504,505],{"class":53,"line":66},[51,506,70],{"emptyLinePlaceholder":69},[51,508,509],{"class":53,"line":73},[51,510,511],{},"-- 按成绩降序（从高到低），成绩相同则按姓名升序\n",[51,513,514],{"class":53,"line":79},[51,515,516],{},"SELECT name, score FROM students\n",[51,518,519],{"class":53,"line":85},[51,520,521],{},"ORDER BY score DESC, name ASC;\n",[37,523,525],{"id":524},"四限制结果行数limit","四、限制结果行数（LIMIT）",[28,527,528,531],{},[32,529,530],{},"LIMIT"," 用于限制返回的行数，常用于分页查询。",[42,533,535],{"className":44,"code":534,"language":46,"meta":47,"style":47},"-- 返回前 N 行\nSELECT * FROM table_name LIMIT N;\n\n-- 跳过 offset 行，返回 count 行\nSELECT * FROM table_name LIMIT offset, count;\n",[32,536,537,542,547,551,556],{"__ignoreMap":47},[51,538,539],{"class":53,"line":54},[51,540,541],{},"-- 返回前 N 行\n",[51,543,544],{"class":53,"line":60},[51,545,546],{},"SELECT * FROM table_name LIMIT N;\n",[51,548,549],{"class":53,"line":66},[51,550,70],{"emptyLinePlaceholder":69},[51,552,553],{"class":53,"line":73},[51,554,555],{},"-- 跳过 offset 行，返回 count 行\n",[51,557,558],{"class":53,"line":79},[51,559,560],{},"SELECT * FROM table_name LIMIT offset, count;\n",[28,562,563,566],{},[103,564,565],{},"替代语法","（MySQL 也支持）：",[42,568,570],{"className":44,"code":569,"language":46,"meta":47,"style":47},"SELECT * FROM table_name LIMIT count OFFSET offset;\n",[32,571,572],{"__ignoreMap":47},[51,573,574],{"class":53,"line":54},[51,575,569],{},[28,577,578,106],{},[103,579,127],{},[42,581,583],{"className":44,"code":582,"language":46,"meta":47,"style":47},"-- 查询前10名学生\nSELECT * FROM students LIMIT 10;\n\n-- 分页：每页10条，查看第3页（跳过前20条，取10条）\nSELECT * FROM students LIMIT 20, 10;\n",[32,584,585,590,595,599,604],{"__ignoreMap":47},[51,586,587],{"class":53,"line":54},[51,588,589],{},"-- 查询前10名学生\n",[51,591,592],{"class":53,"line":60},[51,593,594],{},"SELECT * FROM students LIMIT 10;\n",[51,596,597],{"class":53,"line":66},[51,598,70],{"emptyLinePlaceholder":69},[51,600,601],{"class":53,"line":73},[51,602,603],{},"-- 分页：每页10条，查看第3页（跳过前20条，取10条）\n",[51,605,606],{"class":53,"line":79},[51,607,608],{},"SELECT * FROM students LIMIT 20, 10;\n",[610,611,612],"blockquote",{},[28,613,614,106,617,619,620,622],{},[103,615,616],{},"注意",[32,618,530],{}," 通常与 ",[32,621,435],{}," 配合使用，否则结果顺序不确定，分页可能重复或遗漏。",[37,624,626],{"id":625},"五聚合函数与分组group-by","五、聚合函数与分组（GROUP BY）",[28,628,629,630,633],{},"聚合函数对一组值进行计算并返回单个值。常与 ",[32,631,632],{},"GROUP BY"," 一起使用，按某个字段分组后分别计算。",[635,636,637],"h4",{"id":637},"常用聚合函数",[207,639,640,649],{},[210,641,642],{},[213,643,644,647],{},[216,645,646],{},"函数",[216,648,105],{},[225,650,651,661,671,681,691,701],{},[213,652,653,658],{},[230,654,655],{},[32,656,657],{},"COUNT(*)",[230,659,660],{},"统计行数",[213,662,663,668],{},[230,664,665],{},[32,666,667],{},"COUNT(column)",[230,669,670],{},"统计某列非空值的个数",[213,672,673,678],{},[230,674,675],{},[32,676,677],{},"SUM(column)",[230,679,680],{},"求和",[213,682,683,688],{},[230,684,685],{},[32,686,687],{},"AVG(column)",[230,689,690],{},"平均值",[213,692,693,698],{},[230,694,695],{},[32,696,697],{},"MAX(column)",[230,699,700],{},"最大值",[213,702,703,708],{},[230,704,705],{},[32,706,707],{},"MIN(column)",[230,709,710],{},"最小值",[635,712,713],{"id":713},"分组查询",[42,715,717],{"className":44,"code":716,"language":46,"meta":47,"style":47},"SELECT group_column, aggregate_function(column)\nFROM table_name\n[WHERE condition]\nGROUP BY group_column\n[HAVING group_condition];\n",[32,718,719,724,728,733,738],{"__ignoreMap":47},[51,720,721],{"class":53,"line":54},[51,722,723],{},"SELECT group_column, aggregate_function(column)\n",[51,725,726],{"class":53,"line":60},[51,727,195],{},[51,729,730],{"class":53,"line":66},[51,731,732],{},"[WHERE condition]\n",[51,734,735],{"class":53,"line":73},[51,736,737],{},"GROUP BY group_column\n",[51,739,740],{"class":53,"line":79},[51,741,742],{},"[HAVING group_condition];\n",[108,744,745,750],{},[111,746,747,749],{},[32,748,632],{}," 将数据划分为若干组，每一组返回一条结果。",[111,751,752,755,756,758],{},[32,753,754],{},"HAVING"," 用于对分组后的结果进行筛选（类似于 ",[32,757,179],{},"，但作用在组上）。",[28,760,761,106],{},[103,762,127],{},[42,764,766],{"className":44,"code":765,"language":46,"meta":47,"style":47},"-- 统计每个班级的学生人数\nSELECT class_id, COUNT(*) AS student_count\nFROM students\nGROUP BY class_id;\n\n-- 计算每个班级的平均成绩，并只显示平均分大于80的班级\nSELECT class_id, AVG(score) AS avg_score\nFROM students\nGROUP BY class_id\nHAVING AVG(score) > 80;\n\n-- 统计每个班级男女学生各自的人数\nSELECT class_id, gender, COUNT(*)\nFROM students\nGROUP BY class_id, gender;\n",[32,767,768,773,778,783,788,792,797,802,806,811,816,820,825,831,836],{"__ignoreMap":47},[51,769,770],{"class":53,"line":54},[51,771,772],{},"-- 统计每个班级的学生人数\n",[51,774,775],{"class":53,"line":60},[51,776,777],{},"SELECT class_id, COUNT(*) AS student_count\n",[51,779,780],{"class":53,"line":66},[51,781,782],{},"FROM students\n",[51,784,785],{"class":53,"line":73},[51,786,787],{},"GROUP BY class_id;\n",[51,789,790],{"class":53,"line":79},[51,791,70],{"emptyLinePlaceholder":69},[51,793,794],{"class":53,"line":85},[51,795,796],{},"-- 计算每个班级的平均成绩，并只显示平均分大于80的班级\n",[51,798,799],{"class":53,"line":90},[51,800,801],{},"SELECT class_id, AVG(score) AS avg_score\n",[51,803,804],{"class":53,"line":96},[51,805,782],{},[51,807,808],{"class":53,"line":406},[51,809,810],{},"GROUP BY class_id\n",[51,812,813],{"class":53,"line":412},[51,814,815],{},"HAVING AVG(score) > 80;\n",[51,817,818],{"class":53,"line":417},[51,819,70],{"emptyLinePlaceholder":69},[51,821,822],{"class":53,"line":423},[51,823,824],{},"-- 统计每个班级男女学生各自的人数\n",[51,826,828],{"class":53,"line":827},13,[51,829,830],{},"SELECT class_id, gender, COUNT(*)\n",[51,832,834],{"class":53,"line":833},14,[51,835,782],{},[51,837,839],{"class":53,"line":838},15,[51,840,841],{},"GROUP BY class_id, gender;\n",[28,843,844,106],{},[103,845,846],{},"重要区别",[108,848,849,857],{},[111,850,851,853,854,856],{},[32,852,179],{}," 在分组前过滤行，",[32,855,754],{}," 在分组后过滤组。",[111,858,859,860,862,863,865,866,868],{},"使用 ",[32,861,632],{}," 后，",[32,864,34],{}," 中出现的非聚合列必须出现在 ",[32,867,632],{}," 子句中（或依赖于分组列）。",[37,870,872],{"id":871},"六完整查询语法顺序","六、完整查询语法顺序",[28,874,875,876,878],{},"一个完整的 ",[32,877,34],{}," 语句顺序如下（按书写顺序）：",[42,880,882],{"className":44,"code":881,"language":46,"meta":47,"style":47},"SELECT   [DISTINCT] select_list\nFROM       table_references\n[WHERE     condition]\n[GROUP BY  group_columns]\n[HAVING    group_condition]\n[ORDER BY  sort_columns]\n[LIMIT     {[offset,] row_count | row_count OFFSET offset}];\n",[32,883,884,889,894,899,904,909,914],{"__ignoreMap":47},[51,885,886],{"class":53,"line":54},[51,887,888],{},"SELECT   [DISTINCT] select_list\n",[51,890,891],{"class":53,"line":60},[51,892,893],{},"FROM       table_references\n",[51,895,896],{"class":53,"line":66},[51,897,898],{},"[WHERE     condition]\n",[51,900,901],{"class":53,"line":73},[51,902,903],{},"[GROUP BY  group_columns]\n",[51,905,906],{"class":53,"line":79},[51,907,908],{},"[HAVING    group_condition]\n",[51,910,911],{"class":53,"line":85},[51,912,913],{},"[ORDER BY  sort_columns]\n",[51,915,916],{"class":53,"line":90},[51,917,918],{},"[LIMIT     {[offset,] row_count | row_count OFFSET offset}];\n",[28,920,921,924],{},[103,922,923],{},"执行逻辑顺序","（数据库内部执行顺序略有不同，但可理解为）：",[926,927,928,935,940,945,950,955,960],"ol",{},[111,929,930,931,934],{},"从 ",[32,932,933],{},"FROM"," 找到表",[111,936,937,939],{},[32,938,179],{}," 筛选行",[111,941,942,944],{},[32,943,632],{}," 分组",[111,946,947,949],{},[32,948,754],{}," 筛选组",[111,951,952,954],{},[32,953,34],{}," 计算列",[111,956,957,959],{},[32,958,435],{}," 排序",[111,961,962,964],{},[32,963,530],{}," 限制行数",[37,966,968],{"id":967},"七综合示例","七、综合示例",[42,970,972],{"className":44,"code":971,"language":46,"meta":47,"style":47},"-- 查询学生表：按班级分组，统计每班平均年龄，只显示平均年龄小于25的班级，按平均年龄降序，取前2名\nSELECT\n    class_id,\n    AVG(age) AS avg_age,\n    COUNT(*) AS num\nFROM students\nWHERE status = 'active'\nGROUP BY class_id\nHAVING AVG(age) \u003C 25\nORDER BY avg_age DESC\nLIMIT 2;\n",[32,973,974,979,984,989,994,999,1003,1008,1012,1017,1022],{"__ignoreMap":47},[51,975,976],{"class":53,"line":54},[51,977,978],{},"-- 查询学生表：按班级分组，统计每班平均年龄，只显示平均年龄小于25的班级，按平均年龄降序，取前2名\n",[51,980,981],{"class":53,"line":60},[51,982,983],{},"SELECT\n",[51,985,986],{"class":53,"line":66},[51,987,988],{},"    class_id,\n",[51,990,991],{"class":53,"line":73},[51,992,993],{},"    AVG(age) AS avg_age,\n",[51,995,996],{"class":53,"line":79},[51,997,998],{},"    COUNT(*) AS num\n",[51,1000,1001],{"class":53,"line":85},[51,1002,782],{},[51,1004,1005],{"class":53,"line":90},[51,1006,1007],{},"WHERE status = 'active'\n",[51,1009,1010],{"class":53,"line":96},[51,1011,810],{},[51,1013,1014],{"class":53,"line":406},[51,1015,1016],{},"HAVING AVG(age) \u003C 25\n",[51,1018,1019],{"class":53,"line":412},[51,1020,1021],{},"ORDER BY avg_age DESC\n",[51,1023,1024],{"class":53,"line":417},[51,1025,1026],{},"LIMIT 2;\n",[28,1028,1029,1030,1032],{},"通过上述查询，我们可以灵活地从数据库中提取需要的信息。掌握 ",[32,1031,34],{}," 的基本用法是成为数据库开发高手的第一步。",[23,1034,1035],{"id":1035},"参考文献",[207,1037,1038,1047],{},[210,1039,1040],{},[213,1041,1042,1045],{},[216,1043,1044],{},"资料",[216,1046,105],{},[225,1048,1049,1063],{},[213,1050,1051,1060],{},[230,1052,1053],{},[1054,1055,1059],"a",{"href":1056,"rel":1057},"https:\u002F\u002Fdev.mysql.com\u002Fdoc\u002Frefman\u002F8.0\u002Fen\u002F",[1058],"nofollow","MySQL 8.0 手册",[230,1061,1062],{},"官方",[213,1064,1065,1071],{},[230,1066,1067],{},[1054,1068,1070],{"href":1069},"\u002Fknowledge\u002Fbooklet\u002Fsql","数据存储导读",[230,1072,1073],{},"学习路径",[1075,1076,1077],"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":47,"searchDepth":60,"depth":60,"links":1079},[1080,1089],{"id":25,"depth":60,"text":26,"children":1081},[1082,1083,1084,1085,1086,1087,1088],{"id":39,"depth":66,"text":40},{"id":173,"depth":66,"text":174},{"id":429,"depth":66,"text":430},{"id":524,"depth":66,"text":525},{"id":625,"depth":66,"text":626},{"id":871,"depth":66,"text":872},{"id":967,"depth":66,"text":968},{"id":1035,"depth":60,"text":1035},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fsql\u002FMySql\u002Fdql","knowledge\u002Fknowledge\u002Fbooklet\u002Fsql\u002FMySql\u002Fdql.md","md",{"items":1095},[1096,1100,1104,1108,1112,1116],{"path":1097,"title":1098,"description":1099,"category":10,"score":85},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Ftool","常用函数","MySQL 提供了丰富的内置函数，用于处理字符串、数值、日期和时间以及条件逻辑。下面分类介绍最常用的基础函数。",{"path":1101,"title":1102,"description":1103,"category":10,"score":85},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fjoin","多表查询","多表查询用于从两个或更多表中获取数据。常见的连接类型包括内连接、外连接（左、右）和自连接。",{"path":1105,"title":1106,"description":1107,"category":10,"score":85},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Finstall","MySQL 安装与基本操作","MySQL 的安装因操作系统而异，但安装完成后，通过命令行客户端连接并进行基本管理的方法是通用的。下面分别介绍安装方式和常用命令。",{"path":1109,"title":1110,"description":1111,"category":10,"score":85},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Ftype","数据类型","MySQL 支持多种数据类型，可分为数值、字符串、日期时间、枚举\u002F集合以及 JSON 等。选择合适的类型可以优化存储空间和查询性能。",{"path":1113,"title":1114,"description":1115,"category":10,"score":85},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fddl","数据库与表的基本操作","DDL（Data Definition Language）用于定义数据库结构，包括创建、修改、删除数据库和表。下面介绍 MySQL 中常用的 DDL 语句。",{"path":1117,"title":1118,"description":1119,"category":10,"score":85},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdml","数据操作","DML（Data Manipulation Language）用于对表中的数据进行增（INSERT）、删（DELETE）、改（UPDATE）。下面详细介绍这三类操作。",{"series":1121,"title":12,"items":1122,"index":85,"prev":1152,"next":1153},"booklet\u002Fsql\u002Fmysql",[1123,1127,1131,1135,1139,1141,1143,1144,1146,1148,1150],{"path":1124,"title":1125,"date":1126,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fauth","用户与权限管理","2021-06-06",{"path":1128,"title":1129,"date":1130,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbackup","备份与恢复","2024-02-23",{"path":1132,"title":1133,"date":1134,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbase","MySQL 基础概念","2021-03-18",{"path":1136,"title":1137,"date":1138,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fconstraints","约束","2020-03-31",{"path":1113,"title":1114,"date":1140,"pinned":15},"2024-07-14",{"path":1117,"title":1118,"date":1142,"pinned":15},"2024-05-30",{"path":7,"title":8,"date":14,"pinned":15},{"path":1105,"title":1106,"date":1145,"pinned":15},"2025-04-04",{"path":1101,"title":1102,"date":1147,"pinned":15},"2025-11-29",{"path":1097,"title":1098,"date":1149,"pinned":15},"2026-01-19",{"path":1109,"title":1110,"date":1151,"pinned":15},"2024-10-16",{"path":1117,"title":1118,"date":1142,"pinned":15},{"path":1105,"title":1106,"date":1145,"pinned":15}]