SQL

SQL (Structured Query Language) stellt eine Datenbanksprache dar, die vom ANSI (American National Standard Institute) als Standard für relationale Datenbanken definiert wurde. Die einzelnen Datenbankhersteller unterstützen SQL, erweitern den Sprachumfang von SQL jedoch um ihre eigenen Dialekte.

SQL stellt Befehle für zwei Anwendungsbereiche zur Verfügung:
SQL Befehle unterliegen folgenden Regeln:

Alle Beispiele beziehen sich auf die folgenden Tabellen PERSONAL, AUTOS und ORTE:









Data Definition Language


create table
erstellt Tabellen

create table PERSONAL (NR LONG, A BYTE, B BYTE);
Erstellt eine Datei namens PERSONAL mit den Datenfeldern NR, A und B. (LONG und BYTE geben den jeweiligen Datentyp an.)



alter table
verändert Tabellen. Fügt Spalten zur Tabelle hinzu. Entfernt Spalten aus der Tabelle.

alter table AUTO add HERSTELLER varchar (22) ;
Fügt in die Tabelle AUTO eine neue Spalte HERSTELLER ein.

alter table PERSONAL drop column GEHALT ;
Entfernt die Spalte GEHALT aus der Tabelle PERSONAL.



create view
Erzeugt Datenbanksichten. (Schemata)

create view TEST as select PNR, NAME, VORNAME from PERSONAL;
Erzeugt eine Sicht namens TEST. Auf Basis dieser Sicht können weitere Queries durchgeführt werden.
z.B.: select * from TEST; wobei dann nur die mit create view definierten Datenfelder sichtbar sind.






Data Manipulation Language


insert into
Fügt Werte in bestehende Tabellen ein.

insert into PERSONAL values ('A006', 'Acht', 'Gisbert', 33444, 'm', 555, 'C_2', 'x');
Fügt die Werte eines kompletten neuen Datensatzes in die Tabelle PERSONAL ein.

insert into PERSONAL (PNR, NAME, VORNAME) values ('A007', 'Bond', 'James');
Fügt die Werte für PNR, NAME, VORNAME in die Tabelle PERSONAL ein. Die nicht definierten Felder des neuen Datensatzes bleiben leer.

insert into KUENDIGUNG (PNR, NAME, VORNAME, GEHALT) select PNR, NAME, VORNAME, GEHALTfrom PERSONAL where ABTLG='A_1';
Liest die Werte PNR, NAME, VORNAME, GEHALT aus der Tabelle PERSONAL aus, wenn die ABTEILUNG A_1 ist. Diese Werte werden in die Tabelle KUENDIGUNG eingefügt.




update
Ändert Werte und fügt Werte in einen bestehenden Datensatz ein.

update PERSONAL set ABTLG = 'F_4' where PNR = 'A001' ;
Ändert die Abteilung in der der Mitarbeiter mit PNR A001 arbeitet.

update PERSONAL set Gehalt = Gehalt * 1.02 ;
Erhöt den Lohn aller Mitarbeiter um 2 Prozent.

update PERSONAL set Gehalt = Gehalt * 1.05 where Gehalt < 2000 ;
Erhöt den Lohn aller Mitarbeiter um 5 Prozent, die weniger als 2000 Euro verdienen.




delete from
löscht einen bestehenden Datensatz.

delete from PERSONAL where PNR = 'A002' ;
löscht den Datensatz mit PNR A002.

delete from PERSONAL where ABTLG = 'A_1' ;
löscht alle Datensätze der Mitarbeiter aus Abteilung A_1.




select
Wertet Datensätze nach vorgegebenen Filterkriterien aus.

select * from PERSONAL;
Alle Datensätze mit allen Datenfeldern aus der Datei PERSONAL.CSV auslesen.

select PNR, NAME, VORNAME from PERSONAL;
Alle Datensätze mit den Datenfeldern PNR, NAME, VORNAME aus der Datei PERSONAL auslesen.

select NAME, PNR, GEHALT from PERSONALwhere GEHALT > 3000;
Alle Datensätze mit den Datenfeldern NAME, PNR, GEHALT aus der Datei PERSONAL auslesen, deren Gehalt größer als 30000 ist.

select NAME, PNR, GEHALT from PERSONAL where GEHALT between 3000 and 4000;
Alle Datensätze mit den Datenfeldern NAME, PNR, GEHALT aus der Datei PERSONAL auslesen, deren Gehalt zwischen 3000 und 4000 liegt.

