219 Shares 6857 views

SQL odrębne: opis, przykłady, właściwości

Często podczas korzystania z SQL do pobierania danych z tabel, użytkownik otrzyma zbędne dane jest istnienie absolutnie identycznych zduplikowanych wierszy. Aby uniknąć takiej sytuacji, należy użyć SQL wyraźną tezę w zdaniu Wybierz. Ten artykuł omówi przykłady użycia tego argumentu, a także sytuacje, w których stosowanie powinno być zaniechane przez argument.

Zanim przystąpimy do rozważenia konkretnych przykładów, należy utworzyć bazę danych wymaganych kilka stolików.

tabela przygotowanie

Wyobraźmy sobie, że mamy baza danych przechowuje informacje o tapecie prezentowane w dwóch tabelach. Ten oboi stół (tapety) pola (id), unikalny identyfikator typu (rodzaju tapety -, papieru, tworzyw sztucznych, itp), kolor (kolor) struct (struktury) i (cenę). I stół Ostatki (reszty) z pól id_oboi (odniesienie do unikalnego identyfikatora w tabeli Oboi) i liczby (liczba zwojów w magazynie).

Wypełnić tabelę danych. W tabeli dodać tapetę 9 rekordy:

oboi

id

typ

kolor

struct

cena

1

papier

wielokolorowy

wytłoczona

56,9

2

Papier dwuwarstwowy

beżowy

gładki

114,8

3

winylu

pomarańczowy

wytłoczona

504

4

runo

beżowy

wytłoczona

1020,9

5

Papier dwuwarstwowy

beżowy

gładki

150,6

6

papier

wielokolorowy

gładki

95.4

7

winylu

brązowy

gładki

372

8

runo

biały

wytłoczona

980,1

9

płótno

różowy

gładki

1166,5

Stół ze szczątkami – i dziewięć rekordów:

Ostatki

id_oboi

liczyć

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Przystępujemy do opisu wyraźnej kolejności w SQL.

Umieścić wyraźny w klauzuli SELECT

wyraźny argument powinien być umieszczony bezpośrednio po Wybierz słowo kluczowe w zapytaniach. Zgłosił się do wszystkich kolumn określonych w zdaniu wybór, ponieważ zostanie on wykluczony z końcowego wyniku zapytania jest absolutnie identyczne ciągi. Tak więc, gdy wystarczy podać pisząc SQL «» wybrać wyraźną prośbę. Wyjątkiem jest stosowanie odrębnych wewnątrz funkcji agregujących, które wyglądają na trochę później.

Należy pamiętać, że większość z bazy danych i nie rozpoznaje typ żądania:

SELECT wyraźną Ostatki.Count, odrębną Oboi *.

Z oboi

INNER JOIN Ostatki NA Oboi.id = Ostatki.id_oboi

Nie uznano za argumentem wielokrotnie lub raz określony, ale przed drugim, trzecim lub innego wybranego kolumny. Dostaniesz błąd odnoszący się do błędu w składni.

Zastosowanie różnych zapytań w standardowych

Jest oczywiste, że z odpowiednimi tabelami konstrukcji budowlanych i napełnianie ich w jednej tabeli wykluczyć sytuacji, gdy nie są absolutnie identyczne ciągi. Dlatego wykonanie kwerendy «Wybierz odrębną *» z próbką jednej tabeli jest niepraktyczne.

Rozważmy sytuację, gdy musimy wiedzieć, jakiego rodzaju mamy tapetę, po prostu dla wygody, aby posortować według typu:

SELECT Oboi.type

Z Oboi kolejności według rodzaju

I uzyskać wyniki:

typ

papier

papier

Papier dwuwarstwowy

Papier dwuwarstwowy

winylu

winylu

płótno

runo

runo

Jak widać w tabeli są zduplikowane wiersze. Jeśli dodamy do tego wniosku Wybierz odrębne:

SELECT wyraźną Oboi.type

Z Oboi kolejności według rodzaju

możemy uzyskać wynik bez powtórzeń:

typ

papier

Papier dwuwarstwowy

winylu

płótno

runo

Zatem, jeżeli prawidłowo wprowadzić dane w tabeli, a następnie natychmiast po rozmowie telefonicznej lub żądanie nabywców możemy odpowiedzieć, że ciecz tapety, tapety z włókna szklanego i akrylu dostępne w sklepie nie są. Biorąc pod uwagę, że wiele sklepów nie jest zazwyczaj ograniczona do stu tapety, przeglądać listę nieunikalne typów byłoby dość pracochłonne.

