Select ...
Qeuery Optimizer
Mittels der Select- Befehl können Teilmengen
aus der Datenbank extrahiert und verarbeitet werden. Dabei wird die
Herkunft der Daten, Einschränkungen, die sie erfüllen
deklariert. Der Datenbankserver erstellt aus der Deklaration
selbständig ein Programm, dessen Ausführung die gewünschte
Datenmenge liefert. Das Ergebnis wird Resultset
Die Select- Anweisung gliedert sich wie folgt auf:
Die Resultsets enthalten alle Spalten aller
betroffener Tabellen:
Durch die Liste von Spaltenoperationen wird das
Format des Resultset bestimmt. Im einfachsten Fall können alle
Spalten der ausgewählten Datensätze angezeigt werden
Spaltenoperationen werden in aggregierende und
nicht aggregierende unterscheiden:
Aggregierende Spaltenoperationen bilden die Werte von 1- N Zeilen
innerhalb einer Spalte auf einen Wert ab:
Nicht aggregierende Spaltenoperationen bilden 1-N
Werte innerhalb einer Zeile auf einen Wert ab:
Das Ergebniss einer Select- Abfrage ist ein
Resultset, bestehend aus Tabellenzeilen. Das verschiedene
Tabellenzeilen dabei identische Inhalte liefern, ist nicht
ausgeschlossen. Durch die Distinct Dierektive wird das
Resultset in seinem Umfang so reduziert, daß jede Tabellenzeile
einen einmaligen Inhalt innerhalb des Resultsets besitzt:
In der where -
Klausel wird ein Filterausdruck definiert, den alle Zeilen des
Resultsets erfüllen müssen. Der Filterausdruck entsteht
durch Verknüpfung von Vergleichen und Prädikaten mittels
logischer Operatoren:
+-----------------+
Select- Befehl --->| |
| Datenbankserver |
{Resultset} <---| |
+-----------------+
select <Liste von Spaltenoperationen> | *
from <Liste der Datenquellen>
where <Filterausdruck, den die ausgewählten Zeilen erfüllen müssen>
group by <Liste der Spalten, bezüglich der zu gruppieren ist>
having <Filterausdruck, den alles ausgewählten Gruppen erfüllen müssen>
order by <Liste der Spalten, bezüglich der zu sortieren ist>
Select *
use dmsmin
go
select *
from data.FileInfos
Select <Liste von Spaltenoperationen>
Spaltenoperationen
|
+-------------+-------------+
| |
aggregierende nicht aggregierende
-- Gesamter Speicherplatzverbrauch mittels sum- Aggregatfunktion berechnen
select Sum(SizeInBytes)
from data.FileInfos
-- Größe der kleinsten Datei bestimmen
select Min(SizeInBytes)
from data.FileInfos
-- Größe der größten Datei bestimmen
select Max(SizeInBytes)
from data.FileInfos
-- Durchschnittliche Dateigröße bestimmen
select Avg(SizeInBytes)
from data.FileInfos
-- Wie viel Zeilen hat die Tabelle FileInfos
select count(*) As [Anzahl + Zeilen]
from data.FileInfos
-- Auswahl von Spalten (Spaltenfunktionen sind 1:1 Abbildungen)
select [name], ext, SizeInBytes
from data.FileInfos
–- Zusammenfassen von Dateiname und Extension zum vollständigen Dateiname
–- Umrechnen der SizeInBytes in Kilobyte. Das Ergebnis wird auf 3 Nachkommastellen gerundet
select [name] + ext As [Filename], round(Cast(SizeInBytes as float)/1024, 3) as SizeInKB
from data.FileInfos
–- Position des Punktes innerhalb des Zeichenkettenwertes der Spalte Name mittels
–- charindex- Spaltenoperation
select charindex('.', [name])
from data.FileInfos
Select distinct – Entfernen von Dubletten
select distinct ext from data.FileInfos
Select ... where – Auswahl der Zeilen
use dmsmin
go
–- Einschränken der Datensätze auf Dateien kleiner 1 Kilobyte
select [name], SizeInBytes
from data.FileInfos
where SizeInBytes < 1024
-- Einschränken der Datensätze auf html und xml- Dateien kleiner 1 Kilobyte
select [name], SizeInBytes
from data.FileInfos
where SizeInBytes < 1024 and ext = 'htm' or ext = 'xml'
-- Einschränken der Datensätze auf html und xml- Dateien kleiner 1 Kilobyte
select [name], SizeInBytes
from data.FileInfos
where SizeInBytes < 1024 and (ext = '.htm' or ext = '.xml')
-- Einschränken der Datensätze auf html und xml- Dateien kleiner 1 Kilobyte
select [name], SizeInBytes
from data.FileInfos
where SizeInBytes < 1024 and (ext like '.htm%' or ext = '.xml')
-- Einschränken der Datensätze auf html und xml- Dateien kleiner 1 Kilobyte
select [name], SizeInBytes
from data.FileInfos
where SizeInBytes < 1024 and (ext in ('.htm', '.html', '.xml'))
-- Einschränken der Datensätze auf Dateien kleiner 1 Kilobyte, die weder html noch xml sind
select [name], SizeInBytes
from data.FileInfos
where SizeInBytes < 1024 and (ext not in ('.htm', '.html', '.xml'))