809 Shares 1137 views

SQL verschieden: Beschreibung, Beispiele, Eigenschaften

Oft, wenn Sie SQL verwenden, um Daten aus den Tabellen abgerufen werden, erhält der Benutzer die redundanten Daten die Existenz eines absolut identischen doppelten Zeilen ist. Um diese Situation zu vermeiden, verwenden Sie SQL deutliches Argument in dem Satz auswählen. In diesem Artikel werden Beispiele für die Verwendung dieses Arguments diskutieren, sowie Situationen, in denen die Klage mit dem Argument aufgegeben werden.

Bevor wir die spezifischen Beispiele betrachten gehen, erstellen Sie die Datenbank ein paar Tabellen erforderlich.

Vorbereitungstisch

Stellen Sie sich vor, dass wir eine Datenbank speichert Informationen über die Tapete in zwei Tabellen dargestellt haben. Diese Tabelle oboi (Tapete) mit dem ID-Feldern (Unique Identifier), vom Typ (Art der Tapete -. Papier, Vinyl, etc.), Farbe (Farbe), eine Struktur (Struktur) und der Preis (Preis). Und Tabelle ostatki (Reste) mit id_oboi Feldern (ein Verweis auf die eindeutige Kennung in der Tabelle Oboi) und Zählung (die Anzahl der Rollen im Lager).

Füllen Sie die Datentabelle. In der Tabelle sind die Tapete 9 Datensätze hinzufügen:

Oboi

Identifikation

Typ

Farbe

struct

Preis

1

Papier

Multicolor

erhaben

56,9

2

Papier doppellagig

beige

glatt

114,8

3

Vinyl

orange

erhaben

504

4

Vlies

beige

erhaben

1020,9

5

Papier doppellagig

beige

glatt

150,6

6

Papier

Multicolor

glatt

95,4

7

Vinyl

braun

glatt

372

8

Vlies

weiß

erhaben

980,1

9

Tuch

pink

glatt

1166,5

Die Tabelle mit den Überresten – und neun Datensätze:

ostatki

id_oboi

zählen

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Wir gehen auf die Beschreibung der verschiedenen Reihenfolge in SQL.

Legen Sie verschiedene in der Select-Klausel

deutliches Argument sollte unmittelbar nach dem Select Schlüsselwort in den Abfragen gestellt werden. Er bewarb sich auf alle Spalten in dem Satz Select angegeben, weil es aus dem letzten Abfrageergebnis ausgeschlossen wird, ist absolut identische Strings. So ist einmal genug, um zu spezifizieren, wenn SQL Schreiben Anfrage «deutliche wählen». Die Ausnahme ist die Verwendung von unterschiedlichen innerhalb Aggregatfunktionen, die später in einem kleinen aussehen.

Es sollte, dass die meisten der Datenbank in Erinnerung bleiben und erkennt nicht Ihre Art der Anfrage:

Select distinct Ostatki.Count, verschiedene Oboi. *

VON oboi

INNER JOIN ostatki ON Oboi.id = Ostatki.id_oboi

Es wurde mehrmals nicht Argument betrachtet oder einmal angegeben, aber vor der zweiten, dritten oder einer anderen ausgewählten Spalt. Sie erhalten einen Fehler in der Syntax einen Fehler mit Bezug zu bekommen.

Anwendung unterschiedliche Abfragen in Standard

Es ist offensichtlich, dass mit dem richtigen Baustruktur Tabellen und sie in einer einzigen Tabelle füllt die Situation ausgeschlossen, wenn es absolut identische Strings sind. Daher ist die Ausführung der Abfrage «deutliche * Wählen Sie» mit einer Probe einer Tabelle ist nicht praktikabel.

Betrachten wir eine Situation, wenn wir wissen müssen, welche Art wir Tapete haben, nur für die Bequemlichkeit, nach sortieren:

SELECT Oboi.type

VON Oboi nach dem Typ

Und die Ergebnisse erhalten:

Typ

Papier

Papier

Papier doppellagig

Papier doppellagig

Vinyl

Vinyl

Tuch

Vlies

Vlies

Wie in der Tabelle zu sehen gibt es doppelte Zeilen. Wenn wir den Vorschlag auswählen deutlich hinzu:

Select distinct Oboi.type

VON Oboi nach dem Typ

erhalten wir das Ergebnis ohne Wiederholung:

Typ

Papier

Papier doppellagig

Vinyl

Tuch

Vlies

Wenn also richtig Daten in einer Tabelle eingeben, dann sofort nach einem Anruf oder Wunsch der Kunden können wir antworten, dass der flüssige Tapete, Fiberglas und Acryl verfügbar Tapete im Laden nicht. Da die Auswahl an Geschäften ist in der Regel nicht begrenzt auf hundert Tapeten, sehen die Liste der nicht eindeutigen Typen wären sehr arbeitsintensiv sein.

