Structured Query Language/Digicomp-Kurs 2008.12.10-11: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
(Implementierung regulärer Ausdrücke)
(Implementierung von Unterabfragen)
 
(4 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)
+
  where hoehe >= (select hoehe from pflanze order by hoehe desc limit 5,1)
  order by hoehe desc
+
  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 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:
  
<b>^[_a-zA-Z0-9-]+\.([_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]\.)+([a-zA-Z]{2,4})$</b>
+
<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 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:  
+
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
  
Im folgenden Beispiel wird für jede Pflanzenfarbe diejenige Pflanze mit dem niedrigsten Preis gefunden.
+
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, 02: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

Join