SQL 1 Select Statement
Spaß mit Datenbanken[edit]
SQL[edit]
Selektion[edit]
Auswahl von Zeilen (Selektion)[edit]
SELECT Spalten FROM Tabellen WHERE Suchbedingung
SELECT * FROM EMP WHERE DEPTNO = 30;
Beispiel[edit]
Gesucht ist der Name aller Büroangestellten
SELECT ENAME FROM EMP WHERE JOB='CLERK';
Vergleichsoperatoren[edit]
= |
gleich |
---|---|
!=,<> |
ungleich |
>= |
größer gleich |
< |
kleiner |
<= |
kleiner gleich |
BETWEEN ... AND ... |
zwischen zwei Werten |
IN(Liste) |
entspricht einem Wert in der Liste |
LIKE |
enthält bestimmte Zeichen |
IS NULL |
ist ein Null-Wert |
Verneinung[edit]
NOT BETWEEN, NOT IN, NOT LIKE, IS NOT NULL
Beispiele[edit]
Beispiel 1[edit]
Auflisten aller Abteilungen, deren Abteilungsnummer größer als 20 ist.
SELECT DNAME,DEPTNO FROM DEPT WHERE DEPTNO > 20;
Beispiel 2[edit]
Bei sehr großen Tabellen kann es sinnvoll sein, nicht alle Datensätze zu lesen, sondern nur die ersten n Sätze.
SELECT rownum, empno FROM emp WHERE ROWNUM < 4;
ROWNUM EMPNO ---------------------- ---------------------- 1 7369 2 7499 3 7521
= Beispiel 3[edit]
Es sollen diejenigen Mitarbeiter ermittelt werden, die mehr Provision als Gehalt verdienen.
SELECT ENAME,SAL,COMM FROM EMP WHERE COMM > SAL;
Beispiel 4[edit]
Alle Verkäufer aus Abteilung 30, deren Gehalt größer gleich 1,500.- ist.
SELECT ENAME,SAL,DEPTNO FROM EMP WHERE JOB = ‘SALESMAN‘ AND DEPTNO = 30 AND SAL >= 1500;
Beispiel 5[edit]
Finde alle Mitarbeiter, die von Beruf MANAGER sind oder die mehr als 3,000.- verdienen.
SELECT ENAME,JOB,SAL FROM EMP WHERE JOB = ’MANAGER’ OR SAL > 3000;
Beispiel 6[edit]
Ausgabe aller Mitarbeiter aus Abteilung 10, die weder Manager noch Büroangestellte sind.
SELECT * FROM EMP WHERE NOT (JOB = ‘MANAGER‘ OR JOB = ‘CLERK‘) AND DEPTNO = 10;
Beispiel 7[edit]
Ausgabe aller Mitarbeiter, die zwischen 1200.- und 1300.- verdienen.
SELECT ENAME, JOB, SAL FROM EMP WHERE SAL BETWEEN 1200 AND 1300;
Beispiel 8[edit]
Ausgabe aller Mitarbeiter, die nicht entweder Büroangestellte, Analytiker oder Verkäufer sind.
SELECT ENAME,JOB,DEPTNO FROM EMP WHERE JOB NOT IN (‘CLERK‘,‘ANALYST‘,’SALESMAN’);
Beispiel 9[edit]
Ausgabe aller Mitarbeiter, deren Name mit M beginnt.
SELECT * FROM EMP WHERE ENAME LIKE ‘M%‘;
Beispiel 10[edit]
Ausgabe aller Mitarbeiter, deren Name fünf Zeichen lang ist, mit ALL beginnt und mit N endet.
SELECT * FROM EMP WHERE ENAME LIKE ‘ALL_N‘;
Beispiel 11[edit]
Alle Berufsbezeichnungen sollen 1x ausgegeben werden. Die Überschrift der Spalte soll BERUF sein.
SELECT DISTINCT JOB BERUF FROM EMP;
Alias[edit]
Unterschied zwischen:
Select ename, job from emp;
Und
Select ename job from emp;
Beim ersten Beispiel selektiert man die Spalten
ENAME
und
JOB
von der Tabelle
EMP
. Beim zweiten Beispiel selektiert man die Spalte
ENAME
und gibt der Spalte den Namen
JOB
.
Sortieren[edit]
Ausgabe aller Mitarbeiter aus Abteilung 30 geordnet nach ihrem Gehalt.
SELECT * FROM EMP WHERE DEPTNO = 30 ORDER BY SAL;
Ausgabe der Mitarbeiter aus Abteilung 30 absteigend geordnet nach ihrem Gehalt.
SELECT * FROM EMP WHERE DEPTNO = 30 ORDER BY SAL DESC;
Alle Mitarbeiter sollen nach ihrem Job geordnet werden, und innerhalb jedes Jobs in absteigender Reihenfolge nach ihrem Gehalt.
SELECT * FROM EMP WHERE DEPTNO = 30 ORDER BY JOB, SAL DESC;