Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
start [2025/12/26 06:41] 85.25.210.70 alte Version wiederhergestellt (2025/09/04 05:44) |
start [2025/12/28 20:38] (aktuell) 92.204.40.219 alte Version wiederhergestellt (2025/09/14 20:11) |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Netzwerke ====== | ====== Netzwerke ====== | ||
| - | ===== Hardware | + | ===== Netzwerktechnik ===== |
| + | |||
| + | |||
| + | ==== Warum benötige ich Netzwerke? ==== | ||
| + | |||
| + | - Um Internet zur Verfügung zu stellen | ||
| + | - Datenaustausch | ||
| + | - Datenbestände gemeinsam zu nutzen | ||
| + | - Gemeinsame Nutzung von Hardware | ||
| + | - Datensicherheit durch z.B. NAS Speicherung | ||
| + | |||
| + | ==== Peer to Peer Netzwerke ==== | ||
| + | |||
| + | Jeder ist selber für seine Daten verantwortlich | ||
| + | Einfaches aufbauen, keine separate Hard- oder Software | ||
| + | Bei kleinen Netzen geringe Adminkosten | ||
| + | Bei Ausfall eines Pcs trotzdem noch weiterarbeiten | ||
| + | Bei 10 PCs ist Ende bei Microsoft (z.B. können nur zehn gleichzeitig Drucken) | ||
| + | |||
| + | ==== Client Server Netzwerke ==== | ||
| + | |||
| + | Server defekt kann kein Mitarbeiter mehr arbeiten | ||
| + | Brauchen separate Hard und Software | ||
| + | Hohe Datensicherheit durch Speicherung des Admins | ||
| + | Bei großen und mittleren Netzwerken geringe Adminkosten => Softwareaktualisierungen nur auf wenigen Systemen(Servern) | ||
| + | Spielt keine Rolle wo der Benutzer rangeht kann sich von überall auf Server mit seinen Kontodaten anmelden | ||
| + | |||
| + | ==== Mainframe Rechner ==== | ||
| + | |||
| + | In einem Großrechner sind aufeinander abgestimmte, | ||
| + | Ein Großrechner zeichnet sich vor allem durch seine Zuverlässigkeit und hohe Ein-Ausgabe-Leistung aus. Er kann im Online-Betrieb (Time Sharing) eine große Anzahl von Benutzern bedienen, im Batch-Betrieb aber auch komplizierte und aufwendige Aufgaben durchführen. Die Benutzer erhalten beim Online-Betrieb Zugang zu einem Großrechner über Computer-Terminals. Seit sich Personal Computer (PCs) durchgesetzt haben, werden solche Terminals meistens durch entsprechende Emulationen auf den PCs ersetzt. | ||
| + | |||
| + | |||
| + | ==== HUB ==== | ||
| + | |||
| + | Sendet Anfrage nach Mac Adresse an alle Geräte im Netzwerk | ||
| + | |||
| + | Switch | ||
| + | Führt intern Tabelle und verteilt gezielt Daten an richtigen Empfänger | ||
| + | |||
| + | |||
| + | |||
| + | ==== Netzwerk Topologien ==== | ||
| + | |||
| + | |||
| + | |||
| + | === Bus Topologie === | ||
| + | |||
| + | |||
| + | BNC | ||
| + | Vorteile | ||
| + | * • Der Ausfall eines Gerätes hat für die Funktionalität des Netzwerkes keine Konsequenzen | ||
| + | * • RG 58 => 185m (30 PCs pro Segment untergebracht) 10 Base 2 => RG 58 (maximale Geschwindigkeit 10 Mbits /Base | ||
| + | * yellow Kabel 500m(100 PCs pro Segment) 10 Base 5 => yellow Kabel (maximale Geschwindigkeit 10 Mbits /Base/ 500 meter) | ||
| + | * • Einfache Verkabelung und Netzerweiterung | ||
| + | * • Es werden keine aktiven Netzwerkgeräte z.B. Switch/Hub benötigt | ||
| + | * Nachteile | ||
| + | * • Datenübertragungen können leicht abgehört werden (Stichwort: Sniffer). | ||
| + | * • Eine Störung des Übertragungsmediums an einer einzigen Stelle im Bus (defektes Kabel) blockiert den gesamten Netzstrang. | ||
| + | * • Es kann zu jedem Zeitpunkt immer nur eine Station Daten senden. Währenddessen sind alle anderen Sender blockiert (müssen zu übertragende Daten intern zwischenpuffern). | ||
| + | * • Bei Bussen, die Kollisionen zulassen und auf eine nachträgliche Behebung setzen, kann das Medium nur zu einem kleinen Teil ausgelastet werden, da bei höherem Datenverkehr überproportional viele Kollisionen auftreten | ||
| + | |||
| + | 10 Base 2 => RG 58 (maximale Geschwindigkeit 10 Mbits /Base | ||
| + | |||
| + | |||
| + | === 5-4-3 RepeaterRegel === | ||
| + | |||
| + | 5 Segmente mit 4 Repeatern allerdings nur in drei Segmenten PCs unterbringen | ||
| + | |||
| + | === Ring Topologie 10BASE5 === | ||
| + | |||
| + | RJ45 Stecker | ||
| + | Vorteile | ||
| + | * • Deterministische Rechnernetzkommunikation ohne Paketkollisionen – Vorgänger und Nachfolger sind definiert | ||
| + | * • Alle Stationen arbeiten als Verstärker | ||
| + | * • Alle Rechner haben gleiche Zugriffsmöglichkeiten | ||
| + | * • Garantierte Übertragungsbandbreite | ||
| + | * • Skaliert sehr gut, Grad bleibt bei Erweiterung konstant | ||
| + | * • Reguläre Topologie, daher leicht programmierbar | ||
| + | Nachteile | ||
| + | * • Niedrige Bisektionsweite und Konnektivität, | ||
| + | * • Teure Komponenten | ||
| + | * • Darf/ | ||
| + | * • Relativ hoher Durchmesser, | ||
| + | * • Hoher Verkabelungsaufwand | ||
| + | * • Datenübertragungen können leicht abgehört werden. | ||
| + | * • Langsamere Datenübertragung bei vielen angeschlossenen Endgeräten | ||
| + | |||
| + | === Stern Topologie 10 Base T 10 Base F (Glasfaser) === | ||
| + | |||
| + | Vorteile | ||
| + | * • Der Ausfall eines Endgerätes hat keine Auswirkung auf den Rest des Netzes. | ||
| + | * • Dieses Netz bietet hohe Übertragungsraten, | ||
| + | * • Leicht erweiterbar | ||
| + | * • Leicht verständlich | ||
| + | * • Leichte Fehlersuche | ||
| + | * • Kombinierte Telefon- / Rechnernetzverkabelung möglich | ||
| + | * • Sehr schnell | ||
| + | Nachteile | ||
| + | * • Durch Ausfall des Verteilers wird Netzverkehr unmöglich | ||
| + | * • Niedrige Übertragungsrate bei vielen Hosts wenn ein Hub benutzt wird → Unterteilung des Netzes mit Switch ist notwendig | ||
| + | * • Hoher Kabelaufwand | ||
| + | Segmentlänge 100 Meter | ||
| + | |||
| + | Theoretisch 1024 PCs an einem Switch möglich | ||
| + | |||
| + | Batchkabel verwenden wenn möglich | ||
| + | Din Norm welche Farbe für welche Ader | ||
| + | |||
| + | ==== Kabeltypen: ==== | ||
| + | |||
| + | Twisted-Pair-Kabel gibt es in zwei- und vierpaariger Ausführung. Bei aktuellen Netzwerkinstallationen werden fast nur vierpaarige Kabel verwendet. | ||
| + | Neben der Einteilung in Klassen und Kategorien bezieht man sich bei der Bezeichnung von Twisted-Pair-Kabel auf deren Zusammensetzung aus Mantel, Schirm und Adernpaaren. Hier gibt es deutliche Unterschiede, | ||
| + | Grundsätzlich unterschiedet man zwischen geschirmte und ungeschirmte Kabel. Im Gegensatz zu den geschirmten Kabel (STP und FTP) weisen die ungeschirmten Kabel (UTP) eine deutlich schlechtere Übertragungsqualität auf, die sich bei hohen Übertragungsraten und langen Leitungslängen negativ bemerkbar macht. | ||
| + | Da die alten Bezeichnungen nicht einheitlich, | ||
| + | XX steht für die Gesamtschirmung | ||
| + | • U = ohne Schirm (ungeschirmt) | ||
| + | • F = Folienschirm (beschichtete Kunststofffolie) | ||
| + | • S = Geflechtschirm (Drahtgeflecht) | ||
| + | • SF = Geflecht- und Folienschirm | ||
| + | Y steht für die Aderpaarschirmung | ||
| + | • U = ohne Schirm (ungeschirmt) | ||
| + | • F = Folienschirm (beschichtete Kunststofffolie) | ||
| + | • S = Geflechtschirm (Drahtgeflecht) | ||
| + | ZZ steht für die Verseilungsart | ||
| + | • TP = Twisted Pair (in der Regel) | ||
| + | • QP = Quad Pair | ||
| + | |||
| + | UTP (Unshielded Twisted Pair) | ||
| + | Kabel mit ungeschirmten Paaren und ohne Gesamtschirm. | ||
| + | Einsatz vorzugsweise bei der Etagen- und Endgeräteverkabelung. | ||
| + | Das Hauptproblem bei UTP-Kabeln ist das Übersprechen, | ||
| + | Das Kabel ist jedoch wegen seines geringen Außendurchmessers und der fehlenden Schirme einfach zu verarbeiten und in der Regel preisgünstiger als andere Kabeltypen. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | • STP (Shielded Twisted Pair): | ||
| + | Die Adernpaare sind mit einem metallischem Schirm (meist eine aluminiumkaschierte Kunststofffolie) umgeben. | ||
| + | Bei Schirmung jeweils eines Paares spricht man auch von PiMF (Paar in Metallfolie), | ||
| + | Durch diese zusätzliche Schirmung besitzt das STP-Kabel einen größeren Außendurchmesser und ist dadurch schlechter zu verlegen (größerer Biegeradius) als UTP-Kabel. | ||
| + | Das Übersprechen zwischen den einzelnen Adernpaaren kann jedoch durch die Schirmung verringert werden (siehe auch Elektromagnetische Verträglichkeit). | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | • S/STP (Screened Shielded Twisted Pair): | ||
| + | Aufbau wie bei STP, jedoch mit zusätzlicher metallischer Gesamtschirmung um die Leiterbündel. | ||
| + | Der Gesamtschirm kann als Folie oder als Drahtgeflecht oder aus beidem zusammen ausgeführt sein. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | • S/UTP (Screened Unshielded Twisted Pair): | ||
| + | Aufbau wie bei UTP, jedoch mit zusätzlicher metallischer Gesamtschirmung um die Leiterbündel. | ||
| + | Der Gesamtschirm kann als Folie oder als Drahtgeflecht oder aus beidem zusammen ausgeführt sein. | ||
| + | Besteht der Gesamtschirm nur aus einer Folie, wird so ein Kabel auch als FTP-Kabel bezeichnet; besteht der Gesamtschirm aus Folie + Drahtgeflecht auch als S/ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Kabeltyp Kategorien === | ||
| + | |||
| + | Kat 1 : Bandbreite bis 100 kHz | ||
| + | Kat 2 : Bandbreite bis 1 MHz | ||
| + | Kat 3 : Bandbreite bis 16 MHz Nicht geeignet für Geschwindigkeiten über 16 Mbit/s. Heute vor allem als Telefonkabel eingesetzt. | ||
| + | Kat 4 : Bandbreite bis 20 MHz | ||
| + | Kat 5 : Bandbreite bis 100 MHz In den meisten aktuellen LANs eingesetzt vier einzeln abgeschirmte Adernpaare (Screened/ | ||
| + | Kat 6 : Bandbreite bis 200 MHz | ||
| + | Kat 7 : Bandbreite bis 600 MHz | ||
| + | |||
| + | |||
| + | ISO/IEC 11801 | ||
| + | |||
| + | Die internationalen Standardisierungs-Aktivitäten für anwendungsneutrale Verkabelungssysteme begannen 1991. 1993 lag der erste Entwurf für den internationalen Standard ISO/ | ||
| + | |||
| + | RJ 45 | ||
| + | |||
| + | Token Ring Adernpaar 1 und 3 | ||
| + | 10BaseT Adernpaar 2 und 3 | ||
| + | 100BaseT Adernpaar 2 und 3 | ||
| + | 100BaseT4 Adernpaar 1, 2, 3 und 4 | ||
| + | VG-AnyLAN Adernpaar 1, 2, 3 und 4 | ||
| + | Belegung RJ45-Stecker für Ethernet nach EIA/TIA 568A (Netzwerkkabel) Belegung RJ45-Stecker für Ethernet nach EIA/TIA 568B (Netzwerkkabel) | ||
| + | Signal Pin Farbe | ||
| + | TX+ 1 weiß/ | ||
| + | TX- 2 grün | ||
| + | RX+ 3 weiß/ | ||
| + | | ||
| + | | ||
| + | RX- 6 orange | ||
| + | | ||
| + | | ||
| + | Signal Pin Farbe | ||
| + | TX+ 1 weiß/ | ||
| + | TX- 2 orange | ||
| + | RX+ 3 weiß/ | ||
| + | | ||
| + | | ||
| + | RX- 6 grün | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== IP ==== | ||
| + | |||
| + | Eine IP-Adresse ist eine Adresse in Computernetzen, | ||
| + | Die IP-Adresse wird verwendet, um Daten von ihrem Absender zum vorgesehenen Empfänger transportieren zu können. Ähnlich der Postanschrift auf einem Briefumschlag werden Datenpakete mit einer IP-Adresse versehen, die den Empfänger eindeutig identifiziert. Aufgrund dieser Adresse können die „Poststellen“, | ||
| + | |||
| + | ==== DNS ==== | ||
| + | |||
| + | Das Domain Name System (DNS) ist einer der wichtigsten Dienste in vielen IP-basierten Netzwerken. Seine Hauptaufgabe ist die Beantwortung von Anfragen zur Namensauflösung. | ||
| + | Das DNS funktioniert ähnlich wie eine Telefonauskunft. Der Benutzer kennt die Domain (den für Menschen merkbaren Namen eines Rechners im Internet) – zum Beispiel example.org. Diese sendet er als Anfrage in das Internet. Der URL wird dann dort vom DNS in die zugehörige IP-Adresse (die „Anschlussnummer“ im Internet) umgewandelt – zum Beispiel eine IPv4-Adresse der Form 192.0.2.42 oder eine IPv6-Adresse wie 2001: | ||
| + | |||
| + | ==== Subnetzmaske ==== | ||
| + | |||
| + | Die Aufteilung eines zusammenhängenden Adressraums von IP-Adressen in mehrere kleinere Adressräume nennt man Subnetting. | ||
| + | Ein Subnet, Subnetz bzw. Teilnetz ist ein physikalisches Segment eines Netzwerks, in dem IP-Adressen mit der gleichen Netzwerkadresse benutzt werden. Diese Teilnetze können mit Routern miteinander verbunden werden und bilden dann ein großes zusammenhängendes Netzwerk. | ||
| + | 255.255.255.0 | ||
| + | |||
| + | ==== Gateway ==== | ||
| + | |||
| + | Teilweise wird im Heimbereich ein Kombigerät aus DSL-Router und DSL-Modem als Internet-Gateway bezeichnet. Diese Geräte vereinen, vereinfacht ausgedrückt, | ||
| + | |||
| + | |||
| + | |||
| + | ==== Netzwerkklasse ==== | ||
| + | |||
| + | |||
| + | Netzklasse Präfix Adressbereich Netzmaske Netzlänge | ||
| + | (mit Präfix) Netzlänge | ||
| + | (ohne Präfix) Hostlänge Netze Hosts pro Netz | ||
| + | A 0... 0.0.0.0 – 127.255.255.255 255.0.0.0 8 Bit 7 Bit 24 Bit 128 16.777.214 | ||
| + | B 10... 128.0.0.0 – 191.255.255.255 255.255.0.0 16 Bit 14 Bit 16 Bit 16.384 65.534 | ||
| + | C 110... 192.0.0.0 – 223.255.255.255 255.255.255.0 24 Bit 21 Bit 8 Bit 2.097.152 254 | ||
| + | D 1110... 224.0.0.0 – 239.255.255.255 Verwendung für Multicast-Anwendungen | ||
| + | E 1111... 240.0.0.0 – 255.255.255.255 reserviert (für zukünftige Zwecke) | ||
| + | |||
| + | |||
| + | ==== Private Netze ==== | ||
| + | |||
| + | A-Klasse-Netz: | ||
| + | B-Klasse-Netze: | ||
| + | | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== APIPA ==== | ||
| + | |||
| + | ist eine Abkürzung für Automatic Private IP Adressing. | ||
| + | Eine selbst zugewiesene IP-Adresse, wenn DHCP nicht funktioniert. | ||
| + | |||
| + | Ein Rechner versucht bei einem DHCP-Server seine TCP/ | ||
| + | |||
| + | Erreicht der Rechner jedoch keinen DHCP-Server, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Routing ==== | ||
| + | |||
| + | die Übermittlung von Nachrichten über Nachrichtennetze. Im Unterschied zu Verteilern (Hubs und Switches) arbeitet das Routing ohne Einschränkungen auch in vermaschten Netzen. | ||
| + | Das Routing ist ein Vorgang, der den Weg zur nächsten Station eines Datenpakets bestimmt. Im Vordergrund steht die Wahl der Route aus den verfügbaren Routen, die in einer Routing-Tabelle gespeichert sind. | ||
| + | |||
| + | Verschiedene Parameter und Kriterien können für die Wahl einer Route von Bedeutung sein: | ||
| + | - Verbindungskosten | ||
| + | - notwendige Bandbreite | ||
| + | - Ziel-Adresse | ||
| + | - Subnetz | ||
| + | - Verbindungsart | ||
| + | - Verbindungsinformationen | ||
| + | - bekannte Netzwerkadressen | ||
| + | |||
| + | ==== Mac-Adresse ==== | ||
| + | |||
| + | Jede Station in einem Ethernet-Netzwerk hat eine eigene Adresse. Diese Adresse soll die Stationen eindeutig identifizieren. Sie werden als MAC-Adressen, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== NAT ==== | ||
| + | – das network address translation ist ein Verfahren, dass in IP-Routern eingesetzt wird, die lokale Netzwerke mit dem Internet verbinden. | ||
| + | ==== ARP ==== | ||
| + | - Address Resolution setzt IP-Adressen in Hardware- und MAC-Adressen im eigenen Netzwerk um | ||
| + | |||
| + | ==== TTL ==== | ||
| + | - verstopfen des Netzes Daten wird durch Zeitvergabe verhindert | ||
| + | |||
| + | ==== HUB ==== | ||
| + | – ist dumm, gibt nur Signal weiter wird nicht analysiert | ||
| + | |||
| + | ==== Switch ==== | ||
| + | – Verteiler, der Tabelle mit Mac adressen anlegt und so verteilt, Tabelle wird alle paar Minuten zurückgesetzt | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== OSI – Model ==== | ||
| + | |||
| + | |||
| + | | ||
| + | Schichten – Details | ||
| + | === Schicht 1 === | ||
| + | |||
| + | Bitübertragungsschicht (engl.: Physical Layer) | ||
| + | Die Bitübertragungsschicht ist für die Übertragung der Bitströme über das Übertragungsmedium (Kabel, Funk) zuständig. Hier werden folgende Parameter festgelegt: | ||
| + | 1. Übertragungsmedium (Kupfer, Glasfaser, Funk) | ||
| + | 2. Die Funktion der einzelnen Leitungen (Datenleitung, | ||
| + | Steuerleitung) | ||
| + | 3. die Übertragungsrichtung (simplex: in eine Richtung / | ||
| + | halb-duplex: | ||
| + | gleichzeitig in beide Richtungen | ||
| + | 4. Übertragungsgeschwindigkeit | ||
| + | Beispielgeräte, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Schicht 2 (MAC – Schicht) === | ||
| + | |||
| + | Sicherungsschicht (engl.: Link Layer) | ||
| + | Die Aufgabe der Sicherungsschicht ist der zuverlässige Austausch von Datenpaketen zwischen den Systemen. Sie wird in zwei Unterschichten unterteilt: in die MAC-Schicht (Medium Access Control), die an die Bitübertragungsschicht (Schicht 1) grenzt und in die LLC-Schicht (Logical Link Control), die an die Netzwerkschicht (Schicht 3) grenzt. – | ||
| + | Die Mac-Schicht regelt die Nutzung der Übertragungsmedien und schreibt die physikalische Sende- und Empfangsadresse in das Protokoll der Datenpakete. Die LLC-Schicht teilt den Bitdatenstrom in Datenrahmen (frames) und führt eine Fehlererkennung und -korrektur durch. – Beispielgeräte, | ||
| + | === Schicht 3 (IP Schicht) === | ||
| + | |||
| + | Netzwerkschicht (engl.: Network Layer) | ||
| + | Die Netzwerkschicht steuert den Austausch von Datenpaketen, | ||
| + | === Schicht 4 (Port Schicht) === | ||
| + | |||
| + | Transportschicht (engl.: Transport Layer) | ||
| + | Segmentieren bzw zerhacken der Pakete | ||
| + | Die Transportschicht ist die oberste Schicht des Transportsystems (Schicht 1 bis 4) und ist die Schnittstelle zum Anwendungssystem (Schicht 5 bis 7). Die Transportschicht wandelt die Datenpakete laut Protokoll-Informationen um und sorgt für die richtige Zusammensetzung der Pakete beim Empfänger. – Protokolle, die in dieser Schicht genutzt werden: TCP (nachgefordert), | ||
| + | === Schicht 5 === | ||
| + | |||
| + | Sitzungsschicht (engl.: Session Layer) | ||
| + | Die Sitzungsschicht ist die unterste Schicht des Anwendungssystems (Schicht 5-7) und baut logische Verbindungen zwischen Sender und Empfänger auf, kontrolliert diese und beendet sie wieder. – Folgende Dienste können in den Schichten 5-7 genutzt werden: FTP, Telnet, SMTP | ||
| + | === Schicht 6 === | ||
| + | |||
| + | Präsentationsschicht (engl.: Presentation Layer) | ||
| + | Die Präsentationsschicht fungiert als Dolmetscher, | ||
| + | === Schicht 7 === | ||
| + | |||
| + | Anwendungsschicht (engl.: Application Layer) | ||
| + | Die Anwendungsschicht ist die Schnittstelle zur eigentlichen Benutzeranwendung. Hier werden die Netzwerkdaten in vom Benutzer verwendbare Daten umgewandelt. – Beispielanwendungen: | ||
| + | |||
| + | |||
| + | |||
| + | ==== CSMA/CD – Verfahren ==== | ||
| + | |||
| + | Reinhören ins Kabel kann ich senden - Kollisionsvermeidung | ||
| + | Ist bei allem bis auf W-Lan | ||
| + | (SSMA/CA – Geräte mit W-Lan checken den Router und senden 1 Paket, so kann es zu einer Kollision kommen aber nicht zu vielen, wenn Bahn frei werden 50 Pakete gesendet, dann die nächsten 50 usw) | ||
| + | |||
| + | ==== Ports ==== | ||
| + | - nur Programmzuweisung | ||
| + | ==== Ad-Hoc-Netz ==== | ||
| + | Netz welches keinen Router brauch und Geräte miteinander verbindet. (Kumpels sitzen im Zug und verbinden ihre Laptops miteinander über W-Lan zum zocken) | ||
| + | Infrastrukturnetz Bei einem Infrastruktur-Netz handelt es sich um ein Wireless LAN, bei dem die Kommunikation der einzelnen Endgeräte (Clients) über einen zentralen Knotenpunkt (Access Point) ermöglicht wird. Die Clients müssen sich jeweils mit ihrer MAC-Adresse am Knoten anmelden und bekommen eine IP-Adresse zugeteilt, falls ein DHCP-Server auf die anfragenden Clients antwortet. | ||
| + | Der Access Point kann dabei auch Vermittler in ein weiteres (auch drahtgebundenes) Netz sein. | ||
| + | |||
| + | ==== DHCP ==== | ||
| + | ist ein Protokoll, um IP-Adressen in einem TCP/ | ||
| + | Warum DHCP? | ||
| + | Um ein Netzwerk per TCP/IP aufzubauen ist es notwendig jede einzelne Station zu konfigurieren. Für ein TCP/ | ||
| + | * • Vergabe einer eindeutigen IP-Adresse | ||
| + | * • Zuweisen einer Subnetzmaske (Subnetmask) | ||
| + | * • Zuweisen des Default- bzw. Standard-Gateways | ||
| + | * • DNS-Serveradressen | ||
| + | |||
| + | |||
| + | ====== Netzwerkübertragungstechnik ====== | ||
| + | |||
| + | ===== IEEE 802 ===== | ||
| + | |||
| + | * IEEE - Institute of Electrical and Electronics Engineers | ||
| + | * über 360.000 Mitglieder in über 176 Ländern | ||
| + | * Die bekanntesten Standards sind 1394 für FireWire, 1284 für die Centronics-Druckerschnittstelle und 802 für die Netzwerkschnittstelle Ethernet. | ||
| + | * Mit der Notwendigkeit Ende der 70er Jahre Standards im Bereich der lokalen Netze einzuführen, | ||
| + | |||
| + | |||
| + | ===== IEEE 802.3 / Ethernet ===== | ||
| + | * Standard für lokale Netzwerke (LAN - Local Area Network) | ||
| + | * 10-MBit-Ethernet über Koaxialkabel | ||
| + | * Fast Ethernet mit 100 MBit/s | ||
| + | * Gigabit Ethernet mit 1000 MBit/s und 10 GBit/s | ||
| + | * Alle Ethernet-Varianten haben eines gemeinsam, sie basieren auf denselben Prinzipien. | ||
| + | - Zugriffsverfahren CSMA/CD Kollisionsvermeidung | ||
| + | - Ethernet Datenpaket | ||
| + | |||
| + | |||
| + | ====== Transportprotokolle ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Subnetting ===== | ||
| + | * Aufteilung eines zusammenhängenden Adressraumes von IP-Adressen in mehrere kleinere Adressräume | ||
| + | * Teilnetze können mit Routern miteinander verbunden werden | ||
| + | * um die Netzlast sinnvoll und geordnet zu verteilen | ||
| + | |||
| + | |||
| + | | Hostanzahl | Subnetzmaske | 32-Bit-Wert | Präfix | | ||
| + | | 32 | 255.255.255.224 | 1111 1111 1111 1111 1111 1111 1110 0000 | /27 | | ||
| + | | 8 | 255.255.255.248 | 1111 1111 1111 1111 1111 1111 1111 1000 | /29 | | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== IP-Routing ===== | ||
| + | * IP ist das bedeutendste routingfähige Protokoll | ||
| + | * kann Daten über jede Art von physikalischer Verbindung vermitteln | ||
| + | * Weg zur nächsten Station finden (aus verschiedenen Wegen wählen) | ||
| + | * Wege sind in Routing-Tabelle gespeichert | ||
| + | * Warum ist Routing notwendig? | ||
| + | - Broadcasts belasten ein Netzwerk | ||
| + | - Router kann zwischen unterschiedlichen Architekturen vermitteln | ||
| + | - unterschiedliche Fragmentierung der Datenpakete | ||
| + | - engmaschiges Netz durch Routing => mehrere Wege zum Ziel | ||
| + | - Sicherheitsaspekte | ||
| + | |||
| + | |||
| + | |||
| + | ===== MTU ===== | ||
| + | **Maximum Transfer Unit ** | ||
| + | * gibt die maximale IP-Paketlänge/ | ||
| + | * Wechselt die MTU auf dem Weg zum Ziel mehrmals, wird das Datenpaket jedesmal neu fragmentiert | ||
| + | * die Fragmentierung ist sehr zeit- und rechenaufwendig | ||
| + | * Verhältnis zwischen Header und Nutzdaten wird immer ungünstiger | ||
| + | * MTU-Wert | ||
| + | * bei WLan-Verbindungen erfolgt neue Fragmentierung | ||
| + | ===== MTU ===== | ||
| + | * optimalen MTU ermitteln: | ||
| + | - max.MTU (1492 Byte) - Header(28 Byte) = 1464 Byte | ||
| + | - ping -f -l 1462 web.de | ||
| + | - wenn Meldung muß fragmentiert werden | ||
| + | - wenn keine Meldung in Registry eintragen | ||
| + | |||
| + | |||
| + | ===== MTU einstellen: ===== | ||
| + | |||
| + | **Win9x: | ||
| + | |||
| + | HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\ Class\netTrans\" | ||
| + | |||
| + | **Win2000 / XP** | ||
| + | - in Registry Schlüssel suchen HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters\Interfaces | ||
| + | - IP-Adresse in Unterverzeichenisse suchen | ||
| + | - Neu-DWORD-Wert erstellen MTU, | ||
| + | - MTU ist erst nach dem Booten aktiv | ||
| + | **Linux** | ||
| + | |||
| + | Datei "/ | ||
| + | |||
| + | ===== MTU - Werte ===== | ||
| + | |||
| + | ^ Netzwerktyp ^ MTU (gesamt) ^ MSS (Nutzdaten) ^ | ||
| + | |X.25 / analoge Modem-Verbindungen| 576 Byte| 536 Byte| | ||
| + | |IEEE 802.3 (PPPoE-Implementierung / DSL)| 1492 Byte| 1452 Byte| | ||
| + | |Ethernet| 1500 Byte| 1460 Byte| | ||
| + | |Token Ring (4 MBit/ | ||
| + | |Token Ring (16 MBit/s)| 17914 Byte| | | ||
| + | |min. MTU IPv4| 68 Byte| | | ||
| + | |min. MTU IPv6| 1280 Byte| | | ||
| + | |||
| + | |||
| + | |||
| + | ===== NetBEUI - NetBIOS | ||
| + | **Network Basic Extended User Interface** | ||
| + | * von IBM im Jahr 1985 für das Betriebssystem OS/2 entwickelt | ||
| + | * von Microsoft, Intel und Novell weiterentwickelt unter der Bezeichnung NetBIOS | ||
| + | * NetBEUI wird in MsDos, Windows NT und Windows 9x/ME eingesetzt | ||
| + | * NetBEUI auf Schnelligkeit in kleinen Netzwerken optimiert | ||
| + | * NetBEUI mit NetBIOS funktionieren nahezu vollautomatisch | ||
| + | * Neben NetBEUI kann NetBIOS auch über TCP/IP oder IPX/SPX übertragen werden | ||
| + | |||
| + | |||
| + | ===== IPX/ | ||
| + | * eine von Novell entwickelte Protokoll-Familie für lokale Netzwerke | ||
| + | * IPX/SPX bilden ein Client/ | ||
| + | * für den Zugriff auf Dateien, Drucker, Namensverwaltung | ||
| + | * IPX ist ein verbindungsloses Protokoll (Adressierung über MAC-Adressen) | ||
| + | * SPX erweitert IPX um ein verbindungsorientiertes Protokoll | ||
| + | * auch Windows unterstützt diese Protokoll-Familie | ||
| + | * seit Version 5 verwendet Netware TCP/IP als Standard-Protokoll | ||
| + | ====== Hardware | ||
| ===== CSMA/ | ===== CSMA/ | ||
| Carrier Sense Multiple Access/ | Carrier Sense Multiple Access/ | ||
| Zeile 1457: | Zeile 1977: | ||
| (dev/sdb1 /mnt auto auto, users, exec 0 0) | (dev/sdb1 /mnt auto auto, users, exec 0 0) | ||
| + | |||
| + | ==== zertifikat ==== | ||
| + | |||
| + | < | ||
| + | root@ubuntu:/ | ||
| + | insgesamt 16 | ||
| + | -rw-r--r-- 1 root root 10918 Jun 18 09:54 index.html | ||
| + | -rw-r--r-- 1 root root 17 Jun 18 10:01 phpinfo.php | ||
| + | root@ubuntu:/ | ||
| + | root@ubuntu:/ | ||
| + | root@ubuntu:/ | ||
| + | |||
| + | #unter umständen alte confs deaktivieren | ||
| + | a2dissite dokuwiki | ||
| + | |||
| + | a2enmod ssl | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== zertifikat zusammenbauen ==== | ||
| + | |||
| + | |||
| + | **privater Schlüssel** | ||
| + | eine verschlüsselungsmethode: | ||
| + | < | ||
| + | openssl genrsa -out / | ||
| + | |||
| + | </ | ||
| + | |||
| + | **Zertifikat und öffentlicher Schlüssel** | ||
| + | < | ||
| + | openssl req -new -x509 -key / | ||
| + | |||
| + | nano / | ||
| + | |||
| + | SSLCertificateFile | ||
| + | SSLCertificateKeyFile / | ||
| + | |||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Linux Webserver ==== | ||
| + | |||
| + | |||
| + | feste IP | ||
| + | |||
| + | nano / | ||
| + | |||
| + | network: | ||
| + | version: 2 | ||
| + | renderer: networkd | ||
| + | ethernets: | ||
| + | enp0s3: | ||
| + | dhcp4: no | ||
| + | addresses: [192.168.1.150/ | ||
| + | gateway4: 192.168.1.1 | ||
| + | nameservers: | ||
| + | addresses: [8.8.8.8, | ||
| + | |||
| + | netplan apply | ||
| + | |||
| + | sudo apt update | ||
| + | |||
| + | sudo apt-get install apache2 libapache2-mod-php7.2 php7.2 php7.2-mysql mysql-server | ||
| + | |||
| + | IP im Browser aufrufen | ||
| + | |||
| + | php info erstellen | ||
| + | echo "<? | ||
| + | |||
| + | Datenbank testen# | ||
| + | mysql | ||
| + | |||
| + | db user anlegen | ||
| + | nano / | ||
| + | |||
| + | #Skript | ||
| + | #! /bin/bash | ||
| + | clear | ||
| + | echo -n Bitte Username eingeben: | ||
| + | read userdb | ||
| + | #echo $userdb | ||
| + | echo -n Bitte Passwort eingeben: | ||
| + | read passdb | ||
| + | #echo $passdb | ||
| + | echo CREATE USER " | ||
| + | echo GRANT USAGE ON '* . *' TO " | ||
| + | echo CREATE DATABASE IF NOT EXISTS " | ||
| + | echo GRANT ALL PRIVILEGES ON " | ||
| + | mysql < / | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | virtuelle Hosts mit PORT | ||
| + | |||
| + | nano / | ||
| + | |||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot / | ||
| + | </ | ||
| + | |||
| + | |||
| + | um z.B. Wordpress zu installieren | ||
| + | nano / | ||
| + | |||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/wp | ||
| + | </ | ||
| + | |||
| + | |||
| + | mkdir /var/www/wp | ||
| + | nano / | ||
| + | |||
| + | <?php | ||
| + | echo " | ||
| + | ?> | ||
| + | |||
| + | a2ensite wp # | ||
| + | |||
| + | nano / | ||
| + | |||
| + | Listen 80 | ||
| + | Listen 81 | ||
| + | < | ||
| + | Listen 443 | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Listen 443 | ||
| + | </ | ||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | |||
| + | |||
| + | virtuelle Hosts mit IP (am Beispiel joomla) | ||
| + | |||
| + | |||
| + | nano / | ||
| + | network: | ||
| + | version: 2 | ||
| + | renderer: networkd | ||
| + | ethernets: | ||
| + | enp0s3: | ||
| + | dhcp4: no | ||
| + | addresses: [192.168.1.150/ | ||
| + | gateway4: 192.168.1.1 | ||
| + | nameservers: | ||
| + | addresses: [8.8.8.8, | ||
| + | |||
| + | |||
| + | cp / | ||
| + | |||
| + | |||
| + | |||
| + | nano / | ||
| + | |||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/jo | ||
| + | </ | ||
| + | |||
| + | mkdir /var/www/jo | ||
| + | |||
| + | nano / | ||
| + | |||
| + | <?php | ||
| + | echo " | ||
| + | ?> | ||
| + | |||
| + | a2ensite joomla | ||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | | ||
| + | |||
| + | mkdir / | ||
| + | cp / | ||
| + | nano / | ||
| + | |||
| + | <?php | ||
| + | echo " | ||
| + | ?> | ||
| + | |||
| + | cp / | ||
| + | |||
| + | |||
| + | nano / | ||
| + | |||
| + | |||
| + | so nimmt er alle IPs | ||
| + | |||
| + | | ||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/dw | ||
| + | ServerName dokuwiki.ibs | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | jetzt nimmt er nur die IP 192.168.1.150 | ||
| + | |||
| + | NameVirtualHost 192.168.1.150 | ||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/dw | ||
| + | ServerName dokuwiki.ibs | ||
| + | </ | ||
| + | |||
| + | |||
| + | a2ensite dokuwiki | ||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | |||
| + | Zum Testen z.B. unter Win10 Editor als Admin öffnen; darin C: | ||
| ====== PHP ====== | ====== PHP ====== | ||
| - | ====== MySQL ====== | + | ======= MySQL ======= |
| + | ===== SQL Einleitung | ||
| + | |||
| + | |||
| + | |||
| + | ===== Datenbanken ===== | ||
| + | * Datenbanken bestehen aus ein oder mehreren Dateien fester Satzstruktur (Tabellen) | ||
| + | * die einzelnen Tabellen können logisch über Beziehungen miteinander verbunden werden | ||
| + | * bei Datenbanken werden die Zeilen durch Primärschlüssel (ID) bestimmt | ||
| + | * eine Spalte gleich ein Datentyp | ||
| + | * Tabellen können indiziert werden (schnelle Suche) | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Datenbankmodelle ===== | ||
| + | - hierarchische Modelle (Bsp. Dateisystem) | ||
| + | - Netzwerkmodell | ||
| + | - Relationsmodell (Tabellen) | ||
| + | - objektorientiertes Modell | ||
| + | - NoSQL | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Datenbanksysteme ===== | ||
| + | - Access | ||
| + | - dbase (frühe Datenbank-Applikation) | ||
| + | - Oracle Database (ORACLE zweitgrößter Softwarehersteller weltweit) | ||
| + | - DB2 (IBM) | ||
| + | - PostgreS | ||
| + | - MS SQL Datenbank | ||
| + | - MySQL | ||
| + | |||
| + | |||
| + | ===== Datenbankentwurf ===== | ||
| + | |||
| + | * Zusammenfassung von inhaltlich zusammengehörigen Daten | ||
| + | * Normalisierung (Redundanzen, | ||
| + | * Vergabe von Schlüsseln für die einzelnen Tabellen | ||
| + | * Analyse der Beziehungen (1:1 oder 1:n) | ||
| + | |||
| + | ===== Relationale Datenbank ===== | ||
| + | * Die Daten werden in einer oder mehrere Tabellen gespeichert. | ||
| + | * Attribute = Spaltenüberschriften | ||
| + | * Attributwerte = Inhalt der Spalten | ||
| + | * Mit den Attributen wird der Datentyp und die Größe festgelegt. | ||
| + | * Tuple/ | ||
| + | * Entität = Das konkrete Objekt der Tabelle (z.B.:Erna Otto). | ||
| + | * Entitätsmenge/ | ||
| + | * Es werden Redundanzen vermieden, da die Daten auf mehrere Tabellen verteilt werden. | ||
| + | |||
| + | ===== Entity-Relationship-Modell ===== | ||
| + | Eigenschaften: | ||
| + | - Die Tabelle muss einen eindeutigen Namen besitzen. | ||
| + | - Die Bezeichnung der Attribute ist eindeutig. | ||
| + | - Ein Attribut identifiziert einen Datensatz eindeutig (Primärschlüssel). | ||
| + | - Die Daten eines Attributes besitzen einen vorgegebenen Wertebereich. | ||
| + | |||
| + | ===== Datenmodellierung 1 ===== | ||
| + | * Datenanalyse | ||
| + | - Welche Daten sind vorhanden? | ||
| + | - Max. erwartete Datensätze (DS)? | ||
| + | - Wie sollen die DS erfasst werden? | ||
| + | - Abhängigkeiten zwischen den Daten? | ||
| + | - Welche Auswertungen werden benötigt? | ||
| + | |||
| + | ===== Datenmodellierung 2 ===== | ||
| + | * Datenbeziehungen festlegen | ||
| + | - Verknüpfung der Entitäten festlegen. | ||
| + | - grafische Darstellung mit einem Entity-Relationship-Diagramm (ERD). | ||
| + | * Entwurf des relationalen Datenbankschemas | ||
| + | - Aufbau der vollständigen Tabellenstrukur. | ||
| + | - Übernahme der Fremdschlüssel in die Beziehungstabelle. | ||
| + | |||
| + | ===== Beziehungstypen ===== | ||
| + | * 1:1 Beziehung | ||
| + | * 1:m Beziehung (1 : mehrere) | ||
| + | * m:n Beziehung (mehrere : mehrere) | ||
| + | * 1:c Beziehung (1 : möglicherweise 1) | ||
| + | * 1:mc Beziehung (1 : möglicherweise 1 oder mehr) | ||
| + | |||
| + | ===== 1:1 Beziehung ===== | ||
| + | ... existiert wenn jedes Objekt der einen Menge mit genau einem Objekt der | ||
| + | anderen Menge in Beziehung steht. | ||
| + | \\ | ||
| + | \\ | ||
| + | Beispeil: | ||
| + | * Mitarbeiter : Handynummer | ||
| + | * Mitarbeiter : Gehalt | ||
| + | * Mitarbeiter : Geburtsdatum | ||
| + | |||
| + | ===== 1:n Beziehung ===== | ||
| + | ... existiert wenn jedes Objekt der einen Menge mit keinem, | ||
| + | Objekten der anderen Menge in Beziehung steht. | ||
| + | \\ | ||
| + | \\ | ||
| + | Beispiel: | ||
| + | * Krankenkasse : Mitarbeiter | ||
| + | * Abteilung : Mitarbeiter | ||
| + | |||
| + | ===== 1:m Beziehung ===== | ||
| + | ... existiert wenn jedes Objekt der einen Menge mit einem oder mehreren | ||
| + | Objekten der anderen Menge in Beziehung steht. | ||
| + | \\ | ||
| + | \\ | ||
| + | Beispiel: | ||
| + | * Krankenkasse : Mitarbeiter | ||
| + | * Abteilung : Mitarbeiter | ||
| + | |||
| + | ===== m : n Beziehung ===== | ||
| + | … existiert wenn jedes Objekt der einen Menge mit einem oder mehreren Objekten der anderen Menge in Beziehung steht und umgekehrt. | ||
| + | \\ | ||
| + | \\ | ||
| + | Beispiel: | ||
| + | * Personendaten : Festnetzanschluß | ||
| + | * Mitarbeiter : Projekte | ||
| + | |||
| + | ===== 1 : c Beziehung ===== | ||
| + | … existiert wenn jedes Objekt der Menge A höchstens einem Objekt der Menge B zugeordnet wird. | ||
| + | |||
| + | Umgekehrt steht mit jedem Objekt der Menge B genau ein Objekt der Menge A in Beziehung. | ||
| + | \\ | ||
| + | \\ | ||
| + | Beispiel: | ||
| + | * Mitarbeiter hat höchstens eine Telefondurchwahl | ||
| + | * Mitarbeiter leitet höchstens eine Abteilung | ||
| + | |||
| + | ===== 1 : mc Beziehung ===== | ||
| + | … existiert wenn jedes Objekt der Menge A kein, ein oder mehrere Objekten der Menge B zugeordnet wird. | ||
| + | |||
| + | Umgekehrt steht mit jedem Objekt der Menge B genau ein Objekt der Menge A in Beziehung. | ||
| + | \\ | ||
| + | \\ | ||
| + | Beispiel: | ||
| + | * Person besitzt kein, ein oder mehrere Handy' | ||
| + | * Mitarbeiter ist für kein, ein oder mehrere Aufträge verantwortlich. | ||
| + | |||
| + | ===== Normalisierung ===== | ||
| + | Unter Normalisierung eines relationalen Datenbankschemas versteht man die schrittweise Zerlegung von Relationen (in der Datenbank: Tabellen) in mehrere Relationen auf der Grundlage funktionaler Abhängigkeiten. | ||
| + | \\ | ||
| + | Eine Normalisierung ist notwendig, um Redundanzen der Daten zu vermeiden, die bei der Änderung von Daten zu Inkonsistenzen führen können und zudem einen erhöhten Speicherplatz benötigen. | ||
| + | |||
| + | ===== Erste Normalform ===== | ||
| + | Die erste Normalform besteht dann, wenn: | ||
| + | - es keine Duplikate in den Zeilen der Tabelle gibt (Schlüsselattribut), | ||
| + | - alle Werte pro Attribut jeweils von derselben Art sind (Fehler=Attribut Adresse), | ||
| + | - jede Zelle einen einzigen unteilbaren Wert enthält (Fehler=alle Titel eines Album in einem Attribut). | ||
| + | |||
| + | ===== Bsp.: ===== | ||
| + | ID Album | ||
| + | 4711 Not That Kind | ||
| + | 4712 Wish You Were Here Pink Floyd Shine On You Crazy Diamond,... | ||
| + | 4713 Freak of Natur | ||
| + | |||
| + | ID Album | ||
| + | 4711 Not That Kind | ||
| + | 4711 Not That Kind | ||
| + | 4711 Not That Kind | ||
| + | 4712 Wish You Were Here Pink Floyd Shine On You Crazy Diamond | ||
| + | 4713 Freak of Natur | ||
| + | |||
| + | ===== Zweite Normalform ===== | ||
| + | |||
| + | Die zweite Normalform ist dann erfüllt, wenn: | ||
| + | * die erste Normalform erfüllt ist. | ||
| + | * Tabellen mit einem Schlüssel aus nur einem Attribut besteht. | ||
| + | |||
| + | |||
| + | ===== Bsp. ===== | ||
| + | |||
| + | ID Album | ||
| + | 4711 Not That Kind | ||
| + | 4711 Not That Kind | ||
| + | 4711 Not That Kind | ||
| + | 4712 Wish You Were Here Pink Floyd Shine On You Crazy Diamond | ||
| + | 4713 Freak of Natur | ||
| + | |||
| + | ID Album | ||
| + | |||
| + | ID Titel | ||
| + | |||
| + | ===== Dritte Normalform ===== | ||
| + | Eine Tabelle befindet sich in der dritten Normalform, wenn: | ||
| + | * sie die Bedingungen der zweiten Normalform erfüllt. | ||
| + | * keine funktionalen Abhängigkeiten zwischen Nicht-Schlüsselattributen bestehen | ||
| + | (keine Redundanzen in Nicht-Schlüsselatributen). | ||
| + | |||
| + | ===== Bsp. ===== | ||
| + | |||
| + | ID Album | ||
| + | 4711 Not That Kind | ||
| + | 4712 Wish You Were Here Pink Floyd | ||
| + | 4713 Freak of Natur | ||
| + | |||
| + | ID Album | ||
| + | |||
| + | ID Künstler | ||
| + | |||
| + | ===== Vierte Normalform ===== | ||
| + | Eine Tabelle ist in der vierten Normalform, wenn: | ||
| + | sie die Bedingungen der dritten erfüllt | ||
| + | jeder determinierende Wert einen Schlüssel bilden kann | ||
| + | |||
| + | Werden in der Praxis wenig benutzt. | ||
| + | |||
| + | ===== Fünfte Normalform ===== | ||
| + | |||
| + | Die fünfte Normalform ist erfüllt, wenn: | ||
| + | * alle Bedingungen der vierten Normalform erfüllt sind. | ||
| + | * keine Rendundanzen über mehrere Zeilen in einem Attribut bestehen. | ||
| + | | ||
| + | Werden in der Praxis wenig benutzt. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Fehler beim Datenbankentwurf ===== | ||
| + | * in einer Tabelle werden inhaltlich nicht zusammengehörige Daten gespeichert | ||
| + | * Doppelerfassungen bzw. Redundanzen | ||
| + | - Speicherplatzverschwendung | ||
| + | - zusätzlicher Arbeitsaufwand | ||
| + | - fehleranfällig (Inkonsistenz) | ||
| + | * Daten sind nicht atomar | ||
| + | * Wiederholfelder (z.B. mehrere Termine zu einem Teilnehmer) | ||
| + | |||
| + | |||
| + | ===== SQL-Geschichte ===== | ||
| + | * entwickelt in den 70er Jahren von IBM für Buchhaltung und Verwaltung | ||
| + | * Durchbruch erst in den 80er Jahren als ORACLE sql implementiert | ||
| + | * weitere DB-Anbieter folgten (Informix, Sysbase, MS-Sql) | ||
| + | * 1981 wurde SQL1 in Version SQL98 zum Industriestandard erklärt | ||
| + | |||
| + | |||
| + | |||
| + | ===== Datentypen (numerische)===== | ||
| + | * TINYINT = Bereich zwischen -128 und 127, [UNSIGNED] zwischen 0 und 255 | ||
| + | * SMALLINT = Bereich zwischen -32768 und 32767, [UNSIGNED] zwischen 0 und 65535 | ||
| + | * MEDIUMINT = Bereich zwischen -8388608 und 8388607, [UNSIGNED] zwischen 0 und 16777215 | ||
| + | * INT = Bereich zwischen -2147483648 und 2147483647, [UNSIGNED] zwischen 0 und 4294967295 | ||
| + | * BIGINT = Bereich zwischen -9223372036854775808 und 9223372036854775807, | ||
| + | * FLOAT = Bereich zwischen -3.402823466E+38 und -1.175494351E-38, | ||
| + | * DOUBLE = Bereich zwischen -3.402823466E+38 und -1.175494351E-38, | ||
| + | |||
| + | |||
| + | |||
| + | ===== Datentypen(Datum, | ||
| + | * DATE = Bereich liegt zwischen ' | ||
| + | * DATETIME = Bereich liegt zwischen ' | ||
| + | * TIMESTAMP = zwischen ' | ||
| + | * TIME = ' | ||
| + | * YEAR = Bereich zwischen 1901 und 2155 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Datentypen(Text) | ||
| + | - CHAR(M) = Zeichenkette fester Länge Max. 255 | ||
| + | - VARCHAR = Zeichenkette variabler Länge Max. 255 | ||
| + | - TINYTEXT = Maximallänge von 255 | ||
| + | - TEXT = Text variabler Länge Max. 65535 | ||
| + | - BLOB = Binärdaten | ||
| + | |||
| + | |||
| + | |||
| + | ===== Verbindung 1:n ===== | ||
| + | < | ||
| + | mysql> select * from firma f, mitarbeiter m where f.id=id_firma; | ||
| + | +----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+ | ||
| + | | id | name | ort | mail | ma | id | name | vorname | tel | mail | id_firma | | ||
| + | +----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+ | ||
| + | | 2 | Holz Gmbh | Bonn | Holz@web.de | 10 | 1 | Schmidt | Erna | 33333 | ES@web.de | ||
| + | | 1 | Bau Gmbh | Bonn | Bau@web.de | ||
| + | | 2 | Holz Gmbh | Bonn | Holz@web.de | 10 | 3 | Klaue | Ines | 344773 | k~io@web.de | 2 | | ||
| + | +----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+ | ||
| + | 3 rows in set (0,00 sec) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Konfigurationsdateien ===== | ||
| + | === Win === | ||
| + | - C:\my.cnf Globale Konfiguration | ||
| + | - C: | ||
| + | === Unix === | ||
| + | - /etc/my.cnf Globale Konfiguration | ||
| + | - / | ||
| + | - ~./my.cnf Benutzerkonfiguration | ||
| + | |||
| + | ===== Netzfreigabe ===== | ||
| + | |||
| + | Der MySQL Server lauscht standardmäßig nur auf der localhost IP (127.0.0.1). | ||
| + | |||
| + | - Datei my.cnf öffnen. | ||
| + | - bind-adresse ändern in 0.0.0.0 | ||
| + | - User Netzwerkzugriff erlauben. | ||
| + | |||
| + | |||
| + | use mysql | ||
| + | update user set host=' | ||
| + | update db set host=' | ||
| + | | ||
| + | ===== Datenbank sichern | ||
| + | < | ||
| + | // sichert die DB " | ||
| + | |||
| + | mysqldump -u web5 -p meineDB | ||
| + | |||
| + | mysqldump -u root -p1234 meineDB > / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabellen sichern | ||
| + | < | ||
| + | // sichert die Tabelle " | ||
| + | |||
| + | mysqldump -u web5 -p meineDB adressen > c: | ||
| + | |||
| + | mysqldump -u root -p1234 meineDB adressen > / | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== mehrere Datenbanken sichern ===== | ||
| + | < | ||
| + | mysqldump -u root -p1234 --databases meineDB test mysql > c: | ||
| + | |||
| + | mysqldump -u root -p1234 --all-databases > / | ||
| + | |||
| + | </ | ||
| + | Komplette Datenbanksysteme können schneller mit **mysqlhotcopy** gesichert werden. | ||
| + | |||
| + | |||
| + | ===== Datenbank wiederherstellen ===== | ||
| + | < | ||
| + | mysql -u web5 -p meineDB < / | ||
| + | </ | ||
| + | Dabei bezeichnet der Parameter -u den User, der Parameter -p bewirkt die Abfrage des Passwortes. Anschliessend wird der Datenbankname angegeben. Der letzte Parameter bezeichnet den Datenfile. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Datenbank prüfen ===== | ||
| + | Mit mysqlcheck kann die Datenbank auf Fehler überprüft werden: | ||
| + | < | ||
| + | mysqlcheck -u root -p -A -e | ||
| + | </ | ||
| + | Die Option -A prüft alle vorhandenen Datenbanken und -e führt eine ausführliche Konsistenzüberprüfung durch. | ||
| + | |||
| + | __Tabellen testen__ | ||
| + | < | ||
| + | mysqlcheck -u root -p -e db_name tabll1 tabell2 | ||
| + | </ | ||
| + | Mehr Informationen zu mysqlcheck mit: | ||
| + | |||
| + | http:// | ||
| + | |||
| + | |||
| + | ===== Daten importieren ===== | ||
| + | __1.Tabele erstellen__ | ||
| + | < | ||
| + | create table adr1 (id int not null auto_increment primary key, | ||
| + | name varchar(50) not null, ort varchar(50), | ||
| + | </ | ||
| + | __2.Textdatei erstellen__ | ||
| + | < | ||
| + | \N Schmidt | ||
| + | \N Klose Stahl \N 2003-3-25 | ||
| + | </ | ||
| + | __importieren__ | ||
| + | < | ||
| + | LOAD DATA LOCAL INFILE '/ | ||
| + | LOAD DATA LOCAL INFILE ' | ||
| + | </ | ||
| + | |||
| + | ===== User mit db anlegen ===== | ||
| + | < | ||
| + | CREATE USER ' | ||
| + | GRANT USAGE ON * . * TO ' | ||
| + | |||
| + | CREATE DATABASE IF NOT EXISTS `paul` ; | ||
| + | |||
| + | GRANT ALL PRIVILEGES ON `paul` . * TO ' | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | #! /bin/bash | ||
| + | clear | ||
| + | echo -n Bitte Username eingeben: | ||
| + | read userdb | ||
| + | #echo $userdb | ||
| + | |||
| + | echo -n Bitte Passwort eingeben: | ||
| + | read passdb | ||
| + | #echo $passdb | ||
| + | echo CREATE USER " | ||
| + | echo GRANT USAGE ON '* . *' TO " | ||
| + | echo CREATE DATABASE IF NOT EXISTS " | ||
| + | echo GRANT ALL PRIVILEGES ON " | ||
| + | mysql < / | ||
| + | </ | ||
| + | |||
| + | ====== Einfache SQL-Befehle ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Anmelden an MySql ===== | ||
| + | __Unix / Linux__ | ||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | __Windows__ | ||
| + | < | ||
| + | c: | ||
| + | </ | ||
| + | __mit Passwort__ | ||
| + | < | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Version / Passwort ===== | ||
| + | __erste Abfragen__ | ||
| + | < | ||
| + | SELECT version() AS version; | ||
| + | SELECT CURRENT_DATE; | ||
| + | SELECT 22+6; | ||
| + | SELECT USER(), VERSION(), CURRENT_DATE; | ||
| + | </ | ||
| + | __Passwort setzen__ | ||
| + | < | ||
| + | SET PASSWORD = PASSWORD(' | ||
| + | </ | ||
| + | __abmelden__ | ||
| + | < | ||
| + | quit; | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Eingabeaufforderung ===== | ||
| + | |||
| + | |mysql> |Bereit für einen neuen Befehl. | | ||
| + | |- > |Erwartet die nächste Zeile einer mehrzeiligen Befehlseingabe. | | ||
| + | |'> |Erwartet die nächste Zeile und die Vervollständigung eines Strings, der mit einem einfachen Anführungszeichen ' begonnen wurde. | | ||
| + | |"> |Erwartet die nächste Zeile und die Vervollständigung eines Strings, der mit einem doppelten Anführungszeichen " begonnen wurde. | | ||
| + | |`> |Erwartet die nächste Zeile und die Vervollständigung eines Bezeichners, | ||
| + | |/*> |Erwartet die nächste Zeile und die Vervollständigung eines Kommentars, der mit /* begonnen wurde. | | ||
| + | |||
| + | ===== DB erstellen und anzeigen ===== | ||
| + | __DB erstellen__ | ||
| + | < | ||
| + | CREATE DATABASE meineDB; | ||
| + | </ | ||
| + | __DB auflisten__ | ||
| + | < | ||
| + | show databases; | ||
| + | </ | ||
| + | __Ausgabe__ | ||
| + | < | ||
| + | +--------------------+ | ||
| + | | Database | ||
| + | +--------------------+ | ||
| + | | information_schema | | ||
| + | | cdcol | | ||
| + | | mysql | | ||
| + | | phpmyadmin | ||
| + | | test | | ||
| + | | meineDB | ||
| + | +--------------------+ | ||
| + | 6 rows in set (0,08 sec) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== DB wählen ===== | ||
| + | < | ||
| + | use meineDB; | ||
| + | </ | ||
| + | __Namen der aktuellen Datenbank__ | ||
| + | < | ||
| + | SELECT DATABASE(); | ||
| + | </ | ||
| + | |||
| + | ===== Tabellen in DB anzeigen ===== | ||
| + | < | ||
| + | show tables; | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | +---------------------------+ | ||
| + | | Tables_in_mysql | ||
| + | +---------------------------+ | ||
| + | | columns_priv | ||
| + | | db | | ||
| + | | func | | ||
| + | | help_category | ||
| + | | help_keyword | ||
| + | | help_relation | ||
| + | | help_topic | ||
| + | | host | | ||
| + | | proc | | ||
| + | | user | | ||
| + | +---------------------------+ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabelle erzeugen 1 ===== | ||
| + | __einfache Tabelle erzeugen__ | ||
| + | < | ||
| + | CREATE TABLE adressen (id INT,name VARCHAR(35), | ||
| + | | ||
| + | </ | ||
| + | __Test ob Tabelle vorhanden__ | ||
| + | < | ||
| + | CREATE TABLE IF NOT EXISTS adr (id INT,name VARCHAR(35), | ||
| + | | ||
| + | </ | ||
| + | __ID automatisch hochzählen__ | ||
| + | < | ||
| + | CREATE TABLE adr (id INT AUTO_INCREMENT PRIMARY KEY, | ||
| + | name VARCHAR(35), | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Tabelle erzeugen 1 ===== | ||
| + | __Eingabe erforderlich__ | ||
| + | < | ||
| + | CREATE TABLE adr (id INT NOT NULL,name VARCHAR(35) NOT NULL, | ||
| + | vorname VARCHAR(35)); | ||
| + | </ | ||
| + | __kompl. Beispiel__ | ||
| + | < | ||
| + | CREATE TABLE IF NOT EXISTS adr ( | ||
| + | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | name VARCHAR( 10 ) NOT NULL , | ||
| + | geburtstag DATE, | ||
| + | geschl VARCHAR( 1 ) NOT NULL DEFAULT ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Struktur anzeigen ===== | ||
| + | < | ||
| + | describe adr; | ||
| + | show columns from mitarbeiter; | ||
| + | </ | ||
| + | __Ausgaben__ | ||
| + | < | ||
| + | +-------+-------------+------+-----+---------+----------------+ | ||
| + | | Field | Type | Null | Key | Default | Extra | | ||
| + | +-------+-------------+------+-----+---------+----------------+ | ||
| + | | id | int(11) | ||
| + | | firma | varchar(50) | NO | ||
| + | | ort | varchar(50) | YES | | NULL | | | ||
| + | +-------+-------------+------+-----+---------+----------------+ | ||
| + | 3 rows in set (0,01 sec) | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Ändern des Tabellenlayouts | ||
| + | __Tabellen umbenennen__ | ||
| + | < | ||
| + | ALTER TABLE adressen RENAME adr; | ||
| + | </ | ||
| + | |||
| + | __Feld hinzufügen__ | ||
| + | < | ||
| + | ALTER TABLE adr ADD mailx VARCHAR(20); | ||
| + | </ | ||
| + | |||
| + | __Feldtyp und Feldname ändern__ | ||
| + | < | ||
| + | ALTER TABLE adr CHANGE mailx maily VARCHAR(50); | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Ändern des Tabellenlayouts ===== | ||
| + | __Feldtyp ändern__ | ||
| + | < | ||
| + | ALTER TABLE adr MODIFY maily varchar(10); | ||
| + | </ | ||
| + | |||
| + | __Feld löschen__ | ||
| + | < | ||
| + | ALTER TABLE adr DROP maily; | ||
| + | </ | ||
| + | |||
| + | __Index und Primärschlüssel setzen__ | ||
| + | < | ||
| + | ALTER TABLE adr ADD INDEX (maily); | ||
| + | ALTER TABLE adr ADD PRIMARY KEY (id); | ||
| + | ALTER TABLE tabelle ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabellen mit Daten füllen ===== | ||
| + | Bsp.1: | ||
| + | < | ||
| + | INSERT INTO adressen | ||
| + | </ | ||
| + | Bsp.2: | ||
| + | < | ||
| + | INSERT INTO adressen( name ) VALUES (' | ||
| + | </ | ||
| + | Bsp.3: | ||
| + | < | ||
| + | INSERT INTO adressen VALUES | ||
| + | (NULL , ' | ||
| + | (NULL , ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Inhalt von Tabellen anzeigen ===== | ||
| + | __alle Daten ausgeben__ | ||
| + | < | ||
| + | select * from adressen; | ||
| + | </ | ||
| + | __Spalte name und ort ausgeben__ | ||
| + | < | ||
| + | select name, ort from adressen; | ||
| + | </ | ||
| + | __die ersten 30 DS ausgeben__ | ||
| + | < | ||
| + | SELECT * FROM adressen LIMIT 0 , 30 ; | ||
| + | </ | ||
| + | |||
| + | ===== Inhalt von Tabellen anzeigen ===== | ||
| + | __alle DS mit name Otto ausgeben__ | ||
| + | < | ||
| + | SELECT * FROM ' | ||
| + | </ | ||
| + | __sortierte Ausgabe (aufsteigend)__ | ||
| + | < | ||
| + | select * from adressen ORDER BY name; | ||
| + | </ | ||
| + | __sortierte Ausgabe (absteigend)__ | ||
| + | < | ||
| + | select * from adressen ORDER BY name DESC; | ||
| + | </ | ||
| + | __sortierte Ausgabe (Zufall)__ | ||
| + | < | ||
| + | select * from adressen ORDER BY rand(); | ||
| + | </ | ||
| + | |||
| + | ===== DB und Tabelle löschen | ||
| + | __Tabelle löschen__ | ||
| + | < | ||
| + | DROP TABLE adressen; | ||
| + | </ | ||
| + | __DB löschen__ | ||
| + | < | ||
| + | DROP DATABASE meineDB; | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== weitere SQL Befehle ====== | ||
| + | |||
| + | |||
| + | |||
| + | ===== Tabelleninhalte verändern ===== | ||
| + | |||
| + | ändert alle Datensätze | ||
| + | |||
| + | UPDATE adressen SET name=' | ||
| + | UPDATE adressen SET name=' | ||
| + | |||
| + | ändert nur Datensätze wo die id=5 ist | ||
| + | |||
| + | UPDATE adressen SET name=' | ||
| + | |||
| + | berechnet den Wert | ||
| + | |||
| + | UPDATE artikel SET preis=preis*1.1; | ||
| + | |||
| + | UPDATE ARTIKEL As A INNER JOIN UMSATZ AS U | ||
| + | On A.A_NR = U.A_NR | ||
| + | SET U.Gesamt = A.A_PREIS * U.A_STUECK | ||
| + | |||
| + | ===== Datensätze löschen ===== | ||
| + | < | ||
| + | delete from artikel where id=4; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Wiederholungen (distinct) ===== | ||
| + | |||
| + | Alle Dopplungen von vorname werden ausgelassen. | ||
| + | < | ||
| + | select | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Arithmetische Operatoren ===== | ||
| + | < | ||
| + | SELECT * FROM adressen WHERE age< | ||
| + | |||
| + | SELECT * FROM adressen WHERE age%10=0; | ||
| + | |||
| + | SELECT * FROM adressen WHERE age%10!=0; | ||
| + | |||
| + | SELECT name, age*365 FROM adressen; | ||
| + | </ | ||
| + | erlaubte Operatoren: +, -, *, /, % | ||
| + | |||
| + | logische Operatoren: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== eigene Spaltenüberschriften ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | SELECT name, age AS Alter FROM adressen; | ||
| + | |||
| + | SELECT name, age*365 AS Tage FROM adressen; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Operator LIKE ===== | ||
| + | |||
| + | < | ||
| + | SELECT * FROM adressen WHERE name LIKE ' | ||
| + | |||
| + | SELECT * FROM adressen WHERE strasse LIKE ' | ||
| + | |||
| + | SELECT * FROM adressen WHERE name LIKE ' | ||
| + | </ | ||
| + | |||
| + | **%** = steht für ein oder mehrere Zeichen | ||
| + | |||
| + | **_** = steht für ein Zeichen | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Zeichenverkettung | ||
| + | |||
| + | Zwei Strings lassen sich mit der Function concat() verbinden. | ||
| + | < | ||
| + | SELECT concat(name , '* ' , vorname) | ||
| + | SELECT concat(name , '* ' , vorname) AS Bezeichnung | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Operatoren: IN und BETWEEN ===== | ||
| + | __Operator IN__ | ||
| + | < | ||
| + | SELECT * FROM adressen WHERE name=' | ||
| + | name=' | ||
| + | oder | ||
| + | SELECT * FROM adressen | ||
| + | IN(' | ||
| + | </ | ||
| + | |||
| + | __Operator BETWEEN__ | ||
| + | < | ||
| + | SELECT * FROM adressen WHERE age>17 AND age<66; | ||
| + | oder | ||
| + | SELECT * FROM adressen | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Aggregatfunktionen 1 ===== | ||
| + | __COUNT liefert die Anzahl der Zeilen__ | ||
| + | < | ||
| + | SELECT count(*) FROM adressen WHERE age> | ||
| + | AND age<66; | ||
| + | |||
| + | // eigene Überschrift | ||
| + | SELECT count(*) as Arbeitsfaehig FROM adressen | ||
| + | WHERE age>17 AND age<66; | ||
| + | </ | ||
| + | |||
| + | __SUM liefert die Summe aller Werte__ | ||
| + | < | ||
| + | SELECT SUM(age) FROM adressen; | ||
| + | |||
| + | // eigene Überschrift | ||
| + | SELECT SUM(age) as Alter_gesamt FROM adressen; | ||
| + | </ | ||
| + | |||
| + | ===== Aggregatfunktionen 2 ===== | ||
| + | __AVG berechnet den Mittelwert einer Spalte__ | ||
| + | < | ||
| + | SELECT AVG(alter) FROM adressen; | ||
| + | </ | ||
| + | |||
| + | __MAX liefert den größten Wert__ | ||
| + | < | ||
| + | SELECT MAX(alter) FROM adressen; | ||
| + | </ | ||
| + | |||
| + | __MIN liefert den kleinsten Wert__ | ||
| + | < | ||
| + | SELECT MIN(alter) FROM adressen; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabelle mitarbeiter ===== | ||
| + | < | ||
| + | +----+---------+---------+--------+-------------+----------+-------+ | ||
| + | | id | name | vorname | tel | mail | id_firma | id_KK | | ||
| + | +----+---------+---------+--------+-------------+----------+-------+ | ||
| + | | 1 | Schmidt | Erna | 33333 | ES@web.de | ||
| + | | 2 | Klose | Otto | 3773 | ko@web.de | ||
| + | | 3 | Klaue | Ines | 344773 | k~io@web.de | 2 | 2 | | ||
| + | +----+---------+---------+--------+-------------+----------+-------+ | ||
| + | </ | ||
| + | |||
| + | ===== INNER JOIN ===== | ||
| + | Der INNER JOIN führt Datensätze aus der linken und rechten Tabelle genau dann zusammen, wenn die angegebenen Kriterien alle erfüllt sind. Ist eines oder mehrere der Kriterien nicht erfüllt, so entsteht kein Datensatz in der Ergebnismenge. | ||
| + | |||
| + | |||
| + | **Explizite Schreibweise: | ||
| + | select * from kunden k inner join mitarbeiter m on k.id=m.id_firma | ||
| + | |||
| + | ===== LEFT JOIN ===== | ||
| + | **LEFT JOIN: | ||
| + | Ein Datensatz aus der linken Tabelle kommt in jedem Fall in das Ergebnis. Wenn ein Datensatz der rechten Tabelle dem ON-Kriterium entspricht, so wird er entsprechend in den Spalten eingetragen, | ||
| + | select * from kunden k left join mitarbeiter m on k.id=m.id_firmen | ||
| + | < | ||
| + | +----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+ | ||
| + | | id | name | ort | plz | strasse | id | name | vorname | funk | mail | firmenid | | ||
| + | +----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+ | ||
| + | | 1 | Holz GmbH | Bonn | 88888 | Weg 44 | NULL | NULL | NULL | NULL | NULL | NULL | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 2 | Klose | Erna | 0173 888 | erna@web.de | 2 | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 3 | Schmidt | Karl | 0173 888 | karl@web.de | 2 | | ||
| + | | 3 | Stahl GmbH | Bern | 7777 | Weg 66 | 4 | Maier | Ina | 0177 888 | Ina@web.de | ||
| + | | 4 | Abwasser GmbH | Berlin | 44444 | Weg 44 | NULL | NULL | NULL | NULL | NULL | NULL | | ||
| + | +----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+ | ||
| + | </ | ||
| + | ===== RIGHT JOIN ===== | ||
| + | Der RIGHT JOIN arbeitet genau entgegengesetzt dem LEFT JOIN. | ||
| + | select * from kunden k RIGHT JOIN mitarbeiter m on k.id=m.id_firmen; | ||
| + | < | ||
| + | +------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+ | ||
| + | | id | name | ort | plz | strasse | id | name | vorname | funk | mail | firmenid | | ||
| + | +------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+ | ||
| + | | NULL | NULL | NULL | NULL | NULL | 1 | Klose | Paul | 0173 999 | paul@web.de | NULL | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 2 | Klose | Erna | 0173 888 | erna@web.de | 2 | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 3 | Schmidt | Karl | 0173 888 | karl@web.de | 2 | | ||
| + | | 3 | Stahl GmbH | Bern | 7777 | Weg 66 | 4 | Maier | Ina | 0177 888 | Ina@web.de | ||
| + | +------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+ | ||
| + | </ | ||
| + | |||
| + | ===== FULL OUTER JOIN ===== | ||
| + | Die Logik für diesen Join: Jeder Datensatz der rechten und der linken Tabelle kommt in die Ergebnismenge. | ||
| + | |||
| + | Er ist gewissermaßen die Kombination aus LEFT und RIGHT-JOIN. | ||
| + | |||
| + | ===== MYSQL Befehle Anwendungen ===== | ||
| + | < | ||
| + | select artikelnr, | ||
| + | |||
| + | select artikelnr, | ||
| + | |||
| + | select Artikelnr, | ||
| + | |||
| + | select name, | ||
| + | |||
| + | select distinct(leistungkd.svnr), | ||
| + | |||
| + | select svnr, def, preis, ust from leistungkd left join leistung on leistung.svnr=leistungkd.svnr; | ||
| + | |||
| + | select def, preis, ust from leistungkd left join leistung on leistung.idl=leistungkd.idl where svnr=555444; | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== SQL User und Name anlegen skript ==== | ||
| + | < | ||
| + | #! /bin/bash | ||
| + | clear | ||
| + | echo -n Bitte Username eingeben: | ||
| + | read userdb | ||
| + | #echo $userdb | ||
| + | |||
| + | echo -n Bitte Passwort eingeben: | ||
| + | read passdb | ||
| + | #echo $passdb | ||
| + | echo CREATE USER " | ||
| + | echo GRANT USAGE ON ' | ||
| + | echo CREATE DATABASE IF NOT EXISTS " | ||
| + | echo GRANT ALL PRIVILEGES ON " | ||
| + | mysql < / | ||
| + | </ | ||
| ====== Java ====== | ====== Java ====== | ||