# IT-Wissen

# Basics

IT-Basics, die jedem Informatiker bekannt sein müssen

# RAID

<p class="callout info">Quelle: [https://www.globalsystem.ch/ratgeber/raid-systeme-erklaert/](https://www.globalsystem.ch/ratgeber/raid-systeme-erklaert/)</p>

Ein RAID (Redundant Array of Independent Disks oder zu Deutsch: Redundante Anordnung unabhängiger Festplatten) zielt darauf ab, Daten sicher zu speichern, ohne dass diese verloren gehen. Dabei verwendet das RAID-System meist ein redundantes Verfahren.

### Speicherungstechniken von RAID-Systemen:


#### Spiegelung:

Bei der Spiegelung (engl. Mirroring) wird ein Datensatz «AB» komplett auf zwei verschiedenen Festplatten abgespeichert. Beim Ausfall einer Platte gehen keine Informationen verloren, da der ganze Datensatz auch auf der zweiten Platte vorhanden ist.

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/Qeeumv2FUasaUnqN-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/Qeeumv2FUasaUnqN-image.png)

#### Streifen:

Beim Streifen (engl. Striping) wird ein Datensatz «AB» aufgeteilt und auf mehrere aufeinanderfolgende Festplatten gespeichert. Beim Ausfall einer Platte sind alle Informationen verloren, da sämtliche Platten benötigt werden um den Datensatz vollständig lesen zu können.

Mit Streifen wird die Lese- und Schreibgeschwindigkeit erhöht, da von mehreren Festplatten gleichzeitig gelesen werden kann.

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/cEDJWYQzt2Z9a2k7-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/cEDJWYQzt2Z9a2k7-image.png)

#### Parität:

Parität (engl. Parity) ergänzt jeden Streifen mit der Möglichkeit in einen Datensatz verlorene Informationen wiederherzustellen. Ein Datensatz «AB» wird mit Streifen auf mehrere Platten verteilt. Auf einer zusätzlichen Platte wird für jeden Streifen ein Paritätswert «P» errechnet. Fällt eine Platte aus, kann mit Hilfe der Parität die fehlende Information errechnet werden.

Ein vereinfachtes Beispiel: Sie speichern auf zwei Festplatten je eine Zahl: 4 und 7. Auf der dritten Paritäsplatte speichern Sie die Summe der beiden Zahlen: 11. Fällt eine der beiden Platten aus, können Sie mit Hilfe der Summe die fehlende Zahl berechnen.

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/GLW96JFhJWtMLMgK-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/GLW96JFhJWtMLMgK-image.png)

### RAID-Systeme:

#### RAID 0:

Bei einem RAID 0 werden mindestens 2 Festplatten benötigt. Die Daten werden dabei auf mehrere Festplatten verteilt, wenn eine Festplatte ausfällt, wären alle Daten verloren. Ein RAID 0 ist ein Verfahren ohne irgendeinen Schutz vor Verlust, da aber von beiden Festplatten gleichzeitig gelesen werden kann, ist die Lese- und Schreibgeschwindigkeit sehr hoch. Die Nutzungskapazität der verfügbaren Laufwerke beträgt 100%.

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/WdbnTS574map7MVy-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/WdbnTS574map7MVy-image.png)

**Zusammenfassung:**

<table border="1" cellpadding="1" cellspacing="1" class="align-center" id="bkmrk-technik%3A-streifen-vo" style="width: 48.7654%; height: 107.472px;"><tbody><tr style="height: 29.6806px;"><td class="align-left" style="width: 36.7842%; height: 29.6806px;">*Technik*:</td><td class="align-left" style="width: 63.1876%; height: 29.6806px;">Streifen</td></tr><tr style="height: 29.6806px;"><td class="align-left" style="width: 36.7842%; height: 29.6806px;">*Vorteil*:</td><td class="align-left" style="width: 63.1876%; height: 29.6806px;">Extrem schnell</td></tr><tr style="height: 18.4306px;"><td class="align-left" style="width: 36.7842%; height: 18.4306px;">*Nachteil:*</td><td class="align-left" style="width: 63.1876%; height: 18.4306px;">Keine Ausfallsicherheit von Daten</td></tr><tr style="height: 29.6806px;"><td class="align-left" style="width: 36.7842%; height: 29.6806px;">*Anwendungsbeispiel:*</td><td class="align-left" style="width: 63.1876%; height: 29.6806px;">Laufwerk für Datenbankserver</td></tr></tbody></table>

