-- /* */
Zwischen den beiden Schlüsselworten SELECT und FROM stehen die Spalten, die zurückgegeben werden sollen. Hier können auch mathematische Ausdrücke und Literale angegeben werden.
select spaltenname1, spaltenname2 from tabellenname;Sollen alle Spalten selektiert werden, so setzen Sie anstelle der Spaltenname einfach den Stern *.
select * from dept;Es werden alle Spalten der Tabelle dept angezeigt.
select deptno, dname from dept;Es werden die Abteilungsnummern (deptno) und Abteilungsnamen (dname) aller Abteilungen angezeigt. Sollten sich in Aliasnamen Sonderzeichen oder Leerzeichen befinden, so ist der Aliasname in Anführungzeichen zu setzen.
Die Überschriften der Spalten können durch einen Alias angegeben werden (spaltenname AS aliasname). Das Wort AS kann bei Aliasnamen weggelassen werden.
select deptno as "Abteilungsnummer", dname as "Abteilungsname" from dept;Es werden die Abteilungsnummern (deptno) und Abteilungsnamen (dname) aller Abteilungen angezeigt. Die Spaltenüberschrift von depto ist Abteilungsnummer und die Spaltenüberschrift von dname ist Abteilungsname.
Zwischen SELECT und FROM kann auch eine Zeichenkette stehen. Diese muß in einfache Anführungszeichen gesetzt werden. Zwischen SELECT und FROM kann auch ein arithmetischer Ausdruck stehen.
select empno as "Mitarbeiternummer",
ename as "Mitarbeitername",
sal as "Gehalt",
sal*1.3 as "Bruttogehalt"
from emp
;
Es werden die Spalten Mitarbeiternummer (empno), Mitarbeiternamen (ename), Gehalt (sal) und Gehalt*1.3 angezeigt.
Mehrfache Zeilen werden durch DISTINCT direkt nach dem SELECT ausgeblendet.
select distinct job from emp;Es werden alle Jobs (job) der Tabelle emp angezeigt. Da einige Mitarbeiter den gleichen Job haben, tauchen diese Jobs dementsprechend mehrfach auf. Die Duplikate werden durch DISTINCT nicht angezeigt. Eine Verkettung von Spalten ist mit || möglich.
select ename || ' ist ein ' || job from emp;Es wird die Spalte ename, verkettet mit dem Literal ' ist ein' und mit job, angezeigt.
describe tabellenname;
describe employees; Name Null? Typ ------------------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIRE DATEDATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)
select spaltenname1, spaltenname2 from tabellenname where bedingung;
select ename, job from emp where job = 'MANAGER';Ermittelt werden alle Mitarbeiter (ename), bei denen der Job Manager ist.
select * from emp where hiredate = '03.12.81';Ermittelt werden alle Datensätze der Tabelle emp, bei denen das Einstellungsdatum (hiredate) 3.12.81 ist.
select * from emp where sal >= 1100;Ermittelt werden alle Datensätze der Tabelle emp, bei denen das Gehalt größer bzw. gleich 1100 ist.
select ename, job from emp where job <> 'MANAGER';Ermittelt werden alle Mitarbeiter (ename), bei denen der Job nicht Manager ist.
select * from emp where sal between 1000 and 2000;Ermittelt werden alle Datensätze der Tabelle emp, bei denen das Gehalt >= 1000 und <= 2000 ist.
select empno, ename from emp where comm is null;Ermittelt werden alle Mitarbeiter (ename) und deren Mitarbeiternummer (empno), bei denen die Spalte comm den Wert NULL besitzt.
select * from employees where city in ('London','Berlin');
Es werden alle Datensätze angezeigt, bei denen die Spalte city gleich London oder Berlin ist.
select * from emp where ename like 'F%'Ermittelt werden alle Datensätze der Tabelle emp, bei denen der Name mit 'F' beginnt.
select * from emp where ename like 'F_rd'Ermittelt werden alle Datensätze der Tabelle emp, bei denen der Name mit 'F' beginnt und an dritter und vierter Stelle 'rd' steht.
select * from emp where ename like '%g'Ermittelt werden alle Datensätze der Tabelle emp, bei denen der Name mit 'g' endet.
select * from emp where ename like '%/_%' ESCAPE '/'Ermittelt werden alle Datensätze der Tabelle emp, bei denen ein Unterstrich _ enthalten ist.
select * from emp where sal > 1000 and sal < 3000;Ermittelt werden alle Datensätze der Tabelle emp, bei denen das Gehalt größer als 1000 und kleiner als 3000 ist.
select * from emp where sal > 1000 and deptno = 30;Ermittelt werden alle Datensätze der Tabelle emp, bei denen das Gehalt größer als 1000 und die Abteilungsnummer (deptno) 30 ist.
select * from emp where sal < 1000 or sal > 3000;Ermittelt werden alle Datensätze der Tabelle emp, bei denen das Gehalt kleiner als 1000 oder größer als 3000 ist.
select * from emp where not sal > 1000;Ermittelt werden alle Datensätze der Tabelle emp, bei denen das Gehalt nicht größer als 1000 ist.
select * from emp where job not in ('CLERK', 'MANAGER');
Ermittelt werden alle Datensätze der Tabelle emp, bei denen der Job weder CLERK noch MANAGER ist.
select * from emp where sal >= 1000 and sal <= 3000 or sal > 5000;Diese Anweisung ermittelt die Mitarbeiter, deren Gehalt zwischen 1000 und 3000 liegt oder deren Gehalt größer als 5000 ist. Durch Klammersetzung kann die Reihenfolge der Abarbeitung verändert werden.
select * from emp where sal >= 1000 and (sal <= 3000 or sal > 5000);Diese Anweisung ermittelt die Mitarbeiter, deren Gehalt entweder kleiner gleich 3000 oder größer 5000 ist. Es werden nur die Datensätze angezeigt, deren Gehalt zusätzlich größer gleich 1000 ist.
Wird eine bestimmte Reihenfolge bei der Rückgabe der Datensätze gewünscht, so ist dies entsprechend durch ein Schlüsselwort ORDER BY anzugeben. Es können mehrere ORDER BY Spalten angegeben werden. Auch ist es möglich, anstelle des Spaltennamens hier den numerischen Spaltenindex anzugeben. Es kann auch nach einem Alias sortiert werden.
ASC hinter dem Sortierkriterium heißt aufsteigend sortieren. Standardmäßig wird aufsteigend sortiert. DESC hinter dem Sortierkriterium heißt absteigend sortieren.
Bei alphanumerischen Zeichen wird von A bis Z an den entsprechenden Stellen sortiert. Das früheste Datum wird bei aufsteigender Sortierung als erstes angezeigt. NULL-Werte werden bei aufsteigender Sortierung als letzte angezeigt und bei absteigender Sortierung demnach als erste.
select spaltenname1, spaltenname2 from tabellenname order by spaltenname_x, spaltenname_y .. ;
select empno, ename from emp order by empno; select empno, ename from emp order by empno asc;Es werden die Mitarbeiter aufsteigend sortiert nach der Mitarbeiternummer (empno) angezeigt.
select empno, ename from emp order by empno desc;Es werden die Mitarbeiter absteigend sortiert nach der Mitarbeiternummer (empno) angezeigt
select empno, ename from emp order by job,hiredate;Es werden die Mitarbeiter aufsteigend sortiert nach ihrem Job (job) angezeigt. Bei Mitarbeitern mit gleichem Job wird nochmals aufsteigend nach dem Einstellungsdatum sortiert.
select empno as Mitarbeiternummer, ename from emp order by Mitarbeiternummer ;Es werden die Mitarbeiter aufsteigend sortiert nach der Mitarbeiternummer (empno) angezeigt. Als Sortierkriterium wurde hier der Alias einer Spalte benutzt.
select empno as Mitarbeiternummer, ename from emp order by 2;Es werden die Mitarbeiter aufsteigend sortiert nach ihrem Namen (ename) angezeigt. Als Sortierkriterium wurde hier der Spaltenindex benutzt (2 Spalte zwischen select und from).
Stefan Hietel dama.go GmbH, Robert Warnke http://rowa.giso.de