Grundlegende SQL Befehle: Unterschied zwischen den Versionen
Whois (Diskussion | Beiträge) |
K (Kategorie hinzugefügt) |
||
Zeile 226: | Zeile 226: | ||
Die ist von verschiedenen Usern erstellt worden. Welche kann in diesem Link ersehen werden. http://www.linux-club.de/ftopic49585.html | Die ist von verschiedenen Usern erstellt worden. Welche kann in diesem Link ersehen werden. http://www.linux-club.de/ftopic49585.html | ||
+ | |||
+ | [[Category:Datenbanken]] |
Version vom 31. August 2006, 15:57 Uhr
Eine Datenbank erstellen:
CREATE DATABASE datenbank_name;
CREATE DATABASE Meine_Firma;
Erstellt die Datenbank "Meine_Firma". Achtung einige Datenbanken unterscheiden Groß- und Kleinschreibung.
Eine bestimmte Datenbank nutzen:
USE datenbank_name;
USE Meine_Firma;
Benutzen der Datenbank "Meine_Firma".
Vorhandene Tabellen ansehen:
SHOW TABLES;
Zeigt die vorhandenen Tabellen in "Meine_Firma", da diese ja grade benutzt wird.
Eine Tabelle erstellen:
CREATE TABLE tabellen_name (spalten_name datentyp modifizierer);
CREATE TABLE Personal (Nachname CHAR(50) Vorname CHAR(50) Rang VARCHAR(30) Gehalt INT);
Erstellt die Tabelle "Personal" mit den Spalten "Nachname", "Vorname", "Rang" und "Gehalt" mit den jeweils angegebenen Datentypen.
Werte in eine Tabelle eintragen:
INSERT INTO tabellen_name VALUES (wert1, wert2, ...);
INSERT INTO Personal VALUES (Schulze, Egon, Pfoertner, 3000);
Fügt den Datensatz des Pfoertners Egon Schulz mit einem Gehalt von 3000 Euro/Peseten/Murmeln zur Tabelle Personal hinzu.
Daten ändern:
UPDATE tabellen_name SET spalte1=wert1, spalte2=wert2, ... (WHERE bedingung);
UPDATE Personal SET Gehalt=3200 WHERE Nachname = "Schulz";
Ändert das Gehalt aller mit Nachname "Schulz" auf 3200
Daten wieder löschen:
DELETE FROM tabellen_name (WHERE bedingung);
DELETE FROM Personal WHERE Nachname = "Schulz" AND Vorname = "Egon";
Löscht alle Datensätze bei denen der Nachname "Schulz" und der Vorname "Egon" ist
Eine Tabelle löschen:
DROP TABLE tabellen_name;
DROP TABLE Personal;
Löscht die Tabelle "Personal" aus der grade verwendeten Datenbank
Eine Datenbank löschen:
DROP DATABASE datenbank_name;
DROP DATABASE Meine_Firma;
Löscht die Datenbank "Meine_Firma"
Tabellen verändern
Spalten hinzufügen
ALTER TABLE tabellen_name ADD spalten_name;
ALTER TABLE Personal ADD Geschlecht CHAR (1);
Fügt der Tabelle "Personal" die Spalte "Geschlecht" hinzu
Spalten löschen
ALTER TABLE tabellen_name DROP spalten_name;
ALTER TABLE Personal DROP Geschlecht;
Löscht die Spalte "Geschlecht" aus der Tabelle "Personal"
Datentyp einer Spalte ändern
ALTER TABLE tabellen_name MODIFY spalten_name datentyp;
ALTER TABLE Personal MODIFY Rang VARCHAR(40);
Ändert den Datentyp der Spalte "Rang" in den angegebenen, also "VARCHAR(40)"
Bezeichnung einer Spalte ändern
ALTER TABLE tabellen_name CHANGE spalten_name_alt spalten_name_neu;
ALTER TABLE Personal CHANGE Rang Beruf VARCHAR(30);
Ändert den "Rang" in den "Beruf" mit dem Datentyp VARCHAR(30).
Namen einer Tabelle ändern
ALTER TABLE tabellen_name_alt RENAME tabellen_name_neu;
ALTER TABLE Personal RENAME Mitarbeiter;
Ändert den Namen der Tabelle "Personal" zu "Mitarbeiter". ACHTUNG: Die Beziehungen werden NICHT automatisch mitgeändert!!!
Daten einer Datenbank abfragen
Allgemeine Form:
SELECT spalte1, spalte2, ... FROM tabellen_name WHERE bedingung;
Sortieren:
SELECT spalte1, spalte2, ... FROM tabellen_name ORDER BY spalten_name;
SELECT Nachname, Vorname FROM Personal ORDER BY Nachname;
Zeigt die Inhalte der Spalten "Nachname" und "Vorname" sortiert nach "Nachnamen" in aufsteigender Reihenfolge.
Abnehmend sortieren:
SELECT spalte1, spalte2, ... FROM tabellen_name ORDER BY spalten_name DESC;
SELECT Nachname, Vorname FROM Personal ORDER BY Nachname DESC;
Zeigt die Inhalte der Spalten "Nachname" und "Vorname" sortiert nach "Nachname" in absteigender Reihenfolge
Datensätze gruppieren:
SELECT spalten_name FROM tabellen_name GROUP BY spalten_name;
SELECT Rang FROM Personal GROUP BY Rang;
Zeigt zusammengefaßt alle Ränge an
Den höchste Wert einer Spalte ermitteln:
SELECT MAX(spalten_name) AS spalten_name FROM tabellen_name;
SELECT MAX(Gehalt) AS Gehalt FROM Personal;
Zeigt das höchste Gehalt an
Durchschnitt einer Gruppe ermitteln:
SELECT spalten_name, AVG(spalten_name) FROM tabellen_name GROUP BY spalten_name;
SELECT Rang, AVG(Gehalt) FROM Personal GROUP BY Rang;
Zeigt die durchschnittlichen Gehälter der einzelnen Ränge an.
Einschränken eines gruppierten Datensatzes:
SELECT spalten_name, AVG(spalten_name) FROM tabellen_name GROUP BY spalten_name HAVING AVG(spalten_name) bedingung;
SELECT Rang, AVG(Gehalt) FROM Personal GROUP BY Rang HAVING AVG(Gehalt) > 4000;
Zeigt Rang und durchschnittliches Gehalt an. Die Datensätze sind nach Rang gruppiert und müßen einen Durchschnitt von 4000 übersteigen.
Verknüpfte Abfragen über zwei Tabellen:
SELECT * FROM tabelle1 INNER JOIN tabelle2 ON tabelle1.name=tabelle2.name;
Es werden alle Paare (zeile1,zeile2) von Zeilen gebildet, wobei zeile1 aus "tabelle1" und zeile2 aus "tabelle2" stammt. Stimmt der Eintrag von zeile1 in der Spalte "name" mit dem Eintrag von zeile2 in der Spalte "name" überein, so wird das ganze Paar als Zeile in eine neue Tabelle übernommen. Die so entstandene Tabelle wird ausgegeben.
Ersetzt man in dieser Abfrage "INNER" durch "LEFT", so werden darüber hinaus alle Zeilen aus "tabelle1" angezeigt, zu denen kein passender Eintrag in "tabelle2" existiert. Ganz analog kann man "INNER" durch "RIGHT" ersetzen, und durch "OUTER" erhält man aus beiden ursprünglichen Tabellen die Zeilen, die keinen Partner haben.
IN der Datensätze einer Tabelle ermitteln:
SELECT COUNT(*) FROM table;
Zeigt die Anzahl der in der Tabelle "table" enthaltenen Datensätze an.
Die Daten nach einem Suchtext durchsuchen:
SELECT * FROM table WHERE field LIKE '%text%';
Sucht in den Spalten der Datensätze nach dem Suchwort "text". Dabei werden Datensätze gefunden, die in der Spalte "field" zum Beispiel die Worte "Suchtext" oder "textlastig" enthalten.
Daten aus einer ASCII-Textdatei importieren:
LOAD DATA LOCAL INFILE '/home/Benutzer/datei.txt' INTO TABLE mytable;
Ein gültiges Format für diese ASCII-Textdatei ist:
- Eine Zeile pro Datensatz. - Spalten sind durch Tabulatoren ("\t") getrennt. - Leere Spalten werden mit "\N" (also Backslash, dann N) gekennzeichnet. - Daten werden nicht in Anführungszeichen eingefaßt. - Datumsangaben haben das Format JJJJ-MM-TT, also z.B. 2006-12-24. - Beträge mit Nachkommastellen wie etwa Geldbeträge werden z.B. als 1234.56 angegeben. - Bool-Werte (True, False) können als "1" und "0" dargestellt werden.
Der Datenimport auf diese Weise stellt ein gewisses Sicherheitsrisiko dar und ist daher nicht standardmäßig in MySQL aktiviert. Bei der MySQL-Version von SuSE 10.0 kann er aber aktiviert werden, indem mysql mit der Option "mysql --local-infile=1" gestartet wird.
Näheres: http://dev.mysql.com/doc/refman/5.0/en/load-data.html http://www.linux-club.de/ftopic21787-0-asc-0.html Befehl "mysqlimport".
Die ist von verschiedenen Usern erstellt worden. Welche kann in diesem Link ersehen werden. http://www.linux-club.de/ftopic49585.html