Einführung - Till Hänisch

Werbung
Tabellen



In relationalen DB werden Daten in
Tabellen organisiert
Jede Spalte enthält eine bestimmte Art
von Information, jede Zeile einen
Datensatz
Jede Spalte hat einen Datentyp

CHAR, VARCHAR, NUMBER, DATE,...
IS: Datenbanken, © Till Hänisch 2000
Tabellen anlegen


CREATE TABLE tabname (columns);
z.B. Tabelle DEPT
CREATE TABLE DEPT (
DEPTNO NUMBER(2),
DNAME VARCHAR2(14),
LOC VARCHAR2(13));

Löschen mit DROP TABLE tabname;
IS: Datenbanken, © Till Hänisch 2000
Daten einfügen


INSERT INTO tabname(col) values(val)
z.B. Tabelle DEPT
INSERT INTO DEPT(DEPTNO,DNAME,LOC)
VALUES(1,'Accounting','New York');

Strings in einfachen Hochkomma '
IS: Datenbanken, © Till Hänisch 2000
Daten abrufen


SELECT cols FROM tabname;
z.B. Tabelle DEPT
SELECT DEPTNO,DNAME FROM DEPT;

Vereinfachung: * = alle Spalten
SELECT * FROM DEPT;

Auswahl
SELECT DEPTNO,DNAME FROM DEPT
WHERE DEPTNO=10;
IS: Datenbanken, © Till Hänisch 2000
Daten löschen


DELETE FROM tabname [WHERE ...];
z.B. Tabelle EMP
DELETE FROM EMP WHERE JOB='MANAGER';
DELETE FROM EMP WHERE SAL > 3000;

Achtung:
DELETE FROM EMP;
löscht alle Datensätze der Tabelle !
IS: Datenbanken, © Till Hänisch 2000
Daten ändern


UPDATE tabname SET col=value
[WHERE ...]
z.B. Tabelle EMP
UPDATE EMP SET DEPTNO=30
WHERE EMPNO=7934;

auch mehrere Columns gleichzeitig
UPDATE EMP SET DEPTNO=30,SAL=1.1*SAL
WHERE DEPTNO=10 AND JOB<>'MANAGER';
IS: Datenbanken, © Till Hänisch 2000
Tabellen verknüpfen


Informationen sind auf mehrere
Tabellen verteilt und sollen
zusammengefasst werden: Join
z.B. Name der Angestellten in EMP,
Name der Abteilung in DEPT
SELECT E.ENAME,D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO;
IS: Datenbanken, © Till Hänisch 2000
DEMO-Tabellen
SELECT * FROM EMP;
EMPNO ENAME
JOB
MGR HIREDATE
SAL
COMM
DEPTNO
--------- ---------- --------- --------- -------- --------- --------- --------7369 SMITH
CLERK
7902 17.12.80
800
20
7499 ALLEN
SALESMAN
7698 20.02.81
1600
300
30
7521 WARD
SALESMAN
7698 22.02.81
1250
500
30
7566 JONES
MANAGER
7839 02.04.81
2975
20
7654 MARTIN
SALESMAN
7698 28.09.81
1250
1400
30
7698 BLAKE
MANAGER
7839 01.05.81
2850
30
7782 CLARK
MANAGER
7839 09.06.81
2450
10
7788 SCOTT
ANALYST
7566 09.12.82
3000
20
7839 KING
PRESIDENT
17.11.81
5000
10
7844 TURNER
SALESMAN
7698 08.09.81
1500
0
30
7876 ADAMS
CLERK
7788 12.01.83
1100
20
7900 JAMES
CLERK
7698 03.12.81
950
30
7902 FORD
ANALYST
7566 03.12.81
3000
20
7934 MILLER
CLERK
7782 23.01.82
1300
10
SELECT * FROM SALGRADE;
SELECT * FROM DEPT;
GRADE
LOSAL
HISAL
--------- --------- --------1
700
1200
2
1201
1400
3
1401
2000
4
2001
3000
5
3001
9999
DEPTNO
--------10
20
30
40
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
IS: Datenbanken, © Till Hänisch 2000
Aufgaben





Liste aller Angestellten des DEPT 30
Alle Angestellten, die entweder
'MANAGER' sind oder mehr als 3000$
verdienen
Erhöhe das Gehalt aller Angestellten im
DEPT 20, die keine 'MANAGER' sind
Lösche alle Angestellten des DEPT 20
Liste aller Angestellten mit Gehaltsstufe
IS: Datenbanken, © Till Hänisch 2000
Joins



Joins verknüpfen zwei (oder mehr)
Tabellen
Wie ?
kartesisches Produkt + Selektion, d.h.
jede Zeile aus Tabelle A wird mit jeder
Zeile aus Tabelle B kombiniert,
dann werden die herausgesucht, die die
Bedingung erfüllen
IS: Datenbanken, © Till Hänisch 2000
Equi-join/Non-equi-join



Equi-join: Bedingung "="
Non-equi-join: sonst
Beispiel: letzte Aufgabe (SALGRADE)
SELECT E.ENAME,S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL>S.LOSAL AND E.SAL<S.HISAL

Häufig: Equi-join
IS: Datenbanken, © Till Hänisch 2000
Self-join


Join einer Tabelle mit der gleichen
z.B: Alle Angestellten mit einem
höheren Gehalt als 'JONES'
SELECT X.ENAME,X.SAL
FROM EMP X, EMP Y
WHERE X.SAL > Y.SAL AND Y.ENAME='JONES'
scott
3000
king
5000
ford
3000
IS: Datenbanken, © Till Hänisch 2000
Aggregate functions



fassen Werte aus Tabelle zusammen
machen aus vielen Zeilen eine
Beispiel: Zahl der EMP's ?
SELECT COUNT(*) FROM EMP


Häufig: COUNT(*),AVG,MIN,MAX,SUM
Sehr mächtig (Gruppierung,...)
später
IS: Datenbanken, © Till Hänisch 2000
NULL




Was trägt man ein, wenn Attribut
keinen Wert hat ?
z.B. bei Zahlen '0', bei Strings '', bei
Datum 31.12.1999,... allgemein ?
SQL: NULL
immer dann, wenn Wert unbekannt
oder nicht sinnvoll
Vergleich mit IS [NOT] NULL
IS: Datenbanken, © Till Hänisch 2000
NULL Forts.

Beispiel: EMP
SELECT COUNT(*) FROM EMP
14
SELECT COUNT(*) FROM EMP WHERE COMM>0
4
SELECT COUNT(*) FROM EMP WHERE COMM<=0
1

???? !!!! ????
IS: Datenbanken, © Till Hänisch 2000
Three Valued Logic


Menge hat n(14) Elemente:
Wenn m(4) Elemente Bedingung
erfüllen, müssen n-m(11) die Negation
der Bedingung erfüllen; hier nicht !
Bedingung mit NULL immer false
SELECT COUNT(*) FROM EMP
WHERE ISNULL(COMM,0) <=0
11

AUFPASSEN
IS: Datenbanken, © Till Hänisch 2000
Aufgaben

Durchschnittsgehalt der „MANAGER“ (SALESMAN)






Aller Berufsgruppen
Liste aller Angestellten mit gleichem Job wie ‘BLAKE‘
, die mehr verdienen, als ihr Manager
Durchschnittliche Kommission
 von allen
 von denen, die überhaupt eine kriegen
Wie viele Angestellte kriegen keine Kommission ?
Abteilungen mit Name des Leiters
 Wie ?
IS: Datenbanken, © Till Hänisch 2000
Herunterladen