#### RAID 1:

Bei einem RAID 1 werden mindestens 2 Festplatten benötigt. Dieselben Daten werden dabei auf beiden Festplatten gespeichert. Dies hat Vor- und Nachteile: Einerseits sind die Daten noch vorhanden, wenn eine Festplatte ausfallen würde, andererseits braucht man die doppelte Anzahl Festplatten, weil die effektive Speicherkapazität halbiert wird. Die Nutzungskapazität der verfügbaren Laufwerke beträgt daher 50%.

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/mTVrEGA6Z4AL5YUy-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/mTVrEGA6Z4AL5YUy-image.png)

**Zusammenfassung:**

<table border="1" cellpadding="1" cellspacing="1" class="align-center" id="bkmrk-technik%3A-spiegelung-" style="width: 47.4074%;"><tbody><tr><td class="align-left" style="width: 41.0011%;">*Technik:*</td><td class="align-left" style="width: 58.9708%;">Spiegelung</td></tr><tr><td class="align-left" style="width: 41.0011%;">*Vorteil*:</td><td class="align-left" style="width: 58.9708%;">Schnell mit Ausfallsicherheit</td></tr><tr><td class="align-left" style="width: 41.0011%;">*Nachteil:*</td><td class="align-left" style="width: 58.9708%;">Tiefe Nutzungskapazität</td></tr><tr><td class="align-left" style="width: 41.0011%;">*Anwendungsbeispiel:*</td><td class="align-left" style="width: 58.9708%;">Laufwerk für das Betriebssystem</td></tr></tbody></table>

#### RAID 5:

Bei einem RAID 5 benötigt man mindestens 3 Festplatten. Die Daten werden auf alle Festplatten verteilt. Zusätzlich wird ein Paritätswert errechnet und gespeichert. Wenn eine Festplatte ausfallen sollte, kann der RAID-Kontroller anhand dieser Parität die fehlenden Daten errechnen. Dieses Verfahren benötigt zwar eine Festplatte weniger als ein entsprechendes RAID 1 System, es muss aber für alle Daten eine Paritätswert berechnet werden, was mehr Rechenleistung benötigt. Ein RAID 5-System kann aus maximal 16 Festplatten bestehen. Die Nutzungskapazität der im RAID 5 verfügbaren Laufwerke beträgt 67% - 94% (Gesamtkapazität minus 1 Laufwerk).

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/pPeEYfe1owhqVAMs-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/pPeEYfe1owhqVAMs-image.png)

**Zusammenfassung:**

<table border="1" cellpadding="1" cellspacing="1" class="align-center" id="bkmrk-technik%3A-streifen-mi" style="width: 49.2593%;"><tbody><tr><td class="align-left" style="width: 40.9938%;">*Technik:*</td><td class="align-left" style="width: 59.0102%;">Streifen mit Parität</td></tr><tr><td class="align-left" style="width: 40.9938%;">*Vorteil*:</td><td class="align-left" style="width: 59.0102%;">Ausfallsicherheit</td></tr><tr><td class="align-left" style="width: 40.9938%;">*Nachteil:*</td><td class="align-left" style="width: 59.0102%;">Langsame Schreibgeschwindigkeit</td></tr><tr><td class="align-left" style="width: 40.9938%;">*Anwendungsbeispiel:*</td><td class="align-left" style="width: 59.0102%;">Laufwerke für Archivsysteme</td></tr></tbody></table>

#### RAID 6:

Bei einem RAID 6 benötigt man mindestens 4 Festplatten. Anstelle eines einzigen Paritässchemas, verwendet RAID 6 zwei Schemata («P» und «Q»). Das heisst, es können maximal 2 Festplatten ausfallen, ohne dass Daten verloren gehen.

Das Speichern von Daten ist aufwendiger als bei RAID 5, da jedes Mal 2 Paritätsaktualisierungen berechnet und geschrieben werden müssen. Die Lesegeschwindigkeit ist gleich schnell wie RAID 5, es eignet sich daher besonders für Archivierungssysteme bei denen viel gelesen, aber wenig geschrieben wird. Ein RAID 6 kann aus maximal 16 Festplatten bestehen. Die Nutzungskapazität der im RAID 6 verfügbaren Laufwerke beträgt 50% - 88% (Gesamtkapazität minus 2 Laufwerke).

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/wXypRMzOH7v63Cy4-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/wXypRMzOH7v63Cy4-image.png)

