SQL-Befehle - Parameter - Datentypen

Hier mal eine kleine Zusammenstellung mit den gängisten SQL-Befehlen, Parametern und Datentypen. Hat mir am Anfang der Ausbildung als Nachschlagewerk sehr geholfen.

 

 

DDL (Data Definition Language)

Erstellen von Datenbanken, Tabellen (Relationen) und Indizes

DQL (Data Query Language)

Abfragen von Daten

DML (Data Manipulation Language)

Anlegen, Ändern und Löschen von Datensätzen

DCL (Data Control Language)

Anlegen von Benutzern und Vergabe von Zugriffsrechten

 

eine Datenbank erstellen

CREATE DATABASE [IF NOT EXISTS] datenbankname;

eine Datenbank in MySQL löschen

DROP DATABASE datenbankname;

die aktuelle Datenbank in MySQL wechseln/ auswählen

USE datenbankname;

alle Datenbanken anzeigen

SHOW DATABASES;

einfache Tabelle erstellen

CREATE TABLE tabellenname

( datenfeld1 datentyp1 [DEFAULT standardwert1 | NULL | NOT NULL ] [AUTO_INCREMENT], ….,

PRIMARY KEY (datenfeldname));

Datentyp umwandeln

CAST (wert AS datentyp)

NUMERIC -> CHAR, VARCHAR, DATE

CHAR, VARCHAR -> NUMERIC, DATE

DATE -> CHAR, VARCHAR, DATE

BLOB, TEXT -> nicht möglich

Angabe einer Gültigkeitsprüfung ( auf wahr)nach Festlegen der Datenfelder bei CREATE TABLE

CONSTRAINT variablenname CHECK (prüfungsgleichung)

- variablenname wird bei jeder neuen anweisung neugefüllt

- variablenname nur zum zwischenspeichern, nicht gleich feldname

Berechnendes Feld (wert) nach Festlegen der Datenfelder bei CREATE TABLE (nicht in MySQL, dort über eine Abfrage berechnen lassen)

neuer feldname COMPUTED BY (berechnung)

vorhandene Tabellen anzeigen

SHOW TABLES [FROM datenbankname] [LIKE „muster“];

Berechnendes Feld in MySQL

SELECT feld1…feldx, berechnung AS neuer feldname FROM tabellenname

einen Primärschlüssel definieren (Indizes werden automatisch auf- und absteigend gebildet)

PRIMARY KEY (datenfeld)

eine Tabelle ändern

ALTER TABLE tabellenname

ADD feldname datentyp DEFAULT standardwert;

und/ oder:

ADD PRIMARY KEY(datenfeld);

und/ oder:

ADD indexdefinition;

und/ oder:

ADD CONSTRAINT variablenname CHECK (prüfungsgleichung);

und/ oder:

DROP objektname;

