Structured Query Language/Digicomp-Kurs 2008.12.10-11: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) |
||
Zeile 28: | Zeile 28: | ||
Mysql | Mysql | ||
pflanzenname from pflanze where pflanzenname regexp '^[abcm].*' order by pflanzenname | select pflanzenname from pflanze where pflanzenname regexp '^[abcm].*' order by pflanzenname | ||
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 |
Version vom 23. Februar 2009, 17:07 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].*' order by pflanzenname
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 ist, 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
Im folgenden Beispiel wird für jede Pflanzenfarbe 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