[{"data":1,"prerenderedAt":2581},["ShallowReactive",2],{"subject-dbk":3},[4],{"id":5,"title":6,"body":7,"class":2564,"description":49,"extension":2565,"meta":2566,"navigation":2567,"path":2569,"pdfDownload":2570,"scope":2571,"scopeName":2572,"seo":2573,"stem":2574,"subject":2575,"subjectName":2576,"type":2577,"typeName":2578,"year":2579,"__hash__":2580},"faecher\u002Ffaecher\u002Fdbk\u002F7-8-cs-sa2.md","Cheat-Sheet – Schulaufgabe 2",{"type":8,"value":9,"toc":2529},"minimark",[10,15,22,27,32,43,102,106,120,151,155,169,202,206,389,393,407,411,545,549,577,581,590,596,615,620,642,647,669,673,688,692,717,720,863,867,870,873,887,891,902,905,924,928,1023,1027,1039,1043,1046,1049,1053,1062,1091,1095,1102,1105,1202,1207,1210,1213,1216,1254,1258,1278,1282,1301,1305,1339,1342,1345,1349,1380,1382,1385,1388,1402,1406,1426,1429,1536,1539,1559,1563,1571,1574,1709,1712,1726,1730,1734,1757,1760,1763,1766,1769,1772,1775,1778,1781,1817,1821,2098,2101,2104,2143,2155,2158,2161,2165,2308,2311,2323,2326,2329,2340,2349,2353,2356,2359,2362,2365,2368,2385,2389,2392,2394,2396,2398,2415,2419,2525],[11,12,14],"h1",{"id":13},"variablen-in-mysql","Variablen in MySQL",[16,17,18],"ul",{},[19,20,21],"li",{},"Variablen dienen zur temporären Speicherung von Werten innerhalb von SQL-Sitzungen, Stored Procedures oder Funktionen.",[23,24,26],"h2",{"id":25},"typen","Typen",[28,29,31],"h3",{"id":30},"lokale-variablen","Lokale Variablen",[16,33,34,37,40],{},[19,35,36],{},"Nur innerhalb eines BEGIN...END-Blocks gültig (z.B. in Stored Procedures \u002F Functions)",[19,38,39],{},"Müssen mit DECLARE deklariert werden",[19,41,42],{},"Existieren nur während der Ausführung der Routine",[44,45,50],"pre",{"className":46,"code":47,"language":48,"meta":49,"style":49},"language-sql shiki shiki-themes github-light github-dark","DECLARE variablen_name INT DEFAULT 0;\n\nSET variablen_name = 42;\n\n","sql","",[51,52,53,79,86],"code",{"__ignoreMap":49},[54,55,58,62,66,69,72,76],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"szBVR","DECLARE",[54,63,65],{"class":64},"sVt8B"," variablen_name ",[54,67,68],{"class":60},"INT",[54,70,71],{"class":60}," DEFAULT",[54,73,75],{"class":74},"sj4cs"," 0",[54,77,78],{"class":64},";\n",[54,80,82],{"class":56,"line":81},2,[54,83,85],{"emptyLinePlaceholder":84},true,"\n",[54,87,89,92,94,97,100],{"class":56,"line":88},3,[54,90,91],{"class":60},"SET",[54,93,65],{"class":64},[54,95,96],{"class":60},"=",[54,98,99],{"class":74}," 42",[54,101,78],{"class":64},[28,103,105],{"id":104},"session-variablen","Session Variablen",[16,107,108,111,114,117],{},[19,109,110],{},"Gültig für die gesamte aktuelle Datenbankverbindung (Session)",[19,112,113],{},"Beginnen immer mit @",[19,115,116],{},"Keine Deklaration notwendig",[19,118,119],{},"Werden automatisch gelöscht, wenn die Session endet",[44,121,123],{"className":46,"code":122,"language":48,"meta":49,"style":49},"SET @meine_variable = 100;\n\nSELECT @meine_variable;\n\n",[51,124,125,139,143],{"__ignoreMap":49},[54,126,127,129,132,134,137],{"class":56,"line":57},[54,128,91],{"class":60},[54,130,131],{"class":64}," @meine_variable ",[54,133,96],{"class":60},[54,135,136],{"class":74}," 100",[54,138,78],{"class":64},[54,140,141],{"class":56,"line":81},[54,142,85],{"emptyLinePlaceholder":84},[54,144,145,148],{"class":56,"line":88},[54,146,147],{"class":60},"SELECT",[54,149,150],{"class":64}," @meine_variable;\n",[28,152,154],{"id":153},"globale-system-variablen","Globale System-Variablen",[16,156,157,160,163,166],{},[19,158,159],{},"Gelten für den gesamten MySQL-Server (alle Sessions)",[19,161,162],{},"Beginnen mit @@",[19,164,165],{},"Können nur mit ausreichenden Berechtigungen geändert werden",[19,167,168],{},"Änderungen gelten sofort, aber nicht dauerhaft (nach Neustart zurückgesetzt)",[44,170,172],{"className":46,"code":171,"language":48,"meta":49,"style":49},"SET GLOBAL event_scheduler = ON;\n\nSELECT @@autocommit;\n\n",[51,173,174,191,195],{"__ignoreMap":49},[54,175,176,178,181,184,186,189],{"class":56,"line":57},[54,177,91],{"class":60},[54,179,180],{"class":60}," GLOBAL",[54,182,183],{"class":64}," event_scheduler ",[54,185,96],{"class":60},[54,187,188],{"class":60}," ON",[54,190,78],{"class":64},[54,192,193],{"class":56,"line":81},[54,194,85],{"emptyLinePlaceholder":84},[54,196,197,199],{"class":56,"line":88},[54,198,147],{"class":60},[54,200,201],{"class":64}," @@autocommit;\n",[28,203,205],{"id":204},"verwendungsbeispiel","Verwendungsbeispiel",[44,207,209],{"className":46,"code":208,"language":48,"meta":49,"style":49},"DELIMITER \u002F\u002F\n\nCREATE PROCEDURE var_beispiel()\n\nBEGIN\n\n-- Lokale Variable\n\nDECLARE lokал INT DEFAULT 0;\n\nSET lokal = 10;\n\n-- Session-Variable setzen\n\nSET @session_var = lokal * 2;\n\nEND \u002F\u002F\n\nDELIMITER ;\n\nCALL var_beispiel();\n\nSELECT @session_var; -- Ergebnis: 20\n\n",[51,210,211,219,223,234,239,245,250,257,262,278,283,298,303,309,314,334,339,348,353,359,364,373,378],{"__ignoreMap":49},[54,212,213,216],{"class":56,"line":57},[54,214,215],{"class":64},"DELIMITER ",[54,217,218],{"class":60},"\u002F\u002F\n",[54,220,221],{"class":56,"line":81},[54,222,85],{"emptyLinePlaceholder":84},[54,224,225,228,231],{"class":56,"line":88},[54,226,227],{"class":60},"CREATE",[54,229,230],{"class":60}," PROCEDURE",[54,232,233],{"class":64}," var_beispiel()\n",[54,235,237],{"class":56,"line":236},4,[54,238,85],{"emptyLinePlaceholder":84},[54,240,242],{"class":56,"line":241},5,[54,243,244],{"class":60},"BEGIN\n",[54,246,248],{"class":56,"line":247},6,[54,249,85],{"emptyLinePlaceholder":84},[54,251,253],{"class":56,"line":252},7,[54,254,256],{"class":255},"sJ8bj","-- Lokale Variable\n",[54,258,260],{"class":56,"line":259},8,[54,261,85],{"emptyLinePlaceholder":84},[54,263,265,267,270,272,274,276],{"class":56,"line":264},9,[54,266,61],{"class":60},[54,268,269],{"class":64}," lokал ",[54,271,68],{"class":60},[54,273,71],{"class":60},[54,275,75],{"class":74},[54,277,78],{"class":64},[54,279,281],{"class":56,"line":280},10,[54,282,85],{"emptyLinePlaceholder":84},[54,284,286,288,291,293,296],{"class":56,"line":285},11,[54,287,91],{"class":60},[54,289,290],{"class":64}," lokal ",[54,292,96],{"class":60},[54,294,295],{"class":74}," 10",[54,297,78],{"class":64},[54,299,301],{"class":56,"line":300},12,[54,302,85],{"emptyLinePlaceholder":84},[54,304,306],{"class":56,"line":305},13,[54,307,308],{"class":255},"-- Session-Variable setzen\n",[54,310,312],{"class":56,"line":311},14,[54,313,85],{"emptyLinePlaceholder":84},[54,315,317,319,322,324,326,329,332],{"class":56,"line":316},15,[54,318,91],{"class":60},[54,320,321],{"class":64}," @session_var ",[54,323,96],{"class":60},[54,325,290],{"class":64},[54,327,328],{"class":60},"*",[54,330,331],{"class":74}," 2",[54,333,78],{"class":64},[54,335,337],{"class":56,"line":336},16,[54,338,85],{"emptyLinePlaceholder":84},[54,340,342,345],{"class":56,"line":341},17,[54,343,344],{"class":60},"END",[54,346,347],{"class":60}," \u002F\u002F\n",[54,349,351],{"class":56,"line":350},18,[54,352,85],{"emptyLinePlaceholder":84},[54,354,356],{"class":56,"line":355},19,[54,357,358],{"class":64},"DELIMITER ;\n",[54,360,362],{"class":56,"line":361},20,[54,363,85],{"emptyLinePlaceholder":84},[54,365,367,370],{"class":56,"line":366},21,[54,368,369],{"class":60},"CALL",[54,371,372],{"class":64}," var_beispiel();\n",[54,374,376],{"class":56,"line":375},22,[54,377,85],{"emptyLinePlaceholder":84},[54,379,381,383,386],{"class":56,"line":380},23,[54,382,147],{"class":60},[54,384,385],{"class":64}," @session_var; ",[54,387,388],{"class":255},"-- Ergebnis: 20\n",[11,390,392],{"id":391},"stored-procedures","Stored Procedures",[16,394,395,398,401,404],{},[19,396,397],{},"Gespeicherte Programme auf dem Server, die mehrere SQL-Befehle ausführen Gespeicherte Programme auf dem Server (Datenbank)",[19,399,400],{},"Führen mehrere SQL-Befehle als eine einzige Einheit aus",[19,402,403],{},"Können Parameter akzeptieren und Werte zurückgeben",[19,405,406],{},"Werden zur Kapselung von Geschäftslogik und zur Verbesserung der Leistung\u002FSicherheit verwendet",[23,408,410],{"id":409},"erstellen","Erstellen",[44,412,414],{"className":46,"code":413,"language":48,"meta":49,"style":49},"DELIMITER \u002F\u002F\n\nCREATE PROCEDURE proc_name(in param1 int, out param2 int)\n\nBEGIN\n\nSELECT Count(*)\n\nINTO param2\n\nFROM users\n\nWHERE age > param1;\n\nEND \u002F\u002F\n\ndelimiter ;\n\n",[51,415,416,422,426,458,462,466,470,484,488,496,500,508,512,526,530,536,540],{"__ignoreMap":49},[54,417,418,420],{"class":56,"line":57},[54,419,215],{"class":64},[54,421,218],{"class":60},[54,423,424],{"class":56,"line":81},[54,425,85],{"emptyLinePlaceholder":84},[54,427,428,430,432,435,438,441,444,447,450,453,455],{"class":56,"line":88},[54,429,227],{"class":60},[54,431,230],{"class":60},[54,433,434],{"class":64}," proc_name(",[54,436,437],{"class":60},"in",[54,439,440],{"class":64}," param1 ",[54,442,443],{"class":60},"int",[54,445,446],{"class":64},", ",[54,448,449],{"class":60},"out",[54,451,452],{"class":64}," param2 ",[54,454,443],{"class":60},[54,456,457],{"class":64},")\n",[54,459,460],{"class":56,"line":236},[54,461,85],{"emptyLinePlaceholder":84},[54,463,464],{"class":56,"line":241},[54,465,244],{"class":60},[54,467,468],{"class":56,"line":247},[54,469,85],{"emptyLinePlaceholder":84},[54,471,472,474,477,480,482],{"class":56,"line":252},[54,473,147],{"class":60},[54,475,476],{"class":74}," Count",[54,478,479],{"class":64},"(",[54,481,328],{"class":60},[54,483,457],{"class":64},[54,485,486],{"class":56,"line":259},[54,487,85],{"emptyLinePlaceholder":84},[54,489,490,493],{"class":56,"line":264},[54,491,492],{"class":60},"INTO",[54,494,495],{"class":64}," param2\n",[54,497,498],{"class":56,"line":280},[54,499,85],{"emptyLinePlaceholder":84},[54,501,502,505],{"class":56,"line":285},[54,503,504],{"class":60},"FROM",[54,506,507],{"class":64}," users\n",[54,509,510],{"class":56,"line":300},[54,511,85],{"emptyLinePlaceholder":84},[54,513,514,517,520,523],{"class":56,"line":305},[54,515,516],{"class":60},"WHERE",[54,518,519],{"class":64}," age ",[54,521,522],{"class":60},">",[54,524,525],{"class":64}," param1;\n",[54,527,528],{"class":56,"line":311},[54,529,85],{"emptyLinePlaceholder":84},[54,531,532,534],{"class":56,"line":316},[54,533,344],{"class":60},[54,535,347],{"class":60},[54,537,538],{"class":56,"line":336},[54,539,85],{"emptyLinePlaceholder":84},[54,541,542],{"class":56,"line":341},[54,543,544],{"class":64},"delimiter ;\n",[23,546,548],{"id":547},"aufrufen","Aufrufen",[44,550,552],{"className":46,"code":551,"language":48,"meta":49,"style":49},"CALL proc_name(18, @result);\n\nSELECT @result;\n\n",[51,553,554,566,570],{"__ignoreMap":49},[54,555,556,558,560,563],{"class":56,"line":57},[54,557,369],{"class":60},[54,559,434],{"class":64},[54,561,562],{"class":74},"18",[54,564,565],{"class":64},", @result);\n",[54,567,568],{"class":56,"line":81},[54,569,85],{"emptyLinePlaceholder":84},[54,571,572,574],{"class":56,"line":88},[54,573,147],{"class":60},[54,575,576],{"class":64}," @result;\n",[23,578,580],{"id":579},"parameter","Parameter",[582,583,584,585,589],"p",{},"Diese Modi legen die ",[586,587,588],"strong",{},"Richtung des Datenflusses"," fest.",[591,592,593],"ol",{},[19,594,595],{},"Input (IN)",[16,597,598,605,608],{},[19,599,600,601,604],{},"Datenfluss ",[586,602,603],{},"zur"," aufgerufenen Einheit (Lesen).",[19,606,607],{},"Übergabe eines Anfangswertes.",[19,609,610,611,614],{},"Der Wert in der aufrufenden Einheit bleibt ",[586,612,613],{},"unverändert",".",[591,616,617],{"start":81},[19,618,619],{},"Output (OUT)",[16,621,622,632,635],{},[19,623,600,624,627,628,631],{},[586,625,626],{},"von"," der aufgerufenen Einheit ",[586,629,630],{},"zurück"," an die aufrufende Einheit.",[19,633,634],{},"Rückgabe eines oder mehrerer Ergebnisse.",[19,636,637,638,641],{},"Der zugewiesene Wert ",[586,639,640],{},"ersetzt"," den ursprünglichen Wert beim Aufrufer.",[591,643,644],{"start":88},[19,645,646],{},"Input\u002FOutput (INOUT)",[16,648,649,657,660],{},[19,650,600,651,653,654,656],{},[586,652,603],{}," und ",[586,655,626],{}," der aufgerufenen Einheit (Lesen und Schreiben).",[19,658,659],{},"Dient zur Modifikation eines existierenden Wertes.",[19,661,662,663,666,667,641],{},"Der ",[586,664,665],{},"modifizierte"," Wert ",[586,668,640],{},[23,670,672],{"id":671},"löschen","Löschen",[44,674,676],{"className":46,"code":675,"language":48,"meta":49,"style":49},"DROP PROCEDURE proc_name;\n\n",[51,677,678],{"__ignoreMap":49},[54,679,680,683,685],{"class":56,"line":57},[54,681,682],{"class":60},"DROP",[54,684,230],{"class":60},[54,686,687],{"class":64}," proc_name;\n",[11,689,691],{"id":690},"stored-functions","Stored Functions",[16,693,694,711],{},[19,695,696,699,700,703,704,707,708,614],{},[586,697,698],{},"Definition:"," Gespeicherte SQL-Routinen in der DB. Führen als Einheit aus und ",[586,701,702],{},"geben immer genau einen Wert zurück",". Benötigen ",[586,705,706],{},"RETURNS","-Typ. Optional ",[586,709,710],{},"DETERMINISTIC",[19,712,713,716],{},[586,714,715],{},"Einsatz:"," Kapselung\u002FWiederverwendung von Logik\u002FBerechnungen. Vereinfachen komplexe SELECT-Abfragen. Sichern Datenkonsistenz\u002FIntegrität. Performance-Verbesserung (vorkompiliert).",[23,718,410],{"id":719},"erstellen-1",[44,721,723],{"className":46,"code":722,"language":48,"meta":49,"style":49},"DELIMITER \u002F\u002F\n\nCREATE FUNCTION get_user_count(min_age INT)\n\nRETURNS INT\n\nDETERMINISTIC\n\nBEGIN\n\nDECLARE total INT;\n\nSELECT COUNT(*) INTO total FROM users WHERE age >= min_age;\n\nRETURN total;\n\nEND \u002F\u002F\n\nDELIMITER ;\n\n",[51,724,725,731,735,753,757,764,768,773,777,781,785,796,800,833,837,845,849,855,859],{"__ignoreMap":49},[54,726,727,729],{"class":56,"line":57},[54,728,215],{"class":64},[54,730,218],{"class":60},[54,732,733],{"class":56,"line":81},[54,734,85],{"emptyLinePlaceholder":84},[54,736,737,739,742,746,749,751],{"class":56,"line":88},[54,738,227],{"class":60},[54,740,741],{"class":60}," FUNCTION",[54,743,745],{"class":744},"sScJk"," get_user_count",[54,747,748],{"class":64},"(min_age ",[54,750,68],{"class":60},[54,752,457],{"class":64},[54,754,755],{"class":56,"line":236},[54,756,85],{"emptyLinePlaceholder":84},[54,758,759,761],{"class":56,"line":241},[54,760,706],{"class":60},[54,762,763],{"class":60}," INT\n",[54,765,766],{"class":56,"line":247},[54,767,85],{"emptyLinePlaceholder":84},[54,769,770],{"class":56,"line":252},[54,771,772],{"class":64},"DETERMINISTIC\n",[54,774,775],{"class":56,"line":259},[54,776,85],{"emptyLinePlaceholder":84},[54,778,779],{"class":56,"line":264},[54,780,244],{"class":60},[54,782,783],{"class":56,"line":280},[54,784,85],{"emptyLinePlaceholder":84},[54,786,787,789,792,794],{"class":56,"line":285},[54,788,61],{"class":60},[54,790,791],{"class":64}," total ",[54,793,68],{"class":60},[54,795,78],{"class":64},[54,797,798],{"class":56,"line":300},[54,799,85],{"emptyLinePlaceholder":84},[54,801,802,804,807,809,811,814,816,818,820,823,825,827,830],{"class":56,"line":305},[54,803,147],{"class":60},[54,805,806],{"class":74}," COUNT",[54,808,479],{"class":64},[54,810,328],{"class":60},[54,812,813],{"class":64},") ",[54,815,492],{"class":60},[54,817,791],{"class":64},[54,819,504],{"class":60},[54,821,822],{"class":64}," users ",[54,824,516],{"class":60},[54,826,519],{"class":64},[54,828,829],{"class":60},">=",[54,831,832],{"class":64}," min_age;\n",[54,834,835],{"class":56,"line":311},[54,836,85],{"emptyLinePlaceholder":84},[54,838,839,842],{"class":56,"line":316},[54,840,841],{"class":60},"RETURN",[54,843,844],{"class":64}," total;\n",[54,846,847],{"class":56,"line":336},[54,848,85],{"emptyLinePlaceholder":84},[54,850,851,853],{"class":56,"line":341},[54,852,344],{"class":60},[54,854,347],{"class":60},[54,856,857],{"class":56,"line":350},[54,858,85],{"emptyLinePlaceholder":84},[54,860,861],{"class":56,"line":355},[54,862,358],{"class":64},[23,864,866],{"id":865},"aufruf","Aufruf",[582,868,869],{},"SELECT get_user_count(18);",[23,871,672],{"id":872},"löschen-1",[44,874,876],{"className":46,"code":875,"language":48,"meta":49,"style":49},"DROP FUNCTION get_user_count;\n\n",[51,877,878],{"__ignoreMap":49},[54,879,880,882,884],{"class":56,"line":57},[54,881,682],{"class":60},[54,883,741],{"class":60},[54,885,886],{"class":64}," get_user_count;\n",[11,888,890],{"id":889},"transaktionen","Transaktionen",[582,892,893,894,897,898,901],{},"Eine ",[586,895,896],{},"Transaktion"," bündelt mehrere SQL-Befehle zu einer sicheren, logischen Einheit und erfüllt die ",[586,899,900],{},"ACID","-Prinzipien.",[582,903,904],{},"Sie wird immer dann verwendet, wenn:",[591,906,907,913,919],{},[19,908,909,912],{},[586,910,911],{},"Mehrere Aktionen zusammengehören und nur als Ganzes gültig sind"," (z.B. die Überweisung von Geld, bei der sowohl das Abbuchen als auch das Gutschreiben erfolgreich sein muss).",[19,914,915,918],{},[586,916,917],{},"Die Konsistenz der Datenbank zu jedem Zeitpunkt garantiert werden muss",", auch wenn mehrere Benutzer gleichzeitig Änderungen vornehmen.",[19,920,921],{},[586,922,923],{},"Änderungen bei Fehlern oder bewusstem Abbruch rückgängig gemacht werden müssen.",[23,925,927],{"id":926},"beispiel","Beispiel",[44,929,931],{"className":46,"code":930,"language":48,"meta":49,"style":49},"START TRANSACTION;\n\nUPDATE accounts SET balance = balance - 100 WHERE id = 1;\n\nUPDATE accounts SET balance = balance + 100 WHERE id = 2;\n\nCOMMIT;\n\n",[51,932,933,940,944,979,983,1012,1016],{"__ignoreMap":49},[54,934,935,938],{"class":56,"line":57},[54,936,937],{"class":60},"START TRANSACTION",[54,939,78],{"class":64},[54,941,942],{"class":56,"line":81},[54,943,85],{"emptyLinePlaceholder":84},[54,945,946,949,952,954,957,959,961,964,966,969,972,974,977],{"class":56,"line":88},[54,947,948],{"class":60},"UPDATE",[54,950,951],{"class":64}," accounts ",[54,953,91],{"class":60},[54,955,956],{"class":64}," balance ",[54,958,96],{"class":60},[54,960,956],{"class":64},[54,962,963],{"class":60},"-",[54,965,136],{"class":74},[54,967,968],{"class":60}," WHERE",[54,970,971],{"class":64}," id ",[54,973,96],{"class":60},[54,975,976],{"class":74}," 1",[54,978,78],{"class":64},[54,980,981],{"class":56,"line":236},[54,982,85],{"emptyLinePlaceholder":84},[54,984,985,987,989,991,993,995,997,1000,1002,1004,1006,1008,1010],{"class":56,"line":241},[54,986,948],{"class":60},[54,988,951],{"class":64},[54,990,91],{"class":60},[54,992,956],{"class":64},[54,994,96],{"class":60},[54,996,956],{"class":64},[54,998,999],{"class":60},"+",[54,1001,136],{"class":74},[54,1003,968],{"class":60},[54,1005,971],{"class":64},[54,1007,96],{"class":60},[54,1009,331],{"class":74},[54,1011,78],{"class":64},[54,1013,1014],{"class":56,"line":247},[54,1015,85],{"emptyLinePlaceholder":84},[54,1017,1018,1021],{"class":56,"line":252},[54,1019,1020],{"class":60},"COMMIT",[54,1022,78],{"class":64},[23,1024,1026],{"id":1025},"rollback","Rollback",[44,1028,1030],{"className":46,"code":1029,"language":48,"meta":49,"style":49},"ROLLBACK;\n\n",[51,1031,1032],{"__ignoreMap":49},[54,1033,1034,1037],{"class":56,"line":57},[54,1035,1036],{"class":60},"ROLLBACK",[54,1038,78],{"class":64},[23,1040,1042],{"id":1041},"autocommit","Autocommit",[582,1044,1045],{},"SELECT @@autocommit;",[582,1047,1048],{},"SET autocommit = 0;",[23,1050,1052],{"id":1051},"multi-session","Multi-Session",[582,1054,1055,653,1058,1061],{},[586,1056,1057],{},"Wenn mehrere Benutzer (Sessions) gleichzeitig versuchen, dieselben Daten zu ändern, können Probleme der Datenkonsistenz",[586,1059,1060],{},"Datenintegrität"," entstehen.",[16,1063,1064,1078],{},[19,1065,1066,1069,1070,446,1074,1077],{},[586,1067,1068],{},"Problem:"," Ohne Mechanismen zur Steuerung des gleichzeitigen Zugriffs könnten sich Transaktionen gegenseitig beeinflussen und zu falschen Ergebnissen führen (z.B. ",[1071,1072,1073],"em",{},"Lost Update",[1071,1075,1076],{},"Dirty Read",").",[19,1079,1080,1083,1084,653,1087,1090],{},[586,1081,1082],{},"Lösung:"," Datenbanken verwenden ",[586,1085,1086],{},"Locking",[586,1088,1089],{},"Isolation Levels"," (siehe unten), um konkurrierenden Zugriff zu regeln. Locks stellen sicher, dass eine Ressource (z.B. eine Zeile in einer Tabelle) während der Bearbeitung durch eine Transaktion für andere Transaktionen gesperrt ist.",[23,1092,1094],{"id":1093},"levels","Levels",[582,1096,1097,1098,1101],{},"Die ",[586,1099,1100],{},"Isolationsebene (Isolation Level)"," bestimmt, wie stark sich gleichzeitige Transaktionen gegenseitig beeinflussen dürfen. Sie ist ein Kompromiss zwischen Datenkonsistenz und Performance.",[582,1103,1104],{},"MySQL unterstützt (standardmäßig) vier Isolation Levels, die unterschiedliche Probleme verhindern:",[16,1106,1107,1134,1158,1180],{},[19,1108,1109,1112],{},[586,1110,1111],{},"READ UNCOMMITTED",[16,1113,1114,1120],{},[19,1115,1116,1119],{},[586,1117,1118],{},"Beschreibung:"," Niedrigste Isolation. Eine Transaktion sieht unbestätigte (ungecommittete) Änderungen anderer Transaktionen.",[19,1121,1122,1125,1126,446,1128,653,1131,614],{},[586,1123,1124],{},"Probleme:"," Erlaubt ",[1071,1127,1076],{},[1071,1129,1130],{},"Non-Repeatable Read",[1071,1132,1133],{},"Phantom Read",[19,1135,1136,1139],{},[586,1137,1138],{},"READ COMMITTED",[16,1140,1141,1146],{},[19,1142,1143,1145],{},[586,1144,1118],{}," Eine Transaktion sieht nur Änderungen, die committed wurden.",[19,1147,1148,1150,1151,1153,1154,653,1156,614],{},[586,1149,1124],{}," Verhindert ",[1071,1152,1076],{},", erlaubt aber ",[1071,1155,1130],{},[1071,1157,1133],{},[19,1159,1160,1163],{},[586,1161,1162],{},"REPEATABLE READ",[16,1164,1165,1170],{},[19,1166,1167,1169],{},[586,1168,1118],{}," MySQL-Standard. Eine Transaktion erhält bei wiederholtem Lesen dieselben Daten, solange die Transaktion läuft.",[19,1171,1172,1150,1174,653,1176,1153,1178,614],{},[586,1173,1124],{},[1071,1175,1076],{},[1071,1177,1130],{},[1071,1179,1133],{},[19,1181,1182,1185],{},[586,1183,1184],{},"SERIALIZABLE",[16,1186,1187,1192],{},[19,1188,1189,1191],{},[586,1190,1118],{}," Höchste Isolation. Die Transaktionen werden seriell ausgeführt, um größtmögliche Konsistenz zu gewährleisten.",[19,1193,1194,1150,1196,446,1198,653,1200,614],{},[586,1195,1124],{},[1071,1197,1076],{},[1071,1199,1130],{},[1071,1201,1133],{},[582,1203,1204],{},[586,1205,1206],{},"Ändern des Isolation Levels:",[582,1208,1209],{},"Eine Transaktion: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;",[582,1211,1212],{},"Gesamte Session: SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;",[23,1214,900],{"id":1215},"acid",[16,1217,1218,1232,1238,1244],{},[19,1219,1220,1223,1224,1227,1228,1231],{},[586,1221,1222],{},"Atomicity:"," Eine Transaktion ist eine unteilbare Einheit, die entweder komplett ausgeführt wird (",[1071,1225,1226],{},"commit",") oder komplett rückgängig gemacht wird (",[1071,1229,1230],{},"abort\u002Frollback","). Es gibt keinen \"halbfertigen\" Zustand.",[19,1233,1234,1237],{},[586,1235,1236],{},"Consistency:"," Eine Transaktion überführt die Datenbank von einem gültigen Zustand in einen anderen gültigen Zustand und hält dabei alle definierten Regeln und Integritätsbedingungen ein.",[19,1239,1240,1243],{},[586,1241,1242],{},"Isolation:"," Gleichzeitig ablaufende Transaktionen beeinflussen sich nicht gegenseitig. Jede Transaktion sieht es so, als wäre sie die einzige, die auf der Datenbank arbeitet.",[19,1245,1246,1249,1250,1253],{},[586,1247,1248],{},"Durability:"," Sobald eine Transaktion erfolgreich abgeschlossen (",[1071,1251,1252],{},"committed",") wurde, sind ihre Änderungen dauerhaft gespeichert und überleben Systemausfälle wie Stromausfälle oder Abstürze.",[11,1255,1257],{"id":1256},"events","Events",[16,1259,1260,1266,1272],{},[19,1261,1262,1265],{},[586,1263,1264],{},"Reaktion auf Aktionen:"," Events ermöglichen es, dass verschiedene Teile einer Anwendung auf bestimmte Vorkommnisse (z.B. Mausklick, Datenänderung) reagieren, ohne direkt miteinander gekoppelt zu sein.",[19,1267,1268,1271],{},[586,1269,1270],{},"Entkopplung und Modularität:"," Sie fördern lose Kopplung, da der Auslöser eines Events (Publisher) nicht wissen muss, wer darauf reagiert (Subscriber). Das verbessert die Wartbarkeit und Erweiterbarkeit.",[19,1273,1274,1277],{},[586,1275,1276],{},"Asynchrone Kommunikation:"," Events können für die asynchrone Kommunikation verwendet werden, um zeitintensive Aufgaben in den Hintergrund zu verlagern und die Hauptanwendung nicht zu blockieren.",[23,1279,1281],{"id":1280},"aktivieren","Aktivieren",[44,1283,1285],{"className":46,"code":1284,"language":48,"meta":49,"style":49},"SET GLOBAL event_scheduler = ON;\n\n",[51,1286,1287],{"__ignoreMap":49},[54,1288,1289,1291,1293,1295,1297,1299],{"class":56,"line":57},[54,1290,91],{"class":60},[54,1292,180],{"class":60},[54,1294,183],{"class":64},[54,1296,96],{"class":60},[54,1298,188],{"class":60},[54,1300,78],{"class":64},[23,1302,1304],{"id":1303},"einmaliges-event","Einmaliges Event",[44,1306,1308],{"className":46,"code":1307,"language":48,"meta":49,"style":49},"CREATE EVENT one_time_event\n\nON SCHEDULE AT '2026-01-01 00:00:00'\n\n",[51,1309,1310,1320,1324],{"__ignoreMap":49},[54,1311,1312,1314,1317],{"class":56,"line":57},[54,1313,227],{"class":60},[54,1315,1316],{"class":60}," EVENT",[54,1318,1319],{"class":64}," one_time_event\n",[54,1321,1322],{"class":56,"line":81},[54,1323,85],{"emptyLinePlaceholder":84},[54,1325,1326,1329,1332,1335],{"class":56,"line":88},[54,1327,1328],{"class":60},"ON",[54,1330,1331],{"class":64}," SCHEDULE ",[54,1333,1334],{"class":60},"AT",[54,1336,1338],{"class":1337},"sZZnC"," '2026-01-01 00:00:00'\n",[582,1340,1341],{},"DO",[582,1343,1344],{},"INSERT INTO test VALUES ('Happy New Year');",[23,1346,1348],{"id":1347},"wiederkehrendes-event","Wiederkehrendes Event",[44,1350,1352],{"className":46,"code":1351,"language":48,"meta":49,"style":49},"CREATE EVENT my_event\n\nON SCHEDULE EVERY 1 DAY\n\n",[51,1353,1354,1363,1367],{"__ignoreMap":49},[54,1355,1356,1358,1360],{"class":56,"line":57},[54,1357,227],{"class":60},[54,1359,1316],{"class":60},[54,1361,1362],{"class":64}," my_event\n",[54,1364,1365],{"class":56,"line":81},[54,1366,85],{"emptyLinePlaceholder":84},[54,1368,1369,1371,1374,1377],{"class":56,"line":88},[54,1370,1328],{"class":60},[54,1372,1373],{"class":64}," SCHEDULE EVERY ",[54,1375,1376],{"class":74},"1",[54,1378,1379],{"class":60}," DAY\n",[582,1381,1341],{},[582,1383,1384],{},"DELETE FROM logs WHERE created_at \u003C NOW() - INTERVAL 30 DAY;",[23,1386,672],{"id":1387},"löschen-2",[44,1389,1391],{"className":46,"code":1390,"language":48,"meta":49,"style":49},"DROP EVENT my_event;\n\n",[51,1392,1393],{"__ignoreMap":49},[54,1394,1395,1397,1399],{"class":56,"line":57},[54,1396,682],{"class":60},[54,1398,1316],{"class":60},[54,1400,1401],{"class":64}," my_event;\n",[11,1403,1405],{"id":1404},"triggers","Triggers",[16,1407,1408,1414,1420],{},[19,1409,1410,1413],{},[586,1411,1412],{},"Automatisierung:"," Automatische Ausführung von Aktionen bei Datenänderungen (INSERT, UPDATE, DELETE).",[19,1415,1416,1419],{},[586,1417,1418],{},"Datenintegrität\u002FValidierung:"," Sicherstellen komplexer Geschäftsregeln und Datenkonsistenz.",[19,1421,1422,1425],{},[586,1423,1424],{},"Protokollierung\u002FAudit:"," Nachverfolgen und Aufzeichnen von Änderungen an Daten.",[23,1427,410],{"id":1428},"erstellen-2",[44,1430,1432],{"className":46,"code":1431,"language":48,"meta":49,"style":49},"DELIMITER \u002F\u002F\n\nCREATE TRIGGER before_user_insert\n\nBEFORE INSERT ON users\n\nFOR EACH ROW\n\nBEGIN\n\nSET NEW.created_at = NOW();\n\nEND \u002F\u002F\n\nDELIMITER ;\n\n",[51,1433,1434,1440,1444,1454,1458,1470,1474,1485,1489,1493,1497,1518,1522,1528,1532],{"__ignoreMap":49},[54,1435,1436,1438],{"class":56,"line":57},[54,1437,215],{"class":64},[54,1439,218],{"class":60},[54,1441,1442],{"class":56,"line":81},[54,1443,85],{"emptyLinePlaceholder":84},[54,1445,1446,1448,1451],{"class":56,"line":88},[54,1447,227],{"class":60},[54,1449,1450],{"class":60}," TRIGGER",[54,1452,1453],{"class":744}," before_user_insert\n",[54,1455,1456],{"class":56,"line":236},[54,1457,85],{"emptyLinePlaceholder":84},[54,1459,1460,1463,1466,1468],{"class":56,"line":241},[54,1461,1462],{"class":60},"BEFORE",[54,1464,1465],{"class":60}," INSERT",[54,1467,188],{"class":60},[54,1469,507],{"class":64},[54,1471,1472],{"class":56,"line":247},[54,1473,85],{"emptyLinePlaceholder":84},[54,1475,1476,1479,1482],{"class":56,"line":252},[54,1477,1478],{"class":60},"FOR",[54,1480,1481],{"class":64}," EACH ",[54,1483,1484],{"class":60},"ROW\n",[54,1486,1487],{"class":56,"line":259},[54,1488,85],{"emptyLinePlaceholder":84},[54,1490,1491],{"class":56,"line":264},[54,1492,244],{"class":60},[54,1494,1495],{"class":56,"line":280},[54,1496,85],{"emptyLinePlaceholder":84},[54,1498,1499,1501,1504,1506,1509,1512,1515],{"class":56,"line":285},[54,1500,91],{"class":60},[54,1502,1503],{"class":74}," NEW",[54,1505,614],{"class":64},[54,1507,1508],{"class":74},"created_at",[54,1510,1511],{"class":60}," =",[54,1513,1514],{"class":60}," NOW",[54,1516,1517],{"class":64},"();\n",[54,1519,1520],{"class":56,"line":300},[54,1521,85],{"emptyLinePlaceholder":84},[54,1523,1524,1526],{"class":56,"line":305},[54,1525,344],{"class":60},[54,1527,347],{"class":60},[54,1529,1530],{"class":56,"line":311},[54,1531,85],{"emptyLinePlaceholder":84},[54,1533,1534],{"class":56,"line":316},[54,1535,358],{"class":64},[23,1537,26],{"id":1538},"typen-1",[16,1540,1541,1544,1547,1550,1553,1556],{},[19,1542,1543],{},"BEFORE INSERT",[19,1545,1546],{},"AFTER INSERT",[19,1548,1549],{},"BEFORE UPDATE",[19,1551,1552],{},"AFTER UPDATE",[19,1554,1555],{},"BEFORE DELETE",[19,1557,1558],{},"AFTER DELETE",[23,1560,1562],{"id":1561},"zugriff","Zugriff",[16,1564,1565,1568],{},[19,1566,1567],{},"NEW.column",[19,1569,1570],{},"OLD.column",[23,1572,927],{"id":1573},"beispiel-1",[44,1575,1577],{"className":46,"code":1576,"language":48,"meta":49,"style":49},"DELIMITER \u002F\u002F\n\nCREATE TRIGGER after_delete_user\n\nAFTER DELETE ON users\n\nFOR EACH ROW\n\nBEGIN\n\nINSERT INTO deleted_users_log(user_id, msg)\n\nVALUES (OLD.id,\n\nCONCAT(“User gelöscht: “, OLD.name));\n\nEND \u002F\u002F\n\nDELIMITER ;\n\n",[51,1578,1579,1585,1589,1598,1602,1614,1618,1626,1630,1634,1638,1646,1650,1669,1673,1691,1695,1701,1705],{"__ignoreMap":49},[54,1580,1581,1583],{"class":56,"line":57},[54,1582,215],{"class":64},[54,1584,218],{"class":60},[54,1586,1587],{"class":56,"line":81},[54,1588,85],{"emptyLinePlaceholder":84},[54,1590,1591,1593,1595],{"class":56,"line":88},[54,1592,227],{"class":60},[54,1594,1450],{"class":60},[54,1596,1597],{"class":744}," after_delete_user\n",[54,1599,1600],{"class":56,"line":236},[54,1601,85],{"emptyLinePlaceholder":84},[54,1603,1604,1607,1610,1612],{"class":56,"line":241},[54,1605,1606],{"class":60},"AFTER",[54,1608,1609],{"class":60}," DELETE",[54,1611,188],{"class":60},[54,1613,507],{"class":64},[54,1615,1616],{"class":56,"line":247},[54,1617,85],{"emptyLinePlaceholder":84},[54,1619,1620,1622,1624],{"class":56,"line":252},[54,1621,1478],{"class":60},[54,1623,1481],{"class":64},[54,1625,1484],{"class":60},[54,1627,1628],{"class":56,"line":259},[54,1629,85],{"emptyLinePlaceholder":84},[54,1631,1632],{"class":56,"line":264},[54,1633,244],{"class":60},[54,1635,1636],{"class":56,"line":280},[54,1637,85],{"emptyLinePlaceholder":84},[54,1639,1640,1643],{"class":56,"line":285},[54,1641,1642],{"class":60},"INSERT INTO",[54,1644,1645],{"class":64}," deleted_users_log(user_id, msg)\n",[54,1647,1648],{"class":56,"line":300},[54,1649,85],{"emptyLinePlaceholder":84},[54,1651,1652,1655,1658,1661,1663,1666],{"class":56,"line":305},[54,1653,1654],{"class":60},"VALUES",[54,1656,1657],{"class":64}," (",[54,1659,1660],{"class":74},"OLD",[54,1662,614],{"class":64},[54,1664,1665],{"class":74},"id",[54,1667,1668],{"class":64},",\n",[54,1670,1671],{"class":56,"line":311},[54,1672,85],{"emptyLinePlaceholder":84},[54,1674,1675,1678,1681,1683,1685,1688],{"class":56,"line":316},[54,1676,1677],{"class":74},"CONCAT",[54,1679,1680],{"class":64},"(“User gelöscht: “, ",[54,1682,1660],{"class":74},[54,1684,614],{"class":64},[54,1686,1687],{"class":74},"name",[54,1689,1690],{"class":64},"));\n",[54,1692,1693],{"class":56,"line":336},[54,1694,85],{"emptyLinePlaceholder":84},[54,1696,1697,1699],{"class":56,"line":341},[54,1698,344],{"class":60},[54,1700,347],{"class":60},[54,1702,1703],{"class":56,"line":350},[54,1704,85],{"emptyLinePlaceholder":84},[54,1706,1707],{"class":56,"line":355},[54,1708,358],{"class":64},[23,1710,672],{"id":1711},"löschen-3",[44,1713,1715],{"className":46,"code":1714,"language":48,"meta":49,"style":49},"DROP TRIGGER trigger_name;\n\n",[51,1716,1717],{"__ignoreMap":49},[54,1718,1719,1721,1723],{"class":56,"line":57},[54,1720,682],{"class":60},[54,1722,1450],{"class":60},[54,1724,1725],{"class":64}," trigger_name;\n",[11,1727,1729],{"id":1728},"beispiele-aus-dem-unterricht","Beispiele aus dem Unterricht",[23,1731,1733],{"id":1732},"procedure","Procedure",[44,1735,1737],{"className":46,"code":1736,"language":48,"meta":49,"style":49},"DELIMITER @@\n\nCREATE PROCEDURE proc_OrtEinfuegen(\n\n",[51,1738,1739,1744,1748],{"__ignoreMap":49},[54,1740,1741],{"class":56,"line":57},[54,1742,1743],{"class":64},"DELIMITER @@\n",[54,1745,1746],{"class":56,"line":81},[54,1747,85],{"emptyLinePlaceholder":84},[54,1749,1750,1752,1754],{"class":56,"line":88},[54,1751,227],{"class":60},[54,1753,230],{"class":60},[54,1755,1756],{"class":64}," proc_OrtEinfuegen(\n",[582,1758,1759],{},"IN id INT,",[582,1761,1762],{},"IN ort VARCHAR(255),",[582,1764,1765],{},"IN schulname VARCHAR(255)",[582,1767,1768],{},")",[582,1770,1771],{},"BEGIN",[582,1773,1774],{},"INSERT INTO kurse.ort (ortnr, ort, schule)",[582,1776,1777],{},"VALUES (id, ort, schulname);",[582,1779,1780],{},"END @@",[44,1782,1784],{"className":46,"code":1783,"language":48,"meta":49,"style":49},"DELIMITER ;\n\nCALL proc_OrtEinfuegen(71, 'Erlangen', 'Baumschule');\n\n",[51,1785,1786,1790,1794],{"__ignoreMap":49},[54,1787,1788],{"class":56,"line":57},[54,1789,358],{"class":64},[54,1791,1792],{"class":56,"line":81},[54,1793,85],{"emptyLinePlaceholder":84},[54,1795,1796,1798,1801,1804,1806,1809,1811,1814],{"class":56,"line":88},[54,1797,369],{"class":60},[54,1799,1800],{"class":64}," proc_OrtEinfuegen(",[54,1802,1803],{"class":74},"71",[54,1805,446],{"class":64},[54,1807,1808],{"class":1337},"'Erlangen'",[54,1810,446],{"class":64},[54,1812,1813],{"class":1337},"'Baumschule'",[54,1815,1816],{"class":64},");\n",[23,1818,1820],{"id":1819},"functions","Functions",[44,1822,1824],{"className":46,"code":1823,"language":48,"meta":49,"style":49},"DELIMITER $$\n\nCREATE FUNCTION fakultaet(n INT)\n\nRETURNS INT\n\nDETERMINISTIC\n\nBEGIN\n\nDECLARE ergebnis INT DEFAULT 1;\n\nDECLARE i INT DEFAULT 1;\n\nIF n \u003C 0 THEN\n\nRETURN NULL; -- negative Fakultät existiert nicht\n\nEND IF;\n\nWHILE i \u003C= n DO\n\nSET ergebnis = ergebnis * i;\n\nSET i = i + 1;\n\nEND WHILE;\n\nRETURN ergebnis;\n\nEND$$\n\nDELIMITER ;\n\nSELECT fakultaet(5) AS result;\n\n",[51,1825,1826,1831,1835,1851,1855,1861,1865,1869,1873,1877,1881,1896,1900,1915,1919,1935,1939,1952,1956,1965,1969,1982,1986,2001,2006,2023,2028,2038,2043,2051,2056,2064,2069,2074,2079],{"__ignoreMap":49},[54,1827,1828],{"class":56,"line":57},[54,1829,1830],{"class":64},"DELIMITER $$\n",[54,1832,1833],{"class":56,"line":81},[54,1834,85],{"emptyLinePlaceholder":84},[54,1836,1837,1839,1841,1844,1847,1849],{"class":56,"line":88},[54,1838,227],{"class":60},[54,1840,741],{"class":60},[54,1842,1843],{"class":744}," fakultaet",[54,1845,1846],{"class":64},"(n ",[54,1848,68],{"class":60},[54,1850,457],{"class":64},[54,1852,1853],{"class":56,"line":236},[54,1854,85],{"emptyLinePlaceholder":84},[54,1856,1857,1859],{"class":56,"line":241},[54,1858,706],{"class":60},[54,1860,763],{"class":60},[54,1862,1863],{"class":56,"line":247},[54,1864,85],{"emptyLinePlaceholder":84},[54,1866,1867],{"class":56,"line":252},[54,1868,772],{"class":64},[54,1870,1871],{"class":56,"line":259},[54,1872,85],{"emptyLinePlaceholder":84},[54,1874,1875],{"class":56,"line":264},[54,1876,244],{"class":60},[54,1878,1879],{"class":56,"line":280},[54,1880,85],{"emptyLinePlaceholder":84},[54,1882,1883,1885,1888,1890,1892,1894],{"class":56,"line":285},[54,1884,61],{"class":60},[54,1886,1887],{"class":64}," ergebnis ",[54,1889,68],{"class":60},[54,1891,71],{"class":60},[54,1893,976],{"class":74},[54,1895,78],{"class":64},[54,1897,1898],{"class":56,"line":300},[54,1899,85],{"emptyLinePlaceholder":84},[54,1901,1902,1904,1907,1909,1911,1913],{"class":56,"line":305},[54,1903,61],{"class":60},[54,1905,1906],{"class":64}," i ",[54,1908,68],{"class":60},[54,1910,71],{"class":60},[54,1912,976],{"class":74},[54,1914,78],{"class":64},[54,1916,1917],{"class":56,"line":311},[54,1918,85],{"emptyLinePlaceholder":84},[54,1920,1921,1924,1927,1930,1932],{"class":56,"line":316},[54,1922,1923],{"class":60},"IF",[54,1925,1926],{"class":64}," n ",[54,1928,1929],{"class":60},"\u003C",[54,1931,75],{"class":74},[54,1933,1934],{"class":60}," THEN\n",[54,1936,1937],{"class":56,"line":336},[54,1938,85],{"emptyLinePlaceholder":84},[54,1940,1941,1943,1946,1949],{"class":56,"line":341},[54,1942,841],{"class":60},[54,1944,1945],{"class":60}," NULL",[54,1947,1948],{"class":64},"; ",[54,1950,1951],{"class":255},"-- negative Fakultät existiert nicht\n",[54,1953,1954],{"class":56,"line":350},[54,1955,85],{"emptyLinePlaceholder":84},[54,1957,1958,1960,1963],{"class":56,"line":355},[54,1959,344],{"class":60},[54,1961,1962],{"class":60}," IF",[54,1964,78],{"class":64},[54,1966,1967],{"class":56,"line":361},[54,1968,85],{"emptyLinePlaceholder":84},[54,1970,1971,1974,1976,1979],{"class":56,"line":366},[54,1972,1973],{"class":60},"WHILE",[54,1975,1906],{"class":64},[54,1977,1978],{"class":60},"\u003C=",[54,1980,1981],{"class":64}," n DO\n",[54,1983,1984],{"class":56,"line":375},[54,1985,85],{"emptyLinePlaceholder":84},[54,1987,1988,1990,1992,1994,1996,1998],{"class":56,"line":380},[54,1989,91],{"class":60},[54,1991,1887],{"class":64},[54,1993,96],{"class":60},[54,1995,1887],{"class":64},[54,1997,328],{"class":60},[54,1999,2000],{"class":64}," i;\n",[54,2002,2004],{"class":56,"line":2003},24,[54,2005,85],{"emptyLinePlaceholder":84},[54,2007,2009,2011,2013,2015,2017,2019,2021],{"class":56,"line":2008},25,[54,2010,91],{"class":60},[54,2012,1906],{"class":64},[54,2014,96],{"class":60},[54,2016,1906],{"class":64},[54,2018,999],{"class":60},[54,2020,976],{"class":74},[54,2022,78],{"class":64},[54,2024,2026],{"class":56,"line":2025},26,[54,2027,85],{"emptyLinePlaceholder":84},[54,2029,2031,2033,2036],{"class":56,"line":2030},27,[54,2032,344],{"class":60},[54,2034,2035],{"class":60}," WHILE",[54,2037,78],{"class":64},[54,2039,2041],{"class":56,"line":2040},28,[54,2042,85],{"emptyLinePlaceholder":84},[54,2044,2046,2048],{"class":56,"line":2045},29,[54,2047,841],{"class":60},[54,2049,2050],{"class":64}," ergebnis;\n",[54,2052,2054],{"class":56,"line":2053},30,[54,2055,85],{"emptyLinePlaceholder":84},[54,2057,2059,2061],{"class":56,"line":2058},31,[54,2060,344],{"class":60},[54,2062,2063],{"class":64},"$$\n",[54,2065,2067],{"class":56,"line":2066},32,[54,2068,85],{"emptyLinePlaceholder":84},[54,2070,2072],{"class":56,"line":2071},33,[54,2073,358],{"class":64},[54,2075,2077],{"class":56,"line":2076},34,[54,2078,85],{"emptyLinePlaceholder":84},[54,2080,2082,2084,2087,2090,2092,2095],{"class":56,"line":2081},35,[54,2083,147],{"class":60},[54,2085,2086],{"class":64}," fakultaet(",[54,2088,2089],{"class":74},"5",[54,2091,813],{"class":64},[54,2093,2094],{"class":60},"AS",[54,2096,2097],{"class":64}," result;\n",[23,2099,1257],{"id":2100},"events-1",[582,2102,2103],{},"use bank;",[44,2105,2107],{"className":46,"code":2106,"language":48,"meta":49,"style":49},"create event test_event_03ALTER\n\non schedule every 1 minute ends '2026-02-03 20:31:00'\n\n",[51,2108,2109,2120,2124],{"__ignoreMap":49},[54,2110,2111,2114,2117],{"class":56,"line":57},[54,2112,2113],{"class":60},"create",[54,2115,2116],{"class":60}," event",[54,2118,2119],{"class":64}," test_event_03ALTER\n",[54,2121,2122],{"class":56,"line":81},[54,2123,85],{"emptyLinePlaceholder":84},[54,2125,2126,2129,2132,2134,2137,2140],{"class":56,"line":88},[54,2127,2128],{"class":60},"on",[54,2130,2131],{"class":64}," schedule every ",[54,2133,1376],{"class":74},[54,2135,2136],{"class":60}," minute",[54,2138,2139],{"class":64}," ends ",[54,2141,2142],{"class":1337},"'2026-02-03 20:31:00'\n",[44,2144,2148],{"className":2145,"code":2146,"language":2147,"meta":49,"style":49},"language-bash shiki shiki-themes github-light github-dark","do\n\n","bash",[51,2149,2150],{"__ignoreMap":49},[54,2151,2152],{"class":56,"line":57},[54,2153,2154],{"class":60},"do\n",[582,2156,2157],{},"insert into messages (message, created_at)",[582,2159,2160],{},"values ('test', NOW();",[23,2162,2164],{"id":2163},"trigger","Trigger",[44,2166,2168],{"className":46,"code":2167,"language":48,"meta":49,"style":49},"DELIMITER \u002F\u002F\n\nCREATE TRIGGER trg_auth_before_insert\n\nBEFORE INSERT ON auth\n\nFOR EACH ROW\n\nBEGIN\n\n-- Entferne alle Leerzeichen aus dem neuen Usernamen\n\nSET NEW.user = REPLACE(NEW.user, ' ', '');\n\n-- Trage das Ereignis ins Log ein\n\nINSERT INTO log (wann, wer, was)\n\nVALUES (\n\n",[51,2169,2170,2176,2180,2189,2193,2204,2208,2216,2220,2224,2228,2233,2237,2274,2278,2283,2287,2297,2301],{"__ignoreMap":49},[54,2171,2172,2174],{"class":56,"line":57},[54,2173,215],{"class":64},[54,2175,218],{"class":60},[54,2177,2178],{"class":56,"line":81},[54,2179,85],{"emptyLinePlaceholder":84},[54,2181,2182,2184,2186],{"class":56,"line":88},[54,2183,227],{"class":60},[54,2185,1450],{"class":60},[54,2187,2188],{"class":744}," trg_auth_before_insert\n",[54,2190,2191],{"class":56,"line":236},[54,2192,85],{"emptyLinePlaceholder":84},[54,2194,2195,2197,2199,2201],{"class":56,"line":241},[54,2196,1462],{"class":60},[54,2198,1465],{"class":60},[54,2200,188],{"class":60},[54,2202,2203],{"class":64}," auth\n",[54,2205,2206],{"class":56,"line":247},[54,2207,85],{"emptyLinePlaceholder":84},[54,2209,2210,2212,2214],{"class":56,"line":252},[54,2211,1478],{"class":60},[54,2213,1481],{"class":64},[54,2215,1484],{"class":60},[54,2217,2218],{"class":56,"line":259},[54,2219,85],{"emptyLinePlaceholder":84},[54,2221,2222],{"class":56,"line":264},[54,2223,244],{"class":60},[54,2225,2226],{"class":56,"line":280},[54,2227,85],{"emptyLinePlaceholder":84},[54,2229,2230],{"class":56,"line":285},[54,2231,2232],{"class":255},"-- Entferne alle Leerzeichen aus dem neuen Usernamen\n",[54,2234,2235],{"class":56,"line":300},[54,2236,85],{"emptyLinePlaceholder":84},[54,2238,2239,2241,2243,2245,2248,2250,2253,2255,2258,2260,2262,2264,2267,2269,2272],{"class":56,"line":305},[54,2240,91],{"class":60},[54,2242,1503],{"class":74},[54,2244,614],{"class":64},[54,2246,2247],{"class":74},"user",[54,2249,1511],{"class":60},[54,2251,2252],{"class":74}," REPLACE",[54,2254,479],{"class":64},[54,2256,2257],{"class":74},"NEW",[54,2259,614],{"class":64},[54,2261,2247],{"class":74},[54,2263,446],{"class":64},[54,2265,2266],{"class":1337},"' '",[54,2268,446],{"class":64},[54,2270,2271],{"class":1337},"''",[54,2273,1816],{"class":64},[54,2275,2276],{"class":56,"line":311},[54,2277,85],{"emptyLinePlaceholder":84},[54,2279,2280],{"class":56,"line":316},[54,2281,2282],{"class":255},"-- Trage das Ereignis ins Log ein\n",[54,2284,2285],{"class":56,"line":336},[54,2286,85],{"emptyLinePlaceholder":84},[54,2288,2289,2291,2294],{"class":56,"line":341},[54,2290,1642],{"class":60},[54,2292,2293],{"class":74}," log",[54,2295,2296],{"class":64}," (wann, wer, was)\n",[54,2298,2299],{"class":56,"line":350},[54,2300,85],{"emptyLinePlaceholder":84},[54,2302,2303,2305],{"class":56,"line":355},[54,2304,1654],{"class":60},[54,2306,2307],{"class":64}," (\n",[582,2309,2310],{},"NOW(),",[44,2312,2316],{"className":2313,"code":2314,"language":2315,"meta":49,"style":49},"language-dockerfile shiki shiki-themes github-light github-dark","USER(),\n\n","dockerfile",[51,2317,2318],{"__ignoreMap":49},[54,2319,2320],{"class":56,"line":57},[54,2321,2322],{"class":64},"USER(),\n",[582,2324,2325],{},"CONCAT('Neuer User angelegt: ', NEW.user)",[582,2327,2328],{},");",[44,2330,2332],{"className":2145,"code":2331,"language":2147,"meta":49,"style":49},"END \u002F\u002F\n\n",[51,2333,2334],{"__ignoreMap":49},[54,2335,2336,2338],{"class":56,"line":57},[54,2337,344],{"class":744},[54,2339,347],{"class":1337},[44,2341,2343],{"className":46,"code":2342,"language":48,"meta":49,"style":49},"DELIMITER ;\n\n",[51,2344,2345],{"__ignoreMap":49},[54,2346,2347],{"class":56,"line":57},[54,2348,358],{"class":64},[23,2350,2352],{"id":2351},"transactions","Transactions",[582,2354,2355],{},"set autocommit = OFF;",[582,2357,2358],{},"select * from kunde;",[582,2360,2361],{},"begin;",[582,2363,2364],{},"update kunde set saldo = saldo -500 where id = 1;",[582,2366,2367],{},"update kunde set saldo = saldo +500 where id = 2;",[44,2369,2371],{"className":46,"code":2370,"language":48,"meta":49,"style":49},"commit; # erst mit dem commit werden die neuen saldos gespeichert\n\n",[51,2372,2373],{"__ignoreMap":49},[54,2374,2375,2377,2380,2382],{"class":56,"line":57},[54,2376,1226],{"class":60},[54,2378,2379],{"class":64},"; # erst mit dem ",[54,2381,1226],{"class":60},[54,2383,2384],{"class":64}," werden die neuen saldos gespeichert\n",[11,2386,2388],{"id":2387},"mit-rollback-kann-die-änderung-also-vor-dem-commit-rückgängig-gemacht-werden","mit Rollback kann die Änderung also vor dem commit rückgängig gemacht werden",[582,2390,2391],{},"set autocommit = ON;",[582,2393,2361],{},[582,2395,2364],{},[582,2397,2367],{},[44,2399,2401],{"className":46,"code":2400,"language":48,"meta":49,"style":49},"commit; # durch autocommit on hat diese Zeile keinen Einfluss\n\n",[51,2402,2403],{"__ignoreMap":49},[54,2404,2405,2407,2410,2412],{"class":56,"line":57},[54,2406,1226],{"class":60},[54,2408,2409],{"class":64},"; # durch autocommit ",[54,2411,2128],{"class":60},[54,2413,2414],{"class":64}," hat diese Zeile keinen Einfluss\n",[11,2416,2418],{"id":2417},"rollback-hat-keinen-einfluss","Rollback hat keinen Einfluss",[44,2420,2422],{"className":46,"code":2421,"language":48,"meta":49,"style":49},"START TRANSACTION;\n\nINSERT INTO tab2 VALUES (NULL, 'Hello', 1);\n\nINSERT INTO tab2 VALUES (NULL, 'World', 2);\n\nINSERT INTO tab2 VALUES (NULL, 'in SQL', 3);\n\nCOMMIT;\n",[51,2423,2424,2430,2434,2459,2463,2487,2491,2515,2519],{"__ignoreMap":49},[54,2425,2426,2428],{"class":56,"line":57},[54,2427,937],{"class":60},[54,2429,78],{"class":64},[54,2431,2432],{"class":56,"line":81},[54,2433,85],{"emptyLinePlaceholder":84},[54,2435,2436,2438,2441,2443,2445,2448,2450,2453,2455,2457],{"class":56,"line":88},[54,2437,1642],{"class":60},[54,2439,2440],{"class":64}," tab2 ",[54,2442,1654],{"class":60},[54,2444,1657],{"class":64},[54,2446,2447],{"class":60},"NULL",[54,2449,446],{"class":64},[54,2451,2452],{"class":1337},"'Hello'",[54,2454,446],{"class":64},[54,2456,1376],{"class":74},[54,2458,1816],{"class":64},[54,2460,2461],{"class":56,"line":236},[54,2462,85],{"emptyLinePlaceholder":84},[54,2464,2465,2467,2469,2471,2473,2475,2477,2480,2482,2485],{"class":56,"line":241},[54,2466,1642],{"class":60},[54,2468,2440],{"class":64},[54,2470,1654],{"class":60},[54,2472,1657],{"class":64},[54,2474,2447],{"class":60},[54,2476,446],{"class":64},[54,2478,2479],{"class":1337},"'World'",[54,2481,446],{"class":64},[54,2483,2484],{"class":74},"2",[54,2486,1816],{"class":64},[54,2488,2489],{"class":56,"line":247},[54,2490,85],{"emptyLinePlaceholder":84},[54,2492,2493,2495,2497,2499,2501,2503,2505,2508,2510,2513],{"class":56,"line":252},[54,2494,1642],{"class":60},[54,2496,2440],{"class":64},[54,2498,1654],{"class":60},[54,2500,1657],{"class":64},[54,2502,2447],{"class":60},[54,2504,446],{"class":64},[54,2506,2507],{"class":1337},"'in SQL'",[54,2509,446],{"class":64},[54,2511,2512],{"class":74},"3",[54,2514,1816],{"class":64},[54,2516,2517],{"class":56,"line":259},[54,2518,85],{"emptyLinePlaceholder":84},[54,2520,2521,2523],{"class":56,"line":264},[54,2522,1020],{"class":60},[54,2524,78],{"class":64},[2526,2527,2528],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":49,"searchDepth":81,"depth":81,"links":2530},[2531,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563],{"id":25,"depth":81,"text":26,"children":2532},[2533,2534,2535,2536],{"id":30,"depth":88,"text":31},{"id":104,"depth":88,"text":105},{"id":153,"depth":88,"text":154},{"id":204,"depth":88,"text":205},{"id":409,"depth":81,"text":410},{"id":547,"depth":81,"text":548},{"id":579,"depth":81,"text":580},{"id":671,"depth":81,"text":672},{"id":719,"depth":81,"text":410},{"id":865,"depth":81,"text":866},{"id":872,"depth":81,"text":672},{"id":926,"depth":81,"text":927},{"id":1025,"depth":81,"text":1026},{"id":1041,"depth":81,"text":1042},{"id":1051,"depth":81,"text":1052},{"id":1093,"depth":81,"text":1094},{"id":1215,"depth":81,"text":900},{"id":1280,"depth":81,"text":1281},{"id":1303,"depth":81,"text":1304},{"id":1347,"depth":81,"text":1348},{"id":1387,"depth":81,"text":672},{"id":1428,"depth":81,"text":410},{"id":1538,"depth":81,"text":26},{"id":1561,"depth":81,"text":1562},{"id":1573,"depth":81,"text":927},{"id":1711,"depth":81,"text":672},{"id":1732,"depth":81,"text":1733},{"id":1819,"depth":81,"text":1820},{"id":2100,"depth":81,"text":1257},{"id":2163,"depth":81,"text":2164},{"id":2351,"depth":81,"text":2352},"7-8","md",{},{"title":2568},"Cheat-Sheet – Schulaufgabe 2 (2025\u002F2026)","\u002Ffaecher\u002Fdbk\u002F7-8-cs-sa2","\u002Fdownloads\u002FDBK\u002FDBK_7-8_CS_SA2.pdf","SA2","Schulaufgabe 2",{"title":6,"description":49},"faecher\u002Fdbk\u002F7-8-cs-sa2","DBK","Datenbanken","CS","Cheat-Sheet","2025\u002F2026","_kQObH9Dn0wr8gkeCwepv-I3zGEDJMbGuCFGAL7qP-8",1778676318892]