Zastosowanie różnych funkcji agregujących w ramach

SQL odrębne argument może być używany z dowolnym funkcji zbiorczej. Ale dla MIN i MAX jego stosowania będzie miał żadnego wpływu, ale przy obliczaniu kwoty lub wartość średnią rzadko jest sytuacja, w której nikt nie będzie musiał uwzględniać powtórzeń.

Załóżmy, że chcemy sprawdzić możliwości naszego magazynu i wysłać ten wniosek, oblicza całkowita liczba zwojów w magazynie:

SELECT SUM (Ostatki.count)

Z Ostatki

Żądanie będzie dać odpowiedź 143. Jeżeli jednak będziemy zmieni się na:

WYBIERZ suma (odrębne Ostatki.count)

Z Ostatki

otrzymujemy całkowitą 119, jak tapety numerów części 3 i 7 są w stanie, w tej samej ilości. Jednak oczywiste jest, że odpowiedź jest błędna.

Najczęściej stosowane w SQL odrębna funkcja odliczania. Tak, możemy z łatwością dowiedzieć się, jak wiele unikalnych rodzajów tapet, mamy:

Ilość SELECT (odrębne Oboi.type)

Z oboi

I uzyskać wynik 5 – zwykły papier i dwuwarstwowej winyl i włókniny. Na pewno wszystko widział reklamy, takich jak: „Tylko mamy ponad 20 różnych rodzajów tapet”, przez co rozumie się, że ten sklep jest nie tylko kilkadziesiąt bułki i różne tapety nowoczesnych typów.

Ciekawostką jest, że w tej samej kwerendy, można określić wiele funkcji, takich jak atrybut Hrabia odrębne i bez niego. Jest to jedyna sytuacja, w której odrębne w Select'e mogą występować kilka razy.

Kiedy zrezygnować z korzystania z argumentem

Z wykorzystaniem SQL odrębny argument powinien być opuszczony w jednym z dwóch przypadków:

  1. Wykonać wybór stołów i są pewni, w niepowtarzalnej wartości każdego. W tym przypadku, użycie argumentu jest niewłaściwe, ponieważ jest to dodatkowe obciążenie na serwerze lub klienta (w zależności od typu DBMS).
  2. Czy boisz się utraty danych. Wyjaśnijmy.

Załóżmy, że szef prosi, aby wymienić tapetę, że masz, ze wskazaniem tylko dwie kolumny – typ i kolor. Z przyzwyczajenia, dajesz argument odrębny:

SELECT wyraźną Oboi.type, Oboi.color

Z oboi

ORDER BY Oboi.type

I – stracić niektóre dane:

typ

kolor

papier

wielokolorowy

Papier dwuwarstwowy

beżowy

winylu

brązowy

winylu

pomarańczowy

płótno

różowy

runo

beżowy

runo

biały

Może to sprawiać wrażenie, że tapeta papieru (konwencjonalne i dual-layer) mamy tylko jeden umysł, w rzeczywistości, nawet w naszym stoliku dwóch artykułu (wynik bez odrębny):

typ

kolor

papier

wielokolorowy

papier

wielokolorowy

Papier dwuwarstwowy

beżowy

Papier dwuwarstwowy

beżowy

winylu

brązowy

winylu

pomarańczowy

płótno

różowy

runo

biały

runo

beżowy

Dlatego, podobnie jak w piśmie wszelkie wnioski z argumentem odrębnego trzeba być ostrożnym i właściwe w sprawach dotyczących jego stosowania, w zależności od zadania.

alternatywą odrębne

Wbrew argumentacji odrębnego – Wszystkie argument. W skardze zduplikowane wiersze są przechowywane. Ale jako domyślnej bazy danych i stwierdza, że konieczne jest, aby wyświetlić wszystkie wartości, argument All – to raczej kwalifikator niż rzeczywiste argumentu funkcji. Mamy nadzieję, że teraz zrozumieć, że odrębny (SQL) jest używany. Opis daje pełną informację o możliwości korzystania z tego argumentu w rozwiązywaniu różnych problemów. Wszakże, jak się okazało, nawet tak prostym argumentem w skardze ukrywa bardzo namacalny możliwość utraty niektórych danych i wyświetlać niedokładne informacje.