eine Tabelle löschen (vorher alle Referenzen z.B. auf eine Sicht (VIEW) entfernen

DROP   TABLE tabellenname

einen Datensatz einfügen

INSERT INTO tabellenname (feld1….feldx)

values (wert1…wertx);

Wird kein Inhalt eingefügt: values (,,)

mehrere Datensätze einfügen

wie “einen Datensatz einfügen” nur mehrere untereinander

Abfrage

SELECT [DISTINCT] *|datenfelder [COUNT (datenfeld(meistens ID, weil es die immer gibt))] FROM tabellenname

[WHERE bedingung]

[GROUP BY datenfelder [HAVING bedingung]   ]

[ORDER BY datenfelder [ASC|DESC] ]

[LIMIT [Start,] anzahl ];

Spalten umbenennen (z.B. für benutzerfreundlicher Namen)

SELECT feldname AS neuer feldname,….feldnamex AS neuer feldnamex FROM tabellenname [where bedingung];

mehrere Datensätze mit einer Unterabfrage einfügen

INSERT INTO tabellenname (feld1….feldx)

SELECT [*|datenfelder] FROM tabellenname WHERE bedingung;

Datensätze aktualisieren

UPDATE tabellenname SET feld = wert,…. , feldx = wertx[WHERE bedingung];

wert kann auch eine berechnung oder unterabfrage (nicht MySQL) sein.

Datensätze löschen

DELETE FROM tabellenname [WHERE bedingung];

in erster Spalte einen konstanten Wert in einer Abfrage

SELECT „feldinhalt“ ( Name freiwählbar) AS „feldname“ (freiwählbar), feld1,…feldx FROM tabellenname WHERE bedingung;

Berechnung in einer Abfrage ( in MySQL anstatt COMPUTED BY)

SELECT feld1,…feldx, berechnung AS feldname (freiwählbar) FROM tabellenname;

Abfrage mit logischen Operatoren

SELECT … FROM tabellenname WHERE feld LIKE wert AND feld logischerOperator wert;

SELECT … FROM tabellenname WHERE feld LIKE wert AND (feld logischerOperator wert OR feld logischerOperator wert)AND feld logischerOperator wert;

SELECT … FROM tabellenname WHERE NOT (feld LIKE wert);

eine Bedingung negieren

SELECT …. WHERE NOT bedingung

Abfrage IN (auf Vorkommen in einer Werteliste)

SELECT…WHERE feld IN (wert1,…wert x);

Erzeugen eines Primärschlüssels

CREATE TABLE tabellenname (primärschlüsselfeld datentyp…NOT NULL,

PRIMARY KEY (primärschlüsselfeld)

Hinzufügen des Primärschlüssels nachträglich

ALTER TABLE tabellenname ADD PRIMARY KEY (datenfeldname);

Löschen des Primärschlüssels nachträglich

ALTER TABLE tabellenname DROP PRIMARY KEY;

Sekundärschlüssel erstellen

CREATE TABLE tabellenname

(datenfeld1 datentyp1….

UNIQUE [schlüsselfeld] (datenfeldliste));

Hinzufügen des Sekundarschlüssels nachträglich

ALTER TABLE tabellenname ADD UNIQUE [schlüsselname] (datenfeldliste);

Löschen des Sekundärschlüssel nachträglich

ALTER TABLE tabellenname DROP INDEX schlüsselname;

Erstellen eines Fremdschlüssels

 

ON DELETE-> zum Steuern des Verhaltens der Datenbank für das Löschen eines Datensatzes, auf den noch Referenzen in anderen Tabellen bestehen.

 

ON UPDATE-> zum Steuern des Verhaltens der Datenbank für das Aktualisieren eines Datensatzes, auf den noch Referenzen in anderen Tabellen bestehen.

CREATE TABLE tabellenname

(datenfeld1 datentyp1

FOREIGN KEY (datenfeldname)

REFERENCES tabellenname (datenfeldname)

[ON UPDATE referenzoption] [ON DELETE referenzoption]);

- datentyp1 und datenfeldname nach REFERENCES müssen beide NOT NULL sein!!!!!

- referenzoptionen siehe Tabelle weiter unten

referenzierte Datensätze beim Löschen einschließen

FOREIGN KEY (datenfeldname) REFERENCES tabellenname (datenfeldname)

ON DELETE CASCADE;

Hinzufügen von Fremdschlüsseln nachträglich

ALTER TABLE tabellenname ADD FOREIGN KEY (datenfeldname)

REFERENCES tabellenname (datenfeldname)

[ON UPDATE referenzoption] [ON DELETE referenzoption]=;

Indizes erstellen

CREATE [ASC/DESC] INDEX indexname ON tabellenname (datenfeldname);

Indizes löschen

DROP INDEX indexname [ON tabellenname];

Abfrage mit Aggregatfunktionen (Beispiel)

SELECT COUNT (datenfeld) AS neuer datenfeldname, AVG (datenfeld) AS “neuer datenfeldname”, MIN ( datenfeld) AS “neuer datenfeldname”, MAX (datenfeld) AS „neuer datenfeldname“ FROM tabelle;

oder.

WHERE bedingung;

oder:

hinter FROM: GROUP BY datenfeld HAVING berechnung ( z.B. COUNT (datenfeld >2;

Aggregatfunktionsaufruf

zwischen SELECT und FROM, nicht in WHERE, Auswahl der Datensätze über das Ergebnis einer Aggregatfunktion mithilfe der HAVING-Klausel

Einfache Tabellenverknüpfung (Equi-Join)

SELECT datenfeldliste FROM tabelle1 [AS neuer tabellenname1], tabelle2 [AS neuertabellenname2],…

WHERE tabelle1.datenfeld = tabelle2.datenfeld [AND…]; (auch zusätzliche Bedingungen)

Cross-Join

 

- liefert eine Kombination jedes Datensatzes der einen Tabelle mit jedem Datensatz der anderen Tabelle

SELECT datenfelder FROM tabelle1 CROSS JOIN tabelle2 [WHERE bedingung];

Inner-Join (Equi-Join)

 

- liefert die Schnittmenge zweier Tabellen

SELECT datenfeldliste FROM tabelle1 INNER JOIN tabelle2

ON tabelle1.datenfeld = tabelle2.datenfeld [WHERE bedingung];

oder:

SELECT datenfelder FROM tabelle1, tabelle2 WHERE tabelle1.datenfeld = tabelle2.datenfeld;

Inner-Join über mehr als 2 Tabellen

SELECT datenfelder ((tabelle1 INNER JOIN tabelle2 ON bedingung) INNER JOIN tabelle3 ON bedingung)…

Natural-Join

 

- liefert die Schnittmenge zweier Tabellen, identische Werte werden nur einmal angezeigt

SELECT DISTINCT datenfelder FROM tabelle1 INNER JOIN tabelle2 ON tabelle1.datenfeld = tabelle2.datenfeld;

Theta-Join

 

- liefert alle Datensätze zweier Tabellen außer der Schnittmenge

SELECT datenfelder FROM tabelle1, tabelle2 WHERE tabelle1.datenfeld Operator tabelle2.datenfeld;

oder:

SELECT datenfelder FROM tabelle1 INNER JOIN tabelle2 ON tabelle1.datenfeld lopOperator tabelle2.datenfeld;

Left-Outer-Join

 

- liefert alle Datensätze der Tabelle1 sowie alle passenden Datensätze der Tabelle2

SELECT datenfelder FROM tabelle1 LEFT OUTER JOIN tabelle2 ON tabelle1.datenfeld = tabelle2.datenfeld;

- hinter FROM tabelle, wo alles drin ist

Right-Outer-Join

 

- liefert alle Datensätze der Tabelle2 sowie alle passenden Datensätze der Tabelle1

SELECT datenfelder FROM tabelle1 RIGHT OUTER JOIN tabelle2 ON tabelle1.datenfeld = tabelle2.datenfeld;

- hinter JOIN tabelle, wo alles drin ist

Self-Join

 

- kommt auf die Bedingung an, was er liefert

SELECT datenfelder FROM tabelle AS name1 INNER JOIN tabelle AS name2 ON name1.datenfeld = name2.datenfeld WHERE bedingung;

zwei Abfragen vereinigen

SELECT abfrage1 UNION SELECT abfrage2

einen Ersatznamen für eine Tabelle definieren

tabellenname AS ersatzname

oder:

tabellenname ersatzname

Sicht erstellen

CREATE VIEW viewname AS SELECT...;

Sicht mit Datenüberprüfung erstellen

CREATE VIEW viewname AS SELECT ... WITH CHECK OPTION;

Datenfelder in der Sicht benennen

CREATE VIEW viewname (feldname1,...) AS SELECT ...;

Sicht löschen

DROP VIEW viewname;

Datensätze über eine Sicht einfügen

INSERT INTO viewname...;

Datensätze über eine Sicht ändern

UPDATE viewname SET ...;

Datensätze über eine Sicht löschen

DELETE FROM viewname...;

Anlegen neuer Benutzer (MySQL)

INSERT INTO user (host, user, password)

VALUES ("hostname", "benutzername", PASSWORD ("passwort"));

Benutzerdaten anzeigen

SELECT * FROM user;

Benutzerdaten ändern

UPDATE user SET datenfeld = wert,...;

- Passwort ändern mit PASSWORD

Benutzer löschen

DELETE FROM user WHERE user = "benutzername";

einem Benutzer die Rechte vergeben

GRANT rechteliste ON datenbankobjekt TO benutzername;

betreffende Rechte gelten für alle Datenbanken und Tabellen

GRANT rechte ON *.* TO ...

betreffende Rechte gelten für alle Tabellen der angegebenen Datenbank

GRANT rechte ON datenbank.* TO...

betreffende Rechte gelten für die angegebene Tabelle der angegebenen Datenbank (wenn man nicht in einer anderen Datenbank ist)

GRANT rechte ON datenbank.tabelle TO..

betreffende Rechte gelten für alle Tabellen der aktuellen Datenbank

GRANT rechte ON * TO...

betreffende Rechte gelten für die angegebene Tabelle der aktuellen Datenbank

GRANT rechte ON tabelle TO...

Zugriffsrechte auf bestimmte Datenfelder beschränken (geht auch über Views)

GRANT SELECT|INSERT|UPDATE (datenfeldliste),...

ON datenbankobjekt TO benutzer;

 

- mehrere Benutzerrechte durch Kommata trennen

- mehrere Datenfelder durch Kommata trennen

Zugriffsrechte weitergeben

GRANT rechteliste ON datenbankobjekt TO benutzer WITH GRANT OPTION;

Zugriffsrechte entziehen

REVOKE rechteliste [(datenfeldliste)]ON datenbankobjekt FROM benutzer;

 

- datenfeldliste: wie bei GRANT

später NOT NULL und AUTO_INCREMENT einfügen

ALTER TABLE tabellenname CHANGE feldname feldname int(11) NOT NULL [AUTO_INCREMENT]

 

- bei einigen Workbenches feldnamen in Hochkomma

Layout (Struktur) der Tabelle anzeigen

DESCRIBE tabellenname

Daten einer Textdatei in Tabelle laden

LOAD DATA LOCAL INFILE '/path/file.txt' INTO TABLE tabellenname

Alter in Jahren berechnen

SELECT datenfeldliste, CURDATE() AS feldname, (YEAR(CURDATE())-YEAR(datenfeld)) – (RIGHT(CURDATE(),5) < RIGHT(datenfeld,5)) AS feldname FROM tabellenname

 

 

 

 

Parameter

NOT NULL

Eingabe eines Wertes in das Datenfeld erzwingen, bei Primärschlüssel-Felder

NULL

Datenfeld hat standardmäßig keinen Wert

DEFAULT standardwert

definiert den Standardwert des Feldes

AUTO_INCREMENT

aktueller Wert des Feldes = Wert des Feldes im vorherigen Datensatz + 1

DISTINCT

vermeidet doppelte identische Datensätze (nach SELECT)

LIMIT [zahl ab datensatz,] zahl

Begrenzung der angezeigten Datensätze

feldname BETWEEN untergrenze AND obergrenze

Bereichsprüfung (nach WHERE)

feldname IN („wert1,…wertx)

Elementprüfung (nach WHERE)

feldname LIKE „Muster“ [ESCAPE „Zeichen „]

Mustervergleich (nach WHERE), ESCAPE siehe Platzhalter-Tabelle

feldname IS NULL

Nullwertprüfung (nach WHERE)

feldname < wert AND feldname > wert

feldname <> wert OR wert <> wert

logische Operatoren, Verknüpfen mehrerer Bedingungen (nach WHERE)

UPPER(feldname) = wert / LOWER (feldname) = wert

Groß- und Kleinschreibungsbedingung (nach WHERE) - nicht SQL und MySQL!

COUNT (datenfeld) (vor FROM)

zählt die Anzahl der gleichen Werte des angegebenen Datenfeldes einer Tabelle (datenfeld, wo auf jedenfall keine null vorkommen kann)

GROUP BY datenfeld [,datenfeld,…]   (nach FROM)

Daten einer Abfrage gruppieren

ORDER BY datenfeld [,datenfeld,…] (nach FROM)

Daten einer Abfrage sortieren

GROUP BY datenfeld [,datenfeld,…] HAVING bedingung (nach FROM)

eine gruppierte Abfrage mit einer Bedingung definieren; HAVING bei berechnende Feldern (auf berechnende Feldern kann nicht mit WHERE zugegriffen werden), als bedingung muss auch die Berechnung nochmal neu aufgerufen werden, mit berechnenden Feldern nach SELECT dienen nur der Anzeige und auf diese berechnenden Feldern kann nicht zugegriffen werden

ASC

aufsteigende Sortierung (Standard)

DESC

absteigende Sortierung

WITH CHECK OPTION (bei Views)

Wenn man erreichen will, dass nur Datensätze eingefügt, geändert oder gelöscht werden können, die in der Sicht auch angezeigt werden. So wird beim Bearbeiten der Daten ebenfalls die Bedingung aus der SELECT-Anweisung beachtet. Trifft die Bedingung bei der Änderung nicht zu, kommt es zu einer Fehlermeldung.

Beim Löschen eines Datensatzes werden so nur die Datensätze gelöscht, die auch in Sicht angezeigt werden.

PASSWORD

verschlüsselt das angegebene Passwort

WITH GRANT OPTION

können Benutzer die ihnen zugewiesenen Rechte auch an andere Benutzer weitergeben. Normalfall: Das kann normalerweise nur der Datenbankadministrator oder der Besitzer des Datenbankobjektes

 

Datentypen

VARCHAR(anzahl)

variabel, (anzahl) ist der Höchstwert, wenn weniger Zeichen auch weniger Speicherverbrauch, anzahl = 1 bis 255 (bzw. 65535 z.B. bei Pfadnamen/ ist von der Datenbankversion abhängig)

SMALLINT

2 Byte, -32765 -+32767

INTEGER

4 Byte, -2147483648 - +2147483647

FLOAT

4 Byte, 7 signifikante Stellen

DOUBLE PRECISION

8 Byte, 15 signifikante Stellen

NUMERIC(Präzision, Skalierung)

Präzision(1-15): exakte Anzahl der signifikanten Stellen, Skalierung(1-15): Anzahl der Nachkomma stellen

DECIMAL (Präzision, Skalierung)

Präzision(1-15): minimale Anzahl der signifikanten Stellen, Skalierung(1-15): Anzahl der Nachkomma stellen

DATE

8 Byte, 1.1.100 – 11.12.5941

Eingabeformate für DATE

tt.mm.jj = 12.07.03; tt-mmm-jj = 12-JUL-03; mm-tt-jj = 07-12-03

CHAR(anzahl)

(anzahl) ist der Höchstwert, immer der höchste Speicherverbrauch, anzahl = 1 bis 255

BLOB

zum Speichern großer binärer Datenmengen, z.B. Textdokumente, Bilder etc.

TEXT

wie BLOB, Unterschied: andere Sortierreihenfolge (unabhängig von der Groß- und Kleinschreibung)

 

Berechnungsoperatoren

+

Addition

-

Subtraktion

*

Multiplikation

/

Division

 

Vergleichsoperatoren (logOperator)

 

kleiner als

>

größer als

<>

ungleich

=

ist gleich

>=

größer oder gleich

 

kleiner oder gleich

 

Platzhalter

%

für kein, ein oder mehrere beliebige Zeichen

_

für exakt ein beliebiges Zeichen

SELECT … WHERE datenfeld LIKE „muster“ [ESCAPE „zeichen “];

z.B. SELECT * FROM t_abt WHERE name LIKE “Abt\ _%” ESCAPE “\ “;

durch ESCAPE wird Platzhalter nicht als Platzhalter behandelt, Zeichen in ESCAPE wird nach LIKE vor das Platzhalterzeichen gesetzt

 

Logische Operatoren

AND

UND-Verknüpfung: Beide Bedingung müssen erfüllt sein.

OR

ODER-Verknüpfung: mind. eine der Bedingung muss erfüllt sein

NOT

NICHT-Verknüpfung: aus wahr wird falsch und aus falsch wird wahr

 

Optionen für das Verhalten bei Fremdschlüsselverletzungen (referenzoption)

NO ACTION (Standardeinstellung – Eingabe nicht erforderlich)

Ausführung der Anweisung wird abgebrochen

CASCADE

Löschen und Aktualisieren: alle Datensätze in anderen Tabellen, die auf diesen Datensatz verweisen, werden ebenfalls gelöscht bzw. aktualisiert

SET DEFAULT

alle referenzierten Datenfelder werden auf den Default-Wert zurückgesetzt

SET NULL

alle referenzierten Datenfelder werden auf den Wert NULL gesetzt.

 

Richtlinien für das Erstellen von Indizes

Datenfelder mit Primär-, Sekundär- oder Fremdschlüsseln

wird auf- und absteigender Index automatisch erstellt und man braucht keinen zusätzlichen Index erstellen

Datenfelder, deren Wert sich nur wenig untscheidet ( Herr, Frau)

kein Index erforderlich

Tabellen mit wenigen Daten

kein Index erforderlich

Tabellen, in denen große Datenmengen gefiltert gruppiert oder sortiert werden

Index erforderlich

Datenfelder, die in Abfragen sehr häufig benötigt werden

Index erforderlich bzw. von Vorteil

Datenfelder, die auf- und absteigend sortiert werden müssen

2 verschiedene Indizes erstellen

Aggregatfunktionen (Datenfelder mit Berechnungen)

nutzen keinen Index

 

Bedeutungen

Primärschlüssel

Hauptschlüssel, eindeutige Identifizierung jedes Datensatzes einer Tabelle

Sekundärschlüssel

zusätzlicher Schlüssel, zum Vermeiden von Redundanzen in Datensätzen

Fremdschlüssel

Beziehung zwischen 2 Tabellen wird hergestellt, referenziert den Primärschlüssel einer anderen Tabelle ( muss zwar nicht Primärschlüssel sein, aber das Feld sollte ein Unikat sein), Verweis in einer Tabelle auf einen Primärschlüssel einer Tabelle

Index (in der relationalen Datenbank wird für jeden Schlüssel automatisch ein Index angelegt.)

angelegtes Inhaltsverzeichnis für ein oder mehrere Datenfelder zum beschleunigten Filtern, Gruppieren oder Sortieren einer Tabelle

Beispiel: Index aufsteigend: 95 Index absteigend: 105; der Datensatz wird nur noch zwischen den 2 Indizes gesucht

Aggregatfunktionen

nicht über WHERE, nur über HAVING; dienen der statischen Auswertung der Werte eines Datenfeldes oder einer Gruppe innerhalb einer Abfrage

User Defined Functions (UDF)

Benutzerdefinierte Funktionen, die den Funktionsumfang der Datenbank erweitern und in externen Bibliotheken vorliegen (z.B. für InterBase)

Strings

In einer Datenbank werden Textinformationen als Zeichenketten gespeichert (Datentyp VARCHAR)

Sichten (Views)

- gespeicherte Select-Anweisungen

- benötigen bis auf ihre Definition keinen weiteren Speicherplatz

- verwenden automatisch die aktuellen Datensätze der zugrunde liegenden Tabellen

- Eingrenzen des Zugriffs auf Daten ausschließlich für Benutzer, für die sie relevant sind

- stellen Ergebnismengen von Abfragen dar, werden aber in SQL wie Tabellen verwendet

- Abfragen von Daten aus vorhandenen Sichten

- teilweise aktualisieren bzw. neu einfügen Datensätzen mithilfe von Sichten

- Alle Datenfelder, die beim Erstellen einer Sicht ausgeblendet wurden, sind auch in der weiteren Verwendung der Sicht nicht vorhanden.

- Struktur der Tabellen, auf der die Sicht beruht, wird dabei jedoch nicht verändert.

- erlaubt in der Select-Anweisung in Sichten: beliebige WHERE-Klauseln, auch Abfragen über mehrere Tabellen (Joins)

- nicht erlaubt: GROUP BY und HAVING, ORDER BY, UNION

- Angabe von Ersatznamen für Datenfelder zwingend notwendig: Datenfeldname bei Abfragen über mehrere Tabellen nicht eindeutig; Verwenden von Ausdrücken und Aggregatfunktionen in der Abfrage

- Zugriff in der Select-Anweisung auch auf eine Sicht möglich

Datensätze über eine Sicht einfügen/ ändern/ löschen

 

- tatsächliches Ändern der entsprechenden Datensätze in der zugrunde liegenden Tabelle!!!!!

- nicht enthaltene Datenfelder des Datensatzes in der Sicht werden mit NULL gefüllt (Felder müssen NULL akzeptieren, nicht NOT NULL gesetzt oder DEFAULT), also alle Felder mit NOT NULL müssen sich in der Sicht befinden

erlaubt nur, wenn:

- in Select-Anweisung der Sicht keine Verwendung von DISTINCT

- Sicht bezieht sich nur auf eine Tabelle, keine Joins

- Abfrage verwendet keine Unterabfragen in der Bedingung

 

 

 

Aggregatfunktionen (statische Auswertung in einer Abfrage)

COUNT()

Liefert die Anzahl der Werte in der Ergebnismenge einer SELECT-Abfrage bzw. einer Gruppierung

COUNT (DISTINCT)

Liefert die Anzahl der unterschiedlichen Werte in einer Abfrage oder Gruppierung

AVG()

Liefert den Durchschnittswert eines Datenfeldes der Abfrage oder Gruppierung

MIN() / MAX()

liefert kleinsten oder größten Wert…

SUM()

liefert die Summe….

 

Argumente der mathematischen Funktionen und Funktionen für Zeichenketten

- Datenfelder der Tabelle bzw. der Tabellen, auf die sich die Abfrage bezieht. z.B. SELECT round(feldname)…

- Konstante Werte

- Ergebnisse aus Berechnungen oder Ergebnisse anderer Funktionen (Schachtelung ist möglich)

- auch in WHERE-Bedingungen anwendbar => Verknüpfen des Ergebnisses einer Funktion durch Vergleichsoperatoren mit einem konstanten Wert oder einem Datenfeld

- einige Funktionen auch in anderen Anweisungen einsetzbar z.B. bei VALUES in der INSERT-Anweisung

 

 

 

Mathematische Funktionen

abs (zahl)

Rückgabe: absoluter Wert einerZahl, also ohne Vorzeichen

ceiling(zahl)

aufrunden auf die nächste ganze Zahl

floor (zahl)

runden auf die nächste kleinere Zahl

round(zahl)

runden auf eine ganze Zahl nach methematischen Regeln

round(zahl,stellen)

runden nach mathematischen Regeln auf die angegebenen Dezimalstellen

log (zahl)

ermittelt den natürlichen Logarythmus

mod (zahl1, zahl2)

Rückgabe: Rest der Ganzzahldivision der angegebenen Zahlen

pi()

Rückgabe: Wert von PI

rand()

Rückgabe: Zufallszahl im Bereich 0 bis 1

sign (zahl)

ermittelt Vorzeichen einer Zahl; Rückgabe: Wert -1 bzw. 0 oder 1

sin(zahl)

cos(zahl)

tan (zahl)

Winkelfunktionsberechnung

sqrt (zahl)

Quardratwurzelfunktion

Besonderheiten:

mehrere Funktonen können über mathematische Operatoren miteinander verbunden werden; Argumente können auch nummerische Datenfelderoder Berechnungsergebnisse sein

ganzzahlige Zufallszahl zwischen 1 und 1000

round(rand() * 1000)+1

 

 

 

Funktionen für Zeichenketten (z.B. Werte in Datenfeldern mit dem Datentyp varchar)

Besonderheiten:

Manche Funktionen benötigen als Argument die Position (den Index) eines Zeichens innerhalb der Zeichenkette, mit dem begonnen wird. Erste Zeichen einer Zeichenkette ist Position 1

ascii (string)

Rückgabe: ASCII-Wert des ersten Zeichens einer Zeichenkette

char (wert)

Eingabe: ASCII-Wert; Umwandlung in Zeichen

length(string)

Rückgabe: Länge der Zeichenkette

lower (string)

upper (string)

Umwandlung in Klein- und Großbuchstaben

ltrim (string)

rtrim (string)

Entfernen von allen führenden bzw. abschließenden Leerzeichen in der Zeichenkette

- beim Konvertierenvon einigen DBs von Nöten

substring ( string, anfang, länge)

Rückgabe: Teilstring der angegebenen Zeichenkette.- Definition: Anfangsposition und Länge

substring ( string, anfang, ende)

Rückgabe: Teilstring der angegebenen Zeichenkette.- Definition: Anfangsposition und Endposition

 

 

 

Joins (Verbund von Tabellen)

 

Cross-Join (Verwendung auch für Wahrscheinlichkeitsrechnungen)

 

- liefert eine Kombination jedes Datensatzes der einen Tabelle mit jedem Datensatz der anderen Tabelle

Bilden des kartesischen Produkts beider Tabellen (Kombination jedes Datensatzes der einen Tabelle mit jedem Datensatz der anderen Tabelle)

Theta-Join

 

- liefert alle Datensätze zweier Tabellen außer der Schnittmenge

Es werden bestimmte Datensätze aus dem kartesischen Produkt zweier Tabellen durch eine Bedingung ausgewählt. In dieser Bedingung wird eine Spalte aus der einen und eine Spalte aus der anderen Tabelle über eine logische Operation auf Ungleichheit verglichen. Wird auf Gleichheit geprüft, erhält man einen Equi-Join (Spezialform des Theta-Join)

Inner-Join = Equi-Join

 

- liefert die Schnittmenge zweier Tabellen

Die Datensätze aus beiden Tabellen werden verbunden, wenn ein oder mehrere gemeinsame Felder den gleichen Wert haben. Muss in der einen Tabelle verknüpfbaren Primärschlüssel und in der anderen einen verknüpfbaren Fremdschlüssel sein.

Natural-Join

 

- liefert die Schnittmenge zweier Tabellen, identische Werte werden nur einmal angezeigt

wie der Inner-Join, nur dass in der Ergebnistabelle keine identischen Spalten vorhanden sind (Fremdschlüssel werden ausgeblendet, einen Fremdschlüssel brauch ich, worauf ich den Fokus lege), DISTINCT

Left-Outer-Join (Linke Inklusionsverknüpfung)

 

- liefert alle Datensätze der Tabelle1 sowie alle passenden Datensätze der Tabelle2

Von der linken Tabelle werden alle Datensätze in die Ergebnismenge aufgenommen. Von der rechten Tabelle werden nur die dazugehörigen Datensätze übernommen. Die Felder der rechten Tabelle bleiben leer, wenn kein passender Datensatz vorhanden ist. Es müssen NULL-Werte enthalten sein.

Right-Outer-Join (Rechte Inklusionsverknüpfung)

 

- liefert alle Datensätze der Tabelle2 sowie alle passenden Datensätze der Tabelle1

wie Left-Outer-Join nur umgekehrt; linke Tabelle ist jetzt die rechte usw. Es müssen NULL-Werte enthalten sein.

Full-Outer-Join = Full-Join

 

- nicht von MySQL unterstützt

- liefert alle Datensätze aus Tabelle1 und Tabelle2, wobei die Schnittmenge zusammengefasst wird

Kombination aus Left-Outer-Join und Right-Outer-Join; Alle Datensätze beider Tabellen werden In die Ergebnismenge übernommen. Passen Datensätze aus beiden Tabellen laut Vergleichsoperation zusammen, so werden sie verbunden.

Semi-Join

 

- liefert die Schnittmenge zweier Tabellen, identische Werte werden nur einmal angezeigt, Anzeige einiger oder alle Spalten der Tabelle1

Zwei Tabellen werden über einen Natural-Join verbunden. Anschließend erfolgt einer Projektion (Auswahl bestimmter Spalten einer Tabelle) auf die Spalten der ersten Tabelle.

Self-Join

 

- kommt auf die Bedingung an, was er liefert

ist einer der zuvor genannten Joins. Es werden nicht zwei verschiedene Tabellen genommen, sondern zweimal dieselbe.

 

Datenfeldliste

SELECT * FROM tabelle1, tabelle2,…

liefert alle Felder aus allen beteiligten Tabellen

SELECT tabelle1.feld1, tabelle1.feld2, tabelle2.* …

liefert die angegebenen Felder der Tabelle1 und alle Felder der Tabelle2

SELECT tabelle1-*, tabelle2.*…

gleichbedeutend mit SELECT *

 

 

 

Datenbankadministrator

Datenbanksystem

Benutzername des Administrators

Standard-Passwort

MySQL

root

keins

InterBase

SYSDBA

masterkey

Microsoft SQL-Server

sa

keins

- Standard-Passwort nach Installation des Datenbanksystems unbedingt ändern

- zusätzlich für sich selbst einen Benutzer mit etwas eingeschränkten Rechten erstellen -> als Standardbenutzer für sich selbst einrichten

- Jeder Benutzer, der ein Datenbankobjekt (z.B. Tabelle) erstellt, ist automatisch auch Besitzer dieses Objektes. Andere Benutzer besitzen keine Zugriffsrechte auf dieses Objekt außer der Datenbankadministrator.

Benutzerverwaltung unter MySQL

- Verwaltung der Benutzernamen in einer Tabelle mit dem Namen user in der Datenbank mysql.

- Auf die Datenbank mysql haben nur Benutzer mit allen Rechten Zugriff.

- Angaben beim Anlegen eines Benutzers: Benutzernamen, Passwort, von welchen Computern (Hosts) im Netzwerk der Zugriff erfolgen darf und für welche Datenbankobjekte der Zugriff erlaubt ist

Beispiele für hostname

%

Alle Computer im Netzwerk

localhost

Lokaler Computer, auf dem der MySQL-Server installiert ist

db.testserver.de

Computer mit dem Domainnamen db.testserver.de

%.testserver.de

Computer, deren Domain auf testserver.de endet

server

Computer mit dem Netzwerknamen server

- neue Benutzer verfügen standardmäßig über keine Rechte. Diese müssen nachträglich definiert werden (mit GRANT).

 

 

Rechte für GRANT-Anweisung und REVOKE-Anweisung

ALL [PRIVILEGES]

Gewährt alle einfachen Rechte für das entsprechende Datenbankobjket außer GRANT OPTION

DELETE

Recht zum Löschen von Datensätzen, Ausführen der DELETE-Anweisung

EXECUTE

Ausführungsrecht für Stored Procedures (gespeicherte Routinen)

INSERT

Recht zum Einfügen neuer Datensätze, Ausführen der INSERT-Anweisung

REFERENCES (nicht MySQL)

Recht zum Definieren von Regeln für die referenzielle Integrität

SELECT

Leserecht, Ausführen der SELECT-Anweisung

UPDATE

Recht zum Ändern von Datensätzen, Ausführen der UPDATE-Anweisung

ALTER (MySQL)

Erlaubt die Verwendung von ALTER TABLE

ALTER ROUTINE (MySQL)

Erlaubt die Änderung oder Löschung gespeicherter Routinen

DROP (MySQL)

 

CREATE (MySQL)

Erlaubt die Verwendung von CREATE TABLE

CREATE ROUTINE (MySQL)

Erlaubt die Erstellung gespeicherter Routinen

CREATE TEMPORY TABLES (MySQL)

Erlaubt die Verwendung von CREATE TEMPORY TABLES

CREATE USER (MySQL)

Erlaubt die Verwendung von CREATE USER, DROP USER, RENAME USER und REVOKE ALL PRIVILEGES

CREATE VIEW (MySQL)

Erlaubt die Verwendung von CREATE VIEW

DROP (MySQL)

Erlaubt die Verwendung von DROP TABLE

EVENT (MySQL)

Erlaubt die Erstellung von Ereignissen für den Ereignisplaner

FILE (MySQL)

Erlaubt die Verwendung von SELELCT...INTO OUTFILE und LOAD DATA INFILE

INDEX (MySQL)

Erlaubt die Verwendung von CREATE INDEX und DROP INDEX

LOCK TABLES (MySQL)

Erlaubt die Verwendung von LOCK TABLES für Tabellen, für die Sie die Berechtigung SELECT haben

PROCESS (MySQL)

Erlaubt die Verwendung von SHOW FULL PROCESSLIST

RELOAD (MySQL)

Erlaubt die Verwendung von FLUSH

REPLICATION CLIENT (MySQL)

Erlaubt dem Benutzer, die Positionen von Slave- oder Master-Servern zu erfragen

REPLICATION SLAVE (MySQL)

Für Replikationsslaves erforderlich (zum Lesen von Binärlogeinträgen auf dem Master)

SHOW DATABASES (MySQL)

Erlaubt die Verwendung von SHOW DATABASES

SHOW VIEW (MySQL)

Erlaubt die Verwendung von SHOW VIEW

SHUTDOWN (MySQL)

Erlaubt die Verwendung von "mysqladmin shutdown"

SUPER (MySQL)

Erlaubt die Verwendung der Anweisungen CHANGE MASTER, KILL, PURGE MASTER LOGS und SET GLOBAL und des Befehls "mysqladmin debug". Erlaubt ferner die (einmalige) Verbindungsherstellung auch in dem Fall, dass der Wert für max-connections erreicht wurde.

TRIGGER (MySQL)

Erlaubt dem Benutzer das Erstellen und Löschen von Triggern.

USAGE (MySQL)

Synonym für "keine Berechtigungen"

GRANT OPTION (MySQL)

Erlaubt die Gewährung von Berechtigungen.

- auf richtige Schreibweise des Benutzernamens bei GRANT achten, da sonst ein neuer Benutzer angelegt wird und sich nicht die Rechte des vorhandenen Nutzers ändern.

 

 

Zugriffsrechte entziehen

- Falls ein Benutzer bis auf ein Recht alle anderen Zugriffsrechte erhalten soll -> zuerst GRANT ALL, danach mit REVOKE einzelne Rechte wieder entziehen (effektiver)

- Wird einem Benutzer ein Recht entzogen, das er an andere Benutzer weitergegeben hat, dann wird auch diesen Benutzern das Recht entzogen.

- Wurde einem Benutzer ein Recht von mehreren anderen Benutzern gewährt, dann müssen es ihm auch alle diese Benutzer entziehen, damit er das Recht tatsächlich verliert.

 

 

 

 

Kommentar schreiben

Momox.de - Einfach verkaufen.