SQL

 Um Informationen aus den Tabellen der Datenbank zu gewinnen, bedient man sich der standardisierten Abfragesprache SQL. SQL steht für Structured Query Language. Es handelt sich um eine Sprache der 3. Generation. Der Anwender gibt an, welche Daten er in welcher Kombination mit anderen Daten sehen möchte. Über die Art und Weise, wie der Such- und Auswahlprozess innerhalb der Datenbank vonstatten geht, braucht er keine Angaben zu machen. das regelt das Datenbankprogramm.

Felddatentypen:

Byte, 1Byte, ganze Zahl 0-255, Access
Single, 4 Bytes, Gleitkommazahl, Access
Double, 8 Bytes, Gleitkommazahl, Access
short / integer, 2 Bytes, kurze Ganzzahl, -32768 bis +32768, Access
long, 4 Bytes, lange Ganzzahl, Access
number[(p[,s]], Zahl, p-stellen lang, s-stellen hinter dem Dezimalpunkt, Oracle
datetime / date, 8 Bytes, Access
date, 8 Bytes, Oracle
text / char, 1 Byte pro Zeichen, von 0 - 255, Access, Oracle
longtext, 1 Byte pro Zeichen, von 0 - 1,2 Gigabytes, Access

Arbeitsweise unter Linux:

Erstelle ein Verzeichniss unter /var/lib/sql (z.B. Drucker)

Besitzer muss mysql sein (nicht root) [chown mysql drucker]

Danach wechsele nach mysql mit dem Befehl mysql

Öffne die Datenbank mit use drucker (Antwort: Database open)

Anmerkung: In SQL werden Eingaben immer mit dem Semikolon (;) abgeschlossen.

Eine Tabelle erstellen:

create table haus
(Haus_id integer(5),
Name char(30));

Tabelle mit Informationen füllen:

insert into haus
values ('1','Saarbruecken');

Primärschlüssel setzen:

create unique index haus_id_key on haus (haus_id);

Abfragen:

select * from haus; Alle Datensätze anzeigen von Tabelle Haus
select hausname from haus; Nur die Spalte Hausname von Tabelle Haus ausgeben.
select * from drucker where druckername='7001'; Auswahl bestimmt, alles von Tabelle Drucker anzeigen wo der druckername=7001 ist
select * from druckerwhere drucker_id like 'K*'; Auswahl unbestimmt mit Stern
select * from drucker where druckername in ('7001','600'); Sucht alles was diesem Entspricht
select * from drucker where drucker_id between 3 and 6; Zeigt nur die Datensätze 3 bis 6 an
select count (*), max(drucker_id) from drucker; Anzeige der größten Drucker_id
select count (*), min(drucker_id) from drucker; Anzeige der kleinsten Drucker_id
select count (*), sum(gewinn) from einnahmen; Anzeige der Summe
select count (*), avg(gehalt) from personal; Errechnet den Mittelwert
select druckername, hausnr from drucker where hausnr='3' order by druckername; Zeigt alle Datensätze des Hauses 3 und sortiert diese nach dem Namen (ASC = aufsteigend)
select drucker.druckername, drucker.haus_id, haus.hausname
from drucker left join haus
on drucker.haus_id = haus.haus_id;
Felder aus den verschiedenen Tabellen nennen,
Zwischen den Tabellen soll eine Abfrage stattfinden,
Verknüpfung durch Nichtschlüsselattribut mit Primärschlüssel.
select drucker.druckername, drucker.druckerip
from drucker
where drucker.haus_id = '1';
Gibt den Druckernamen und dessen IP-Adresse aus, bei denen die Haus_id = 1 ist. (Also alle Drucker mit Namen und Adresse des ersten Hauses, in unserem Beispiel Saarbruecken)
select drucker.drucker_id, drucker.druckername, drucker.druckerip, haus.hausname, rep.repdate
from haus, drucker, rep
where drucker.haus_id = haus.haus_id
and rep.drucker_id = drucker.drucker_id;
Auswahl der Felder

Abzufragende Tabellen
Beziehung zwischen 1. u. 2. Tabelle
Beziehung zwischen 2. u. 3. Tabelle
select * from drucker
where drucker_id >3;
Zeige alle Drucker die über der ID 3 liegen.
update personal
set Gehalt = 4500
where pers_id = '1';
Setzt neuen Wert in das Feld 'Gehalt' beim Mitarbeiter mit der Personalnummer 1.
update personal
set Gehalt = (Gehalt -500)
where pers_id = '2';
Ändert den bisherigen Wert ab, -500
Alt 4500, Neu 4000
Daten ändern update und set
Datensatz löschen delete
alter table
add beruf char(20)
Abändern von Tabellen
drop Tabelle löschen
drop index Primärschlüssel löschen
grant Rechtevergabe
revoke Rechte entziehen
create view Benutzeranzeige