Anwendung unterschiedlicher Aggregatfunktionen innerhalb

SQL deutliches Argument kann mit jeder Aggregatfunktion verwendet werden. Aber für die Min- und Max ihrer Anwendung wird keine Auswirkungen haben, aber bei der Berechnung der Summe oder den Mittelwert ist selten eine Situation, wo niemand zu berücksichtigen, würde die Wiederholungen.

Angenommen, wir die Fähigkeit unseres Lagers überprüfen möchten und diese Anforderung zu senden, berechnet die Gesamtzahl der Spulen auf Lager:

SELECT sum (Ostatki.count)

VON ostatki

Anfrage gibt der Antwort 143. Wenn jedoch werden wir ändern:

SELECT sum (distinct Ostatki.count)

VON ostatki

erhalten wir die Gesamt 119, als Hintergrundbild für Teilenummern 3 und 7 sind auf Lager in dem gleichen Betrag. Es ist jedoch offensichtlich, dass die Antwort falsch ist.

Am häufigsten in SQL bestimmten Funktion Count verwendet. So können wir leicht herausfinden, wie viele einzigartige Arten von Tapeten, haben wir:

SELECT count (distinct Oboi.type)

VON oboi

Und Sie erhalten das Ergebnis von 5 – gewöhnliches Papier und Double-Layer-Vinyl und Vliesstoff. Sicherlich alle Anzeigen zu sehen, wie: „Nur wir über 20 verschiedene Arten von Tapeten haben“, womit gemeint ist, dass dieses Geschäft Dutzend Rollen nicht nur ein paar ist und eine Vielzahl von Tapeten moderner Arten.

Interessant ist, dass in der gleichen Abfrage, können Sie mehrere Funktionen spezifizieren können wie Count DISTINCT Attribut, und ohne sie. Das ist die einzige Situation, in der verschiedenen in Select'e kann mehrfach vorhanden sein.

Wenn die Verwendung des Arguments aufgeben

Von der Verwendung von unterschiedlichem Argumente SQL sollte in einem von zwei Fällen verzichtet werden:

  1. Sie führen eine Auswahl von Tabellen und sind zuversichtlich, in den einzigartigen Wert jeder. In diesem Fall ist die Verwendung des Arguments ungeeignet, weil es eine zusätzliche Last auf dem Server oder Client (je nach Art des DBMS) ist.
  2. Haben Sie Angst vor Datenverlust. Lassen Sie uns erklären.

Angenommen Chef bittet Sie die Tapete aufzulisten, die Sie haben, mit der Angabe von nur zwei Spalten – die Art und Farbe. Aus Gewohnheit, geben Sie ein Argument verschieden:

Select distinct Oboi.type, Oboi.color

VON oboi

ORDER BY Oboi.type

Und – verlieren einige Daten:

Typ

Farbe

Papier

Multicolor

Papier doppellagig

beige

Vinyl

braun

Vinyl

orange

Tuch

pink

Vlies

beige

Vlies

weiß

Es kann den Eindruck erwecken, dass die Papiertapete (konventionell und Dual-Layer) haben wir nur ein Geist, in der Tat, auch in unserem kleinen Tisch von zwei Artikeln (ohne deutliche Folge):

Typ

Farbe

Papier

Multicolor

Papier

Multicolor

Papier doppellagig

beige

Papier doppellagig

beige

Vinyl

braun

Vinyl

orange

Tuch

pink

Vlies

weiß

Vlies

beige

Daher wird, wie in jede Anforderung mit dem Argument deutliche Notwendigkeit, das Schreiben sorgfältig und kompetent sein über ihre Anwendung zu entscheiden, abhängig von der Aufgabe.

Alternative deutliche

Im Gegensatz zu dem Argument distinct – All Argument. In ihrer Anwendung doppelte Zeilen gespeichert werden. Aber als Standarddatenbank und stellt fest, dass es notwendig ist, um alle Werte anzuzeigen, das Argument All – es ist eher ein Qualifier als das tatsächliche Funktionsargument. Wir hoffen, dass Sie jetzt verstehen, dass verschiedene (SQL) verwendet wird. Beschreibung gibt Ihnen umfassende Informationen über die Machbarkeit der Verwendung dieses Arguments in verschiedene Probleme zu lösen. Denn wie sich herausstellte, selbst ein so einfaches Argument in seiner Anwendung verbirgt sehr konkrete Möglichkeit, einige Daten zu verlieren und ungenaue Informationen angezeigt werden soll.