Structured Query Language/Digicomp-Kurs 2008.12.10-11

Aus Mikiwiki
Wechseln zu: Navigation, Suche

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

Join