Grundlegende SQL Befehle: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K (Kategorie hinzugefügt)
K (Navigationslinks hinzugefügt)
 
(4 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Eine Datenbank erstellen:
+
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 datenbank_name;
Zeile 8: Zeile 19:
  
  
Eine bestimmte Datenbank nutzen:
+
=== Eine bestimmte Datenbank nutzen ===
  
 
USE datenbank_name;
 
USE datenbank_name;
Zeile 17: Zeile 28:
  
  
Vorhandene Tabellen ansehen:
+
=== Vorhandene Tabellen ansehen ===
  
 
SHOW TABLES;
 
SHOW TABLES;
Zeile 24: Zeile 35:
  
  
Eine Tabelle erstellen:
+
=== Eine Tabelle erstellen ===
  
 
CREATE TABLE tabellen_name (spalten_name datentyp modifizierer);
 
CREATE TABLE tabellen_name (spalten_name datentyp modifizierer);
Zeile 33: Zeile 44:
  
  
Werte in eine Tabelle eintragen:
+
=== Werte in eine Tabelle eintragen ===
  
 
INSERT INTO tabellen_name VALUES (wert1, wert2, ...);
 
INSERT INTO tabellen_name VALUES (wert1, wert2, ...);
Zeile 42: Zeile 53:
  
  
Daten ändern:
+
=== Daten ändern ===
  
 
UPDATE tabellen_name SET spalte1=wert1, spalte2=wert2, ... (WHERE bedingung);
 
UPDATE tabellen_name SET spalte1=wert1, spalte2=wert2, ... (WHERE bedingung);
Zeile 51: Zeile 62:
  
  
Daten wieder löschen:
+
=== Daten wieder löschen ===
  
 
DELETE FROM tabellen_name (WHERE bedingung);
 
DELETE FROM tabellen_name (WHERE bedingung);
Zeile 60: Zeile 71:
  
  
Eine Tabelle löschen:
+
=== Eine Tabelle löschen ===
  
 
DROP TABLE tabellen_name;
 
DROP TABLE tabellen_name;
Zeile 70: Zeile 81:
  
  
Eine Datenbank löschen:
+
=== Eine Datenbank löschen ===
  
 
DROP DATABASE datenbank_name;
 
DROP DATABASE datenbank_name;
Zeile 80: Zeile 91:
  
  
Tabellen verändern
+
== Tabellen verändern ==
  
 
+
=== Spalten hinzufügen ===
Spalten hinzufügen
 
  
 
ALTER TABLE tabellen_name ADD spalten_name;
 
ALTER TABLE tabellen_name ADD spalten_name;
Zeile 91: Zeile 101:
 
Fügt der Tabelle "Personal" die Spalte "Geschlecht" hinzu
 
Fügt der Tabelle "Personal" die Spalte "Geschlecht" hinzu
  
 
+
=== Spalten löschen ===
Spalten löschen
 
  
 
ALTER TABLE tabellen_name DROP spalten_name;
 
ALTER TABLE tabellen_name DROP spalten_name;
Zeile 101: Zeile 110:
  
  
Datentyp einer Spalte ändern
+
=== Datentyp einer Spalte ändern ===
  
 
ALTER TABLE tabellen_name MODIFY spalten_name datentyp;
 
ALTER TABLE tabellen_name MODIFY spalten_name datentyp;
Zeile 110: Zeile 119:
  
  
Bezeichnung einer Spalte ändern
+
=== Bezeichnung einer Spalte ändern ===
  
 
ALTER TABLE tabellen_name CHANGE spalten_name_alt spalten_name_neu;
 
ALTER TABLE tabellen_name CHANGE spalten_name_alt spalten_name_neu;
Zeile 119: Zeile 128:
  
  
Namen einer Tabelle ändern
+
=== Namen einer Tabelle ändern ===
  
 
ALTER TABLE tabellen_name_alt RENAME tabellen_name_neu;
 
ALTER TABLE tabellen_name_alt RENAME tabellen_name_neu;
Zeile 127: Zeile 136:
 
Ändert den Namen der Tabelle "Personal" zu "Mitarbeiter". ACHTUNG: Die Beziehungen werden NICHT automatisch mitgeändert!!!
 
Ändert den Namen der Tabelle "Personal" zu "Mitarbeiter". ACHTUNG: Die Beziehungen werden NICHT automatisch mitgeändert!!!
  
 +
== Daten einer Datenbank abfragen ==
  
 
Daten einer Datenbank abfragen
 
  
  
Zeile 226: Zeile 234:
  
 
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
 +
----
 +
[[Datenbanken|Zurück zur Datenbankenübersicht]]
 +
[[Serienbriefe mit LaTeX erstellen|Zurück zu "Serienbriefe mit LaTeX erstellen"]]
 +
  
 
[[Category:Datenbanken]]
 
[[Category:Datenbanken]]

Aktuelle Version vom 12. März 2007, 01:25 Uhr

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"