**Zusammenfassung:**

<table border="1" cellpadding="1" cellspacing="1" class="align-center" id="bkmrk-technik%3A-streifen-mi-1" style="width: 55.5556%;"><tbody><tr><td class="align-left" style="width: 40.9302%;">*Technik:*</td><td class="align-left" style="width: 59.0698%;">Streifen mit doppelter Parität</td></tr><tr><td class="align-left" style="width: 40.9302%;">*Vorteil*:</td><td class="align-left" style="width: 59.0698%;">Hohe Ausfallsicherheit</td></tr><tr><td class="align-left" style="width: 40.9302%;">*Nachteil:*</td><td class="align-left" style="width: 59.0698%;">Sehr langsame Schreibgeschwindigkeit</td></tr><tr><td class="align-left" style="width: 40.9302%;">*Anwendungsbeispiel:*</td><td class="align-left" style="width: 59.0698%;">Archivsysteme, hochverfügbare Lösungen, Server mit hohen Kapazitätsanforderungen</td></tr></tbody></table>


#### RAID 10:

Das RAID 10 vereint das RAID 0 und 1 miteinander. Dafür werden mindestens 4 Festplatten benötigt. Die Daten werden zuerst mit Streifen in 2 Teile aufgeteilt (RAID 0) und anschliessend gespiegelt abgespeichert (2 x RAID 1). Diese Variante überzeugt durch seine Geschwindigkeit, ist aber mit höheren Kosten verbunden. Die Nutzungskapazität der verfügbaren Laufwerke beträgt 50%.

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/15DHiy5tjQWgSptd-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/15DHiy5tjQWgSptd-image.png)

**Zusammenfassung:**

<table border="1" cellpadding="1" cellspacing="1" class="align-center" id="bkmrk-technik%3A-spiegelung%2C" style="width: 47.4074%;"><tbody><tr><td class="align-left" style="width: 41.0011%;">*Technik:*</td><td class="align-left" style="width: 58.9708%;">Spiegelung, Streifen</td></tr><tr><td class="align-left" style="width: 41.0011%;">*Vorteil*:</td><td class="align-left" style="width: 58.9708%;">Sehr schnell mit Ausfallsicherheit</td></tr><tr><td class="align-left" style="width: 41.0011%;">*Nachteil:*</td><td class="align-left" style="width: 58.9708%;">Nutzungskapazität gering</td></tr><tr><td class="align-left" style="width: 41.0011%;">*Anwendungsbeispiel:*</td><td class="align-left" style="width: 58.9708%;">Laufwerke für virtuelle Server</td></tr></tbody></table>


#### RAID 50:

Das RAID 50 kombiniert mehrere RAID 5 mit einem RAID 0. Es werden mindestens 6 Festplatten benötigt. Durch das RAID 0 kann die Zugriffsgeschwindigkeit des RAID 5 erhöht werden. Es lassen sich so auch sehr grosse logische Laufwerke aufbauen. Pro RAID 5 kann eine Festplatte ausfallen. Die Nutzungskapazität von RAID 50 beträgt je nach der Anzahl der im betreffenden RAID 5 verfügbaren Datenlaufwerke 67% - 94% (Gesamtkapazität minus 1 Laufwerk).

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/Gc25Yfxmhtupt7L9-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/Gc25Yfxmhtupt7L9-image.png)

**Zusammenfassung:**

<table border="1" cellpadding="1" cellspacing="1" class="align-center" id="bkmrk-technik%3A-streifen-mi-2" style="width: 49.2593%;"><tbody><tr><td class="align-left" style="width: 40.9938%;">*Technik:*</td><td class="align-left" style="width: 59.0102%;">Streifen mit Parität</td></tr><tr><td class="align-left" style="width: 40.9938%;">*Vorteil*:</td><td class="align-left" style="width: 59.0102%;">Sehr schnell mit Ausfallsicherheit</td></tr><tr><td class="align-left" style="width: 40.9938%;">*Nachteil:*</td><td class="align-left" style="width: 59.0102%;">Leseleistung mittelmäßig</td></tr><tr><td class="align-left" style="width: 40.9938%;">*Anwendungsbeispiel:*</td><td class="align-left" style="width: 59.0102%;">Archivsysteme, Anwendungsserver</td></tr></tbody></table>

#### RAID 60:

