Structured Query Language/Digicomp-Kurs 2008.12.10-11: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) |
Michi (Diskussion | Beiträge) |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 15: | Zeile 15: | ||
select pflanzenname,hoehe | select pflanzenname,hoehe | ||
from pflanze | from pflanze | ||
where hoehe >= (select hoehe from pflanze order by hoehe desc limit 5,1) | |||
order by hoehe desc | |||
Siehe auch: http://troels.arvin.dk/db/rdbms/#select-limit | Siehe auch: http://troels.arvin.dk/db/rdbms/#select-limit | ||
Zeile 28: | Zeile 28: | ||
Mysql | Mysql | ||
select pflanzenname from pflanze where pflanzenname regexp '^[abcm].*' | select pflanzenname from pflanze where pflanzenname regexp '^[abcm].*' | ||
Siehe auch: http://dev.mysql.com/doc/refman/5.0/en/regexp.html | Siehe auch: http://dev.mysql.com/doc/refman/5.0/en/regexp.html | ||
Zeile 34: | Zeile 34: | ||
Beispiel für einen regulären Ausdruck zur Plausibilitätsprüfung einer E-Mail-Adresse unter PHP: | Beispiel für einen regulären Ausdruck zur Plausibilitätsprüfung einer E-Mail-Adresse unter PHP: | ||
<pre class=wiki> | |||
^[_a-zA-Z0-9-]+\.([_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]\.)+([a-zA-Z]{2,4})$ | |||
</pre> | |||
=== Implementierung von "select into" === | === Implementierung von "select into" === | ||
Zeile 45: | Zeile 47: | ||
create table pflanze_kopie like pflanze | create table pflanze_kopie like pflanze | ||
insert into pflanze_kopie select * from pflanze | insert into pflanze_kopie select * from pflanze | ||
Zeile 51: | Zeile 54: | ||
=== Implementierung von Unterabfragen === | === Implementierung von Unterabfragen === | ||
Es folgen zwei weitere Beispiele für Unterabfragen, die mit einem Join nicht zu realisieren | Es folgen zwei weitere Beispiele für Unterabfragen, die mit einem Join nicht zu realisieren sind, da für eine der Tabellen eine Zusammenfassung erfolgt. | ||
Gefunden werden hier alle Datensätze in der Tabelle "pflanze", die einen Wert enthalten, der in einer gegebenen Spalte (hier "hoehe") zweimal auftritt: | |||
select * | select * | ||
Zeile 58: | Zeile 63: | ||
order by hoehe | order by hoehe | ||
Für jede Pflanzenfarbe wird diejenige Pflanze mit dem niedrigsten Preis gefunden. | |||
select farbe, pflanzenname, preis as 'Niedrigster Preis' | select farbe, pflanzenname, preis as 'Niedrigster Preis' |
Aktuelle Version vom 11. Juni 2011, 00:09 Uhr
FAQ
Implementierung von "top"
Microsoft SQL Server
select pflanzenname,hoehe top 5 from pflanze order by hoehe desc
select pflanzenname,hoehe top 5 with ties from pflanze order by hoehe desc
Mysql
select pflanzenname,hoehe from pflanze order by hoehe desc limit 5
select pflanzenname,hoehe from pflanze where hoehe >= (select hoehe from pflanze order by hoehe desc limit 5,1) order by hoehe desc
Siehe auch: http://troels.arvin.dk/db/rdbms/#select-limit
Implementierung regulärer Ausdrücke
Microsoft SQL Server
select pflanzenname from pflanze where pflanzenname like '[abcm]%'
Mysql
select pflanzenname from pflanze where pflanzenname regexp '^[abcm].*'
Siehe auch: http://dev.mysql.com/doc/refman/5.0/en/regexp.html
Beispiel für einen regulären Ausdruck zur Plausibilitätsprüfung einer E-Mail-Adresse unter PHP:
^[_a-zA-Z0-9-]+\.([_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]\.)+([a-zA-Z]{2,4})$
Implementierung von "select into"
Microsoft SQL Server
select * into pflanze_kopie from pflanze
Mysql
create table pflanze_kopie like pflanze insert into pflanze_kopie select * from pflanze
Siehe auch: http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-select-into-table.html
Implementierung von Unterabfragen
Es folgen zwei weitere Beispiele für Unterabfragen, die mit einem Join nicht zu realisieren sind, da für eine der Tabellen eine Zusammenfassung erfolgt.
Gefunden werden hier alle Datensätze in der Tabelle "pflanze", die einen Wert enthalten, der in einer gegebenen Spalte (hier "hoehe") zweimal auftritt:
select * from pflanze as p where 2 = (select count(*) from pflanze where pflanze.hoehe = p.hoehe) order by hoehe
Für jede Pflanzenfarbe wird diejenige Pflanze mit dem niedrigsten Preis gefunden.
select farbe, pflanzenname, preis as 'Niedrigster Preis' from pflanze as p where preis = (select min(preis) from pflanze where farbe = p.farbe) order by farbe
Weblinks
- Mysql (Mysql.com) - offizielle Homepage
- Comparison of different SQL implementations (Troels.Arvin.dk)
Join
- Relationale Datenbanken (Andreas Kelz)
- Datenbankoperationen (H. W. Lang)
- MySQL: Komplexe Abfragen mit Joins meistern