|
Home - Programmieren - Datenbanken - SQL
Hinweis: Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich. Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren. [Druckansicht] [Als E-Mail senden] [Kommentar verfassen] Was ist mySQL Das Datenbanksystem mySQL basiert auf der Datenbankabfrage Sprache SQL (Structured Query Language). SQL Datenbanken werden relational gespeichert und nicht etwa hierarchisch wie z.B. in der Windows Registry. Mit SQL kann man Datenbanken und Tabellen erstellen, löschen, Daten in die Datenbank einfügen, verändern und natürlich auch abfragen. In mySQL wird jeder Befehl mit einem Semikolon abgeschlossen. Auf die Gross-/Kleinschreibung muss nicht geachtet werden. Man kann die Befehle auf beliebig viele Zeilen verteilen. Das fördert die Übersicht. Alle mySQL Schlüsselworte werden GROSS geschrieben, Abfrageteile, welche durch spezifische Daten ersetzt werden sind normal geschrieben. Optionale Argumente sind in Eckklammern zu finden. Sobald ein spezifischer Name Leerstellen enthält, muss er in ‚’ oder in „“ aufgeführt werden! Datenbank erstellen Neue Datenbank erstellen Eine neue Datenbank wird mit dem Befehl „create database“ erstellt. Die Syntax des Befehls:
Wie alle SQL Befehle erwartet der Befehl „create database“ Argumente. In diesem Fall ist es nur ein Pflichtargument. Alle Argumente im Überblick (optionale Argumente immer in []):
Datenbank benutzen Um eine Datenbank zu benutzen, verwendet man den „use“ Befehl. Um mit einer Datenbank arbeiten zu können, muss sie zuerst benutzt werden!
Wenn man den Namen der Datenbank nicht kennt, sollte man zuerst alle Datenbanken anzeigen lassen, was der „show databases“ Befehl übernimmt. Hier gibt es keine Argumente.
Datenbank löschenWenn man eine Datenbank nicht mehr braucht, kann man sie mit dem „drop database“ Befehl löschen.
Tabellen erstellen & verwalten Allgemeines Die Datenbank dient nur als Container für Tabellen. Sämtliche Daten werden in Tabellen gespeichert. Der Tabellenname muss in jeder Datenbank eindeutig sein, am besten man verwendet einen logischen Namen. Eine SQL Tabelle besteht aus Spalten und Zeilen Jede Spalte hat einen Datentyp, der beschreibt, welche Daten (Text, Zahlen...) eingefügt werden können. Zusätzlich hat jede Spalte noch Attribute (Index, id...). Jede Zeile enthält einen Datensatz. Tabelle erstellen Eine Tabelle wird mit dem Befehl „create table“ erstellt. Vorher muss jeweils eine Datenbank benutzt werden.
Für „Spalte“ kann man einen beliebigen (logischen) Namen eingeben.Ein Beispiel:
Eine Übersicht über die Datentypen ist im Anhang A.Mögliche Attribute:
Datentypen verändern Falls ein gewisser Datentyp zu klein ist bzw. falsch ausgewählt wurde, kann man das mit einem CAST wieder ausbügeln.
Folgende Datentypen können umgewandelt werden:
EingabeprüfungUm festzulegen, welche Daten der Benutzer in die Tabelle eingeben kann, verwendet man Eingabeprüfungen. Diese werden beim Erstellen einer Tabelle mit dem Schlüsselwort CONSTRAINT definiert.
Eine Übersicht über alle möglichen Vergleichsoperatoren im Anhang B.Tabellen anzeigen Tabellen aus einer Datenbank können mit dem „show tables“ Befehl angezeigt werden.
Mit dem Befehl 1 kann man beliebige Tabellen aus einer beliebigen Datenbank anzeigen lassen. Befehl 2 zeigt einfach alle Tabellen aus der geöffneten Datenbank. Als „muster“ kann man einen String eingeben, welcher dem gesuchten Tabellennamen entsprechen sollte.Tabellenstrukturen verändern Die Tabellenstruktur kann jederzeit mit dem „alter“ Befehl verändert werden. Auf diese Weise kann man nachträglich Spalten hinzufügen oder entfernen, Gültikeitsprüfungen einfügen oder Attribute und Datentypen von bestehenden Spalten ändern.
Nach dem ADD Befehl verläuft die Definition gleich wie oben beschrieben.Tabellen löschen Das Löschen einer Tabelle funktioniert gleich wie das Löschen einer Datenbank. Man muss einzig die Datenbank, in welcher die Tabelle sich befindet mit dem „use“ Befehl geöffnet haben.
Daten einfügen, bearbeiten und löschenDaten einfügen Daten werden mit dem Befehl „insert into“ in Tabellen gespeichert. Man kann ganze Datensätze oder nur einzelne Felder dabei ausfüllen.
Man muss darauf achten, dass die aufgeführten Spalten immer mit den Datentypen der Werte übereinstimmen. Die Anzahl muss natürlich auch übereinstimmen. Reihenfolge beachten!Man kann nicht nur manuelle Werte eingeben, man kann auch Ergebnisse von Abfragen in eine neue Tabelle einfügen lassen. Das erreicht man, wenn man einen „insert“ Befehl mit einem „select“ Befehl verknüpft. Diese „select“ Abfragen werden weiter unten noch erläutert. Datenbestände aktualisieren Um Mutationen an Daten vornehmen zu können, kann man den Befehl „update“ verwenden.
Nach dem „update“ Befehl wird der Tabellenname aufgeführt. Danach kommt der „set“ Teil. Man weist dort jeder Spalte einen Wert zu. Der „update“ Befehl macht ohne eine „where“ Abfrage wenig Sinn. Diese Abfrage dient dazu, dass man Daten gezielt aktualisieren kann. Da dieser Befehl etwas komplexer ist, ein kleines Beispiel:
Hier die Tabelle t_personen aktualisiert. Die Spalte alter bekommt den Wert „65 Jahre“ als String. Die Aktualisierung findet nur dort statt, wo die id 1632 beträgt.Datenbestände löschen Falls Datensätze ganz weg müssen, verwendet man den „delete“ Befehl.
Auch hier ist die Bedingung sehr wichtig, da man Daten meistens gezielt löschen möchte.Abfragen Die Select Anweisung Alle Abfragen in SQL werden mit der „Select“ Anweisung gemacht. Diese Anweisung ist die komplexeste und wird am häufigsten angewendet. Es sind nicht nur Abfragen über eine Tabelle oder Teile einer Tabelle möglich, mit der Select Anweisung lassen sich beliebige Datenfelder abfragen. Man kann sehr genau bestimmen, welche Daten man sehen will und welche nicht. Die einfachste Abfrage wird wohl so aussehen:
Der Stern bedeutet soviel wie „alles“. Mit dieser Abfrage bekommt man die ganze Tabelle auf einmal zu sehen. Diese Abfrage macht in der Praxis aber meistens so gut wie keinen Sinn, da Tabellen Tausende von Datensätzen enthalten können.Um nur einzelne Spalten mit den zugehörigen Daten anzusehen, kann man statt des Sterns für „alles“ auch Spaltennamen eingeben.
Alle Spalten müssen durch ein Komma getrennt werden.Die „select“ Anweisung kann aber noch viel mehr. Die gesamte Syntax sieht so aus:
Hier wird eine Pseudo Spalte ausgegeben, welche als wert benannt ist und den Wert von anzahl*stueckpreis berechnet. Berechnungen in mySQL funktionieren nur mit integer und float Zahlen! Man kann nur die Grundoperationen (+, -, *, /) verwenden.Bedingungen in der SELECT Abfrage Das wichtigste an SQL Abfragen sind, dass genau die Daten herauskommen, die man braucht. Tabellen haben in der Praxis oft Tausende von Einträgen. Mit solchen Datenmengen kann man jedoch schlecht arbeiten. Um nur die Daten zu bekommen, die man verwenden will, muss man Bedingungen für SELECT Abfragen definieren. In mySQL werden alle Bedingungen mit dem Schlüsselwort WHERE an eine Abfrage angehängt. Neben Vergleichen (siehe Anhang B, Vergleichsoperatoren) kann man auch Vergleichsfunktionen verwenden. Eine kleine Übersicht:
Mustervergleich Oft sucht man in einer Datenbank nach bestimmten Strings, welche nicht immer 100%-ig bekannt sind. Sobald man Teile des Strings kennt, ist ein Mustervergleich praktisch. Hier gibt es bestimmte Platzhalter für Zeichen. Der Platzhalter _ steht für ein beliebiges Zeichen. Flexibler ist der Platzhalter %, der für eine beliebige Menge an Zeichen steht (auch 0 Zeichen). Logische Operatoren Wenn man mehrere WHERE Kriterien angeben will, müssen diese durch einen logischen Operator verbunden werden. Hier gibt es drei Möglichkeiten
Man kann beliebig viele Kriterien angeben. Man muss einfach wissen, dass der AND Operator stärker bindet als der OR Operator. Natürlich kann man auch Klammern verwenden, wenn man die Operatorreihenfolge verändern will.Abfrageergebnisse gruppieren Ergebnisse zu gruppieren lohnt sich vor allem für statistische Zwecke. Man kann so z.B. erfahren, wieviele Angestellte in welcher Stadt wohnen. Oft benutzt man dazu ein COUNT() Feld, welches die Anzahl der Einträge ausgibt.
Sortierte AbfragenBei allen bisherigen Abfragen wurden die Datensätze in keiner speziellen Reihenfolge sortiert. Damit man das tun kann, ist die ORDER BY Funktion hilfreich.
Schlüsselfelder und IndizesSchlüssel Ein Schlüssel identifiziert einen Datensatz in einer Tabelle. Es gibt drei Arten von Schlüsseln; Primärschlüssel, Sekundärschlüssel und Fremdschlüssel. Ein Primärschlüssel identifiziert einen Datensatz in einer Tabelle eindeutig. Hier wird meistens der Datentyp Integer als auto_increment verwendet. Sie werden mit dem Attribut „PRIMARY KEY“ einer Spalte definiert. Um einen Primärschlüssel nachträglich in eine Tabelle einzufügen/zu löschen, kann man so vorgehen:
Sekundärschlüssel dürfen pro Tabelle nur einmal vorkommen. Sie verhindern Mehrfachspeicherung von gleichen Daten.
Mit dem Attribut „UNIQUE“ wird ein Sekundärschlüssel definiert. Um einen Sekundärschlüssel nachträglich hinzuzufügen/zu entfernen geht man so vor:
Fremdschlüssel werden bei Tabellen angewendet, welche die Primärschlüssel von zwei anderen Tabellen in sich Vereinen und somit die beiden Tabellen verbinden.
Das Erstellen von solchen Schlüsseln ist etwas komplizierter als bei den Primär/Sekundärschlüsseln. Zur Verdeutlichung ein Beispiel:
So lässt sich auch auf die Syntax schliessen:
Hier wird eine Tabelle erstellt, welche zwei Tabellen miteinander verbindet. Es geht um eine n:m Verbindung!Die ON UPDATE|DELETE Zeile ist sehr interessant. Hier geht es darum, die referenzielle Integrität zu wahren. Angenommen, es sind in einer Spalte Einträge von 1-4: Der Benutzer fügt nun in der anderen Tabelle einen Datensatz mit dem Wert 5 ein. Der Wert 5 existiert in der Verbindungstabelle aber noch nicht. Hier wird nun eine Fehlermeldung ausgegeben! Statt dieser Fehlermeldung kann man auch ON UPDATE|DELETE Aktionen bestimmen. Hier eine Übersicht:
Indizes Schlüssel werden jeweils zugleich als Index abgespeichert. Indizes beschleunigen die Suche bei grossen Datenmengen enorm. Sie brauchen jedoch auch etwas Platz, deshalb nimmt man meistens nur etwa den Nachnamen einer Person oder die Bezeichnung eines Produkts auf den Index (Werte, an die man sich erinnern kann). Indizes erstellt man bei der Definition einer neuen Tabelle. So sieht die Syntax aus:
Mit dem Befehl „SHOW INDEX;“ kann man den Index der aktiven Datenbank anschauen.Abfragen über mehrere Tabellen Grundlagen Die meisten Datenbanken bestehen nicht aus einer, sondern einer Vielzahl von Tabellen. Die Daten werden so verteilt, dass möglich keine Redundanzen und keine Anomalien entstehen. Damit man aber dennoch alle Daten logisch angeordnet betrachten und verwenden kann, muss man eine Abfrage über mehrere Tabellen machen. Diese Abfragen sind meistens aus der Mengenlehre abgeleitet.
Joins Die verschiedenen Joins sind relativ schwer zu erklären, darum ein Beispiel. Sämtliche Joins werden mit folgenden beiden Tabellen durchgeführt:
Felder von verschiedenen Tabellen auswählen Um Spalten von verschiedenen Tabellen anzeigen zu können, muss man den Tabellennamen mit einem Punkt von der Spalte trennen!
Beim Cross Join werden alle Datensätze von zwei Tabellen angezeigt.
Die Datensätze werden nicht logisch verknüpft, es werden alle Kombinationen angegeben.Der Theta-Join Dieser Join funktioniert eigentlich gleich, wie der Cross-Join, nur dass hier eine Bedingung ausgegeben wird.
Auch dieser Join macht wenig praktischen Sinn.Der Equi-Join/Inner-Join Hier handelt es sich um den meistverwendeten Join in mySQL. Er wird fast gleich formuliert wie der Theta Join, nur werden hier die jeweiligen Primärschlüssel der Tabellen auf ihre Gleichheit überprüft.
Man bekommt exakt die Menge, in der es Übereinstimmungen beider Tabellen gibt.Natural-Join Wo der Equi-Join doppelte Datensätze ausgibt, werden diese beim Natural-Join ignoriert. Auch dieser Join wird häufig verwendet. Er unterscheidet sich nur durch das Schlüsselwort „DISTINCT“ vom Equi-Join.
Outer-JoinWenn man alle Datensätze mit den zugehörigen Datensätzen einer anderen Tabelle sehen will, nimmt man den Equi-Join. Wenn man aber alle Datensätze ansehen will, wird der Outer-Join verwendet. Alle Datensätze, die keine Zugehörigkeit zu einem anderen haben, bekommen NULL Werte in die leeren Spalten. Hier gibt es zwei Arten: Den left-Outer-Join und den right-Outer-Join. Der Unterschied ist, dass beim left-Outer-Join alle Datensätze der linken Tabelle und beim right-Outer-Join alle Datensätze der rechten Tabelle angezeigt werden!
Der Self-JoinMan kann auch eine Tabelle mit sich selbst verknüpfen. Hier muss man jedoch für beide Tabellen einen Aliasnamen angeben.
Zugriffsrechte und BenutzerGrundlagen In einer mySQL Datenbank hat jeweils derjenige alle Rechte über ein Datenbankobjekt, welcher das Objekt erstellt hat. Die anderen Benutzer haben dann keine Rechte über dieses Objekt. Der Datenbankadministrator hat alle Rechte auf alle Objekte! Dieser heisst in mySQL standardmässig „root“ und hat kein Passwort. Benutzer anlegen In mySQL werden alle Benutzer in die Tabelle „user“ gespeichert. Das Erfassen neuer User erfolgt also gleich wie das eintragen in eine herkömmliche Tabelle. Folgende Felder müssen ausgefüllt werden:
Mögliche Werte für den Host:
Zugriffsrechte vergeben Ein neu erstellter User hat zuerst keine Rechte. Diese kann man ihm mit der Anweisung „Grant“ zusprechen.
Man kann dem Benutzer auch nur das Recht über bestimmte Spalten gewähren.
Zugriffsrechte vererbenJeder Benutzer kann seine Rechte an einen beliebigen anderen User weitergeben.
Zugriffsrechte entziehenUm Benutzerrechte zu entziehen, verwendet man die „REVOKE“ Anweisung.
Anhang ADatentypen
Anhang B Bedingungsoperatoren
Anhang C Bedingungsoperatoren
Mathematische Funktionen
Zeichenkettenfunktionen
|
Autoren:04150
Artikel:00819 Glossar:04124 News:13569 Userbeiträge:16268 Queueeinträge:05150
Projektsteuerung statt Anwesenheitskontrolle
MONDroid - your monitoring Solution for Android with PRTG-Support Red-Hosting jetzt mit erweitertem Shop-Webhosting-Angebot [Mehr News]
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
|