Das RAID 60 kombiniert mehrere RAID 6 mit einem RAID 0. Es werden mindestens 8 Festplatten benötigt. Durch das RAID 0 kann die Zugriffsgeschwindigkeit des RAID 6 erhöht werden. Es lassen sich so auch sehr grosse logische Laufwerke aufbauen. Pro RAID 6 können zwei Festplatten ausfallen. Die Nutzungskapazität von RAID 60 beträgt je nach der Anzahl der im betreffenden RAID 6 verfügbaren Datenlaufwerke 50% - 88% (Gesamtkapazität minus 2 Laufwerke).

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/scaled-1680-/N60h5cs60Fu3pON7-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-06/N60h5cs60Fu3pON7-image.png)

**Zusammenfassung:**

<table border="1" cellpadding="1" cellspacing="1" class="align-center" id="bkmrk-technik%3A-streifen-mi-3" style="width: 53.9506%;"><tbody><tr><td class="align-left" style="width: 40.9836%;">*Technik:*</td><td class="align-left" style="width: 59.0164%;">Streifen mit doppelter Parität</td></tr><tr><td class="align-left" style="width: 40.9836%;">*Vorteil*:</td><td class="align-left" style="width: 59.0164%;">Hohe Ausfallsicherheit</td></tr><tr><td class="align-left" style="width: 40.9836%;">*Nachteil:*</td><td class="align-left" style="width: 59.0164%;">Sehr langsame Schreibgeschwindigkeit</td></tr><tr><td class="align-left" style="width: 40.9836%;">*Anwendungsbeispiel:*</td><td class="align-left" style="width: 59.0164%;">Archivsysteme, Backup-Storage, hochverfügbare Lösungen, Server mit hohen Kapazitätsanforderungen</td></tr></tbody></table>

### Berechnung:

Um sich aufwendige Berechnungen zu sparen gibt es im Internet viele RAID-Kalkulatoren, mithilfe denen sich Kapazität bei bestimmten Festplattenkonfigurationen und RAID-Levels berechnen lässt.

