Grundlegende SQL Befehle

Aus Linupedia.org
Version vom 12. März 2007, 01:25 Uhr von TomcatMJ (Diskussion | Beiträge) (Navigationslinks hinzugefügt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Autor: Geier0815

Dieses Dokument soll kein Buch über MySQL ersetzen, sondern lediglich dem erfahrenen Anwender noch mal die grundlegenden Befehle in Kurzform vor Augen halten.

Ich gehe davon aus das jeder weiß wie er sich mit der Datenbank in Verbindung setzt.


Allgemeine Anweisungen an eine Datenbank

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


Zurück zur Datenbankenübersicht Zurück zu "Serienbriefe mit LaTeX erstellen"