select PNR, NAME, ABTLG from PERSONAL group by ABTLG;
Alle Datensätze mit den Datenfeldern PNR, NAME, ABTLG aus der Datei PERSONAL auslesen und nach ABTLG gruppieren.

select PNR, NAME, ABTLG from PERSONAL where ABTLG='G_8';
Alle Datensätze mit den Datenfeldern PNR, NAME, ABTLG aus der Datei PERSONAL auslesen wenn der Ort Cedorf ist.

select PNR, NAME, ABTLG, 'wird geschlossen' as NOTIZ from PERSONAL where ABTLG='A_1';
Alle Datensätze mit den Datenfeldern PNR, NAME, ABTLG und der Bemerkung "wird geschlossen" aus der Datei PERSONAL auslesen wenn die Abteilung A_1 ist.

select PNR, NAME, ABTLG from PERSONAL where not ABTLG='C_2';
Alle Datensätze mit den Datenfeldern PNR, NAME, ABTLG aus der Datei PERSONAL auslesen wenn die Abteilung nicht C_2 ist.

select PNR, NAME, ABTLG from PERSONAL where ABTLG in ('A_1', 'C_2');
Alle Datensätze mit den Datenfeldern PNR, NAME, ABTLG aus der Datei PERSONAL auslesen wenn die Abteilung A_1 oder C_2 ist.

select PNR, NAME, VORNAME from PERSONAL where NAME like 'H%' ;
Alle Datensätze mit den Datenfeldern PNR, NAME, VORNAME aus der Datei PERSONAL auslesen, deren Name mit H beginnt.

selectNAME, VORNAME from PERSONAL where NAME like '_e%' ;
Alle Datensätze mit den Datenfeldern NAME, VORNAME aus der Datei PERSONAL auslesen, deren zweiter Buchstabe im Name ein "e" ist.

select PNR, VORNAME, NAME from PERSONAL order by NAME ;
Alle Datensätze mit den Datenfeldern PNR, VORNAME, NAME aus der Datei PERSONAL auslesen und nach Namen sortieren.

select NAME, VORNAME, GEHALT from PERSONAL where G='w' and GEHALT < 2000;
Alle Datensätze mit den Datenfeldern NAME, VORNAME, GEHALT aus der Datei PERSONAL auslesen, deren Geschlecht (G) weiblich ist und das Gehalt unter 2000 liegt. (beide Bedingungen müssen erfüllt sein.)

select NAME, VORNAME, GEHALT from PERSONAL where G='w' or GEHALT < 2000;
Alle Datensätze mit den Datenfeldern NAME, VORNAME, GEHALT aus der Datei PERSONAL auslesen, deren Geschlecht (G) weiblich ist oder das Gehalt unter 2000 liegt. (eine von beiden Bedingungen muß erfüllt sein.)

select NAME, VORNAME, GEHALT from PERSONAL where (G='w' and GEHALT < 2000) or (G='w' and GEHALT > 4000) ;
Alle Datensätze mit den Datenfeldern NAME, VORNAME, GEHALT aus der Datei PERSONAL auslesen, deren Geschlecht (G) weiblich ist und das Gehalt unter 2000 liegt und alle Datensätze deren Geschlecht (G) weiblich ist und das Gehalt über 4000 liegt.

select count (*) from PERSONAL where G in ('m','M');
Anzahl aller weiblichen Mitarbeiter ermitteln.

select count (distinct ABTLG) from PERSONAL;
Ermittelt, wieviel verschiedene Abteilungen die Mitarbeiter haben.

select max (GEHALT) from PERSONAL;
Gehalt des Mitarbeiters auflisten, der am meissten verdient.

select min (GEHALT) from PERSONAL;
Gehalt des Mitarbeiters berechnen, der am wenigsten verdient.

select avg (GEHALT) from PERSONAL;
Durchschnittsgehalt aller Mitarbeiterinnen berechnen.

select ABTLG, sum (GEHALT) from PERSONAL group by ABTLG ;
Summe der Gehälter aller Mitarbeiter in den einzelnen Abteilungen berechnen.

select PERSONAL.NAME, PERSONAL.VORNAME, KFZ.KENNZ from PERSONAL, AUTOS where PERSONAL.CARID = KFZ.CARID ;
Diese Abfrage listet NAME, VORNAME, KENNZ aller Mitarbeiter, die einen Geschäftswagen haben.
Die Informationen werden aus zwei Tabellen (PERSONAL, AUTOS) ausgelesen.