Sehr einfach und angenehm in der Bedienbarkeit ist der Rechner von Seagate: [https://www.seagate.com/de/de/products/nas-drives/raid-calculator/](https://www.seagate.com/de/de/products/nas-drives/raid-calculator/)

# Datenbanken



# SQL-Befehlsübersicht

#### DDL (Data Definition Language)

Datenbanken anlegen, löschen, auswählen:

<table border="1" id="bkmrk-sql-befehl-beschreib" style="border-collapse: collapse; width: 100%; border-width: 1px; height: 278.75px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="border-width: 1px; height: 29.7969px;">SQL-Befehl</td><td style="border-width: 1px; height: 29.7969px;">Beschreibung</td><td style="border-width: 1px; height: 29.7969px;">Beispiel</td></tr><tr style="height: 82.9844px;"><td style="border-width: 1px; height: 82.9844px;">```mysql
CREATE DATABASE db_name
```

  
</td><td style="border-width: 1px; height: 82.9844px;">Erstelle die Datenbank db\_name</td><td style="border-width: 1px; height: 82.9844px;">```mysql
CREATE DATABASE autovermietung
```

  
</td></tr><tr style="height: 82.9844px;"><td style="border-width: 1px; height: 82.9844px;">```mysql
DROP DATABASE db_name
```

  
</td><td style="border-width: 1px; height: 82.9844px;">Lösche die Datenbank db\_name</td><td style="border-width: 1px; height: 82.9844px;">```mysql
DROP DATABASE autovermietung
```

  
</td></tr><tr style="height: 82.9844px;"><td style="border-width: 1px; height: 82.9844px;">```mysql
USE db_name
```

  
</td><td style="border-width: 1px; height: 82.9844px;">Auswahl der Datenbank, auf welchre die folgenden SQL-Befehle ausgeführt werden sollen</td><td style="border-width: 1px; height: 82.9844px;"> ```mysql
USE autovermietung
```

</td></tr></tbody></table>

Tabellen und Indizes erzeugen, ändern und löschen:

<table border="1" id="bkmrk-sql-befehl-beschreib-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
CREATE TABLE IF NOT EXISTS tb_name
```

  
</td><td>Erstelle die Tabelle tb\_name falls diese noch nicht existiert</td><td>```mysql
CREATE TABLE kunden (kd_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, kd_name VARCHAR(30) NOT NULL);
```

  
</td></tr><tr><td>```mysql
CREATE INDEX ... ON ...
CREATE UNIQUE INDEX ... ON ...
```

  
</td><td>Erstelle einen eindeutigen Index</td><td>```mysql
CREATE INDEX kunden_name ON kunde (kd_name);
```

  
</td></tr><tr><td>```mysql
ALTER TABLE ...
        ADD <field>
        ADD INDEX
        ADD PRIMARY KEY
        ADD UNIQUE
        RENAME AS
        MODIFY
        CHANGE
        DROP COLUMN
```

  
</td><td>Ändere die Struktur der Tabelle, etwa durch Hinzufügen eines Index (z.B. zum Durchsuchen), Primärschlüssels, usw.</td><td>```mysql
ALTER TABLE kunden ADD INDEX kunden_name (kd_name);
ALTER TABLE kunden RENAME AS kunde;
ALTER TABLE kunden MODIFY kd_name varchar(50);
ALTER TABLE kunden CHANGE kd_nname name varchar(30);
ALTER TABLE kunde ADD mobile varchar(20);
```

  
</td></tr><tr><td>```mysql
DROP TABLE ...
```

  
</td><td>Lösche Tabelle aus DB</td><td>```mysql
DROP TABLE kunden;
```

  
</td></tr><tr><td>```mysql
DROP INDEX ...
```

  
</td><td>Entferne den Index</td><td> ```mysql
DROP INDEX kunden_name;
```

</td></tr></tbody></table>

#### DML (Data Manipulation Language)

<table border="1" id="bkmrk-%C2%A0-2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
INSERT INTO ... VALUES ...
```

  
</td><td>Einfügen eines oder mehrerer Datensätze. Die Reihenfolge der Werte richtet sich nach der Reihenfolge der angegebenen Attribute</td><td>```mysql
INSERT INTO kunden (kd_id, kd_name, kd_vname) VALUE (NULL, "Mustermann", "Max"), (NULL, "Musterfrau", "Frieda");
```

  
</td></tr><tr><td>```mysql
UPDATE ... SET ... WHERE ...
```

  
</td><td>Ändern von Werten eines oder mehrerer Datensätze</td><td>```mysql
UPDATE kunden SET kd_nname = "Mustermann" WHERE kd_id=42;
```

  
</td></tr><tr><td>```mysql
DELETE ... FROM ...
```

  
</td><td>Löschen eines Datensatzes</td><td>```mysql
DELETE FROM kunden WHERE kd_name = "Mustermann";
```

</td></tr></tbody></table>

#### DQL (Data Query Language)

<table border="1" id="bkmrk-sql-befehl-beschreib-2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
SELECT ... FROM ... WHERE ... GROUP BY ... ORDER BY ... HAVING ... LIMIT ...
```

  
</td><td>  
</td><td>```mysql
SELECT * FROM kunden;
SELECT kd_ort, COUNT(kd_ort) FROM kunden GROUP BY kd_ort;
SELECT COUNT(*) FROM kunden WHERE kd_ort = "Hof";
SELECT * FROM kunden ORDER BY kd_name;
```

  
</td></tr><tr><td>```mysql
SELECT ... AS ...
```

  
</td><td>Dem Feldnamen (Attribut) wird ein anderer Name gegeben (= Alias)</td><td>```mysql
SELECT kd_id AS Kundennummer FROM kunden;
```

</td></tr></tbody></table>

#### Funktionen

<table border="1" id="bkmrk-%C2%A0-4" style="border-collapse: collapse; width: 100%; height: 348.36px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">SQL-Befehl</td><td style="height: 29.7969px;">Beschreibung</td><td style="height: 29.7969px;">Beispiel</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
COUNT(ausdruck)
```

  
</td><td style="height: 29.7969px;">Anzahl aller Datensätze</td><td style="height: 29.7969px;">```mysql
SELECT COUNT(*) FROM kunden;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
SUM(ausdruck)
```

  
</td><td style="height: 29.7969px;">Summe</td><td style="height: 29.7969px;">```mysql
SELECT SUM(po_preis) FROM posten;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
MAX(ausdruck)
```

  
</td><td style="height: 29.7969px;">Maximum</td><td style="height: 29.7969px;">```mssql
SELECT MAX(po_preis) FROM posten;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
MIN(ausdruck)
```

  
</td><td style="height: 29.7969px;">Minimum</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
AVG(ausdruck)
```

  
</td><td style="height: 29.7969px;">Durchschnitt</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
ABS(ausdruck)
```

  
</td><td style="height: 29.7969px;">Betrag</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">```mysql
NOW()
```

  
</td><td style="height: 46.5938px;">Gibt das aktuelle Datum mit Uhrzeit im Format "JJJJ-MM-TT hh:mm:ss" zurück</td><td style="height: 46.5938px;">  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">```mssql
YEAR(date)
MONTH(date)
DAY(date)
HOUR(date)
MINUTE(date)
SECOND(date)
```

  
</td><td style="height: 46.5938px;">Geben die aktuellen Zeit-Werte dem Namen nach zurück</td><td style="height: 46.5938px;">```mssql
SELECT * FROM kunden WHERE YEAR(gebdat) > 2000
```

  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">```mysql
DATEDIFF(datum1, datum2)
```

  
</td><td style="height: 46.5938px;">Berechnet die Differenz der Tage datum1 - datum2 mit Vorzeichen</td><td style="height: 46.5938px;"> </td></tr></tbody></table>

#### Informationen aus verschiedenen Tabelle holen (JOIN)

<table border="1" id="bkmrk-%C2%A0-6" style="border-collapse: collapse; width: 100%; height: 89.3907px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">SQL-Befehl</td><td style="height: 29.7969px;">Beschreibung</td><td style="height: 29.7969px;">Beispiel</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
SELECT ... FROM ... JOIN ... ON ...
```

  
</td><td style="height: 29.7969px;">Schnittmenge, d.h. nur Kunden mit zugehörigen Aufträgen</td><td style="height: 29.7969px;">```mysql
SELECT * FROM kunden JOIN auftraege ON kd_id = au_kd_id;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
LEFT JOIN ... ON ...
```

  
</td><td style="height: 29.7969px;">Alle Kunden (auch die ohne Auftrag!) und zugehörige Aufträge</td><td style="height: 29.7969px;"> ```mysql
SELECT * FROM kunden LEFT JOIN auftraege ON kd_id = au_kd_id;
```

</td></tr></tbody></table>

#### Operatoren

<table border="1" id="bkmrk-%C2%A0-8" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
>, <, >=, =, !=
```

  
</td><td>Boolsche Operatoren zum Vergleich zweier Werte</td><td>```mysql
SELECT * FROM kunden WHERE kd_ort = "Hof";
```

  
</td></tr><tr><td>```mysql
IN, NOT IN
```

  
</td><td>Prüfung, ob sich ein Attribut innerhalb einer Untermenge befindet. Häufig verwendet bei Sub-Selects</td><td>```mysql
SELECT * FROM kunden WHERE kd_id IN (1,3,5);
```

  
</td></tr><tr><td>```mysql
BETWEEN ... AND ...
```

  
</td><td>Prüfung eines Attributs, ob es sich zwischen den beiden Werten befindet</td><td>```mysql
SELECT * FROM kunden WHERE kd_id BETWEEN 10 AND 20;
```

  
</td></tr><tr><td>```mysql
LIKE
```

  
</td><td>Prüfung auf ähnliche Strings. Mit dem Platzhalter % werden im Beispiel Musterfrau und Mustermann erkannt</td><td>```mysql
SELECT * FROM kunden WHERE kd_nname LIKE "Muster%";
```

  
</td></tr><tr><td>```mysql
AND, OR, NOT
```

  
</td><td>Verknüpfung von boolschen Ausdrücken über UND, ODER und NICHT</td><td> ```mysql
SELECT * FROM kunden WHERE kd_name LIKE "%ust%" AND kd_ka_id = 1;
```

</td></tr></tbody></table>

# Unterschiedlichste Themen



# FRITZ!Box ISP-Branding entfernen

Oft gehört einem die von Intenetanbieter gemietete FRITZ!Box nach einer gewissen Vertragslaufzeit und man darf damit nun tun und lassen, was man will, ohne gegen Verträge zu verstoßen.

Das Problem: Die FRITZ!Box behält trotzdem noch das unerwünschte Provider-Branding bzw. die vom Provider modifizierte Firmware.

Versucht man das Aufspielen einer neuen Firmware über das Recovery-Tool von AVM kommt man ganz schnell zu folgender Fehlermeldung und der Vorgang bricht ab:

<p class="callout warning">Hinweis: Das Gerät enthält angepasste Grundeinstellungen für Ihren Internet-Anbieter (XXXXXXXXXX). Eine  
Wiederherstellung würde unter Umständen dazu führen, dass das Gerät am Netz von XXXXXXXXXX nicht mehr betrieben werden kann.  
Bitte nehmen Sie statt dessen Kontakt zu Ihrem  
Internet-Anbieter auf.  
Die Wiederherstellung wird jetzt abgebrochen.</p>

Die folgende Anleitung zeigt, wie man das Branding des ISP entfernt und eine unmodifizierte, originale Firmware von AVM installiert.

<p class="callout info">Disclaimer:  
Passiert bei den nachfolgenden Schritten ein Fehler, kann die FRITZ!Box zerstört werden (Soft-Brick). Für evtl. entstandene Schäden übernehme ich keine Haftung.</p>


##### Schritt 1 (Herunterladen der Dateien):

Es wird das FRITZ!Box-Recovery-Tool benötigt. Dieses kann <span style="color: rgb(186, 55, 42);">[hier](https://download.avm.de/fritzbox/)</span> für das jeweilige FRITZ!Box-Modell heruntergeladen werden (Modellbezeichnung --&gt; deutschland --&gt; recover --&gt; FRITZ.Box\_XXXXX-recover.exe)

##### Schritt 2 (Konfiguration des PCs):

Es wird ein Windows-PC benötigt, der zuerst wie folgt konfiguriert werden muss: Alle bestehenden Internetverbindungen (WLAN, LAN) werden getrennt. Anschließend wird die Windows Defender Firewall deaktiviert (Windows-Suche: "Firewall und Netzwerkschutz").

Für die Kommunikation mit der FRITZ!Box über LAN muss der Netzwerkkarte eine statische IP aus dem Netz 192.168.178.0 /24 zugewiesen werden.

Für das Entfernen des Brandings wird zudem das Windows-Feature "TFTP-Client" benötigt, welches zuvor manuell aktiviert werden muss.

[![image.png](https://wiki.crypticghost.boo/uploads/images/gallery/2024-12/scaled-1680-/JrY5esa9ERHC4fP3-image.png)](https://wiki.crypticghost.boo/uploads/images/gallery/2024-12/JrY5esa9ERHC4fP3-image.png)

##### Schritt 3 (Branding entfernen):

- Die ausgesteckte, stromlose FRITZ!Box mit einem LAN-Kabel (LAN1-Buchse) an den PC anschließen und alle anderen LAN- und USB-Geräte von der FRITZ!Box abstecken.
- Die Eingabeaufforderung / CMD auf dem PC öffnen und den Befehl ```powershell
    ftp 192.168.178.1
    ```
    
    eingeben aber noch nicht die Enter-Taste betätigen.
- Die FRITZ!Box ans Stromnetz anstecken. Sobald die Power-Taste zu blinken beginnt, sofort in der Kommandozeile auf Enter drücken und den Befehl absetzen.
- Nun wird ein username und password abgefragt. Bei beidem wird "adam2" angegeben.
- Die Verbindung sollte nun geklappt haben. Nun werden folgende Befehle ausgeführt (hintereinander, nach jedem einzelnen Enter betätigen):  
    ```
    quote GETENV provider
    ```
    
    ```
    quote UNSETENV provider
    ```
    
    ```
    quote SETENV firmware_version avm
    ```
    
    ```
    quote reboot
    ```
    
    Die FRITZ!Box rebootet nun und es kann die CMD nun geschlossen und mit dem nächsten Schritt fortgefahren werden.

##### Schritt 4 (neue Firmware installieren):

Die .exe-Datei des Fritzbox-Recovery-Tools wird nun gestartet. Mit "Weiter" muss man sich durch das Programm klicken und die geforderten Schritte (Strom ein- und ausstecken, etc.) verrichten. Wenn das Programm die Meldung "Abschluss - FRITZ!Box erfolgreich wiederhergestellt!" anzeigt, war die Wiederherstellung erfolgreich. Die FRITZ!Box verfügt nun über die Standard-Firmware.

<p class="callout danger">Wichtig!  
  
Nachdem alles vollendet ist, muss die unter Schritt 2 deaktivierte Firewall unbedingt wieder aktiviert werden, da man sich sonst einer hohen Gefahr aussetzt, Viren und Schadsoftware einzufangen! Anschließend können die Adaptereinstellungen wieder auf den Ausgangszustand geändert werden, dass die Internetverbindung wieder funktioniert.</p>