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 |