/ / SQL erillinen: kuvaus, esimerkit, ominaisuudet

SQL erillinen: kuvaus, esimerkit, ominaisuudet

Usein, kun käytetään SQL-näytteenottoainformaatiota taulukoista, käyttäjä saa ylimääräisiä tietoja, jotka koostuvat täysin samanlaisten päällekkäisten rivien läsnäolosta. Jos haluat jättää tämän tilanteen pois, käytä SQL-erillistä argumenttia Select-lausekkeessa. Tässä artikkelissa tarkastelemme esimerkkejä tämän argumentin käyttämisestä sekä tilanteista, joissa on parempi hylätä argumentti.

Ennen kuin käsittelemme tiettyjä esimerkkejä, luodaan muutamia tarpeellisia taulukoita tietokantaan.

sql erillinen

Taulukoiden valmistelu

Kuvittele, että olemme tallentaneet tietokantaammetietoa taustakuvasta, joka esitetään kahdessa taulukossa. Tämä on Oboi-taulukko (taustakuva), jossa kentät id (ainutkertainen tunniste), tyyppi (tapetit - paperi, vinyyli jne.), Väri, rakenne ja hinta. Ja Ostatki-taulukko (jäänteet) id_oboi-kenttien kanssa (viittaus Oboi-taulukon yksilölliseen tunnisteeseen) ja laskea (rullojen määrä varastossa).

Täytä taulukot tiedot. Taulussa taulukko lisätä 9 merkinnät:

oboi

id

tyyppi

väri

struct

hinta

1

paperi

monivärinen

kohokuvioitu

56,9

2

Kaksikerroksinen paperi

beige

sileä

114,8

3

vinyyli

oranssi

kohokuvioitu

504

4

Ei-kudotut fleecekäsineet

beige

kohokuvioitu

1020,9

5

Kaksikerroksinen paperi

beige

sileä

150,6

6

paperi

monivärinen

sileä

95,4

7

vinyyli

ruskea

sileä

372

8

Ei-kudotut fleecekäsineet

valkoinen

kohokuvioitu

980,1

9

kangas

pinkki

sileä

1166,5

Jäljelle jäävässä taulukossa on myös yhdeksän kirjaa:

Ostatki

id_oboi

laskea

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Aloitetaan kuvaamalla, miten käyttää erillistä SQL: ää.

Aseta erillinen valinta-lausekkeeseen

Erilainen argumentti olisi asetettava välittömästi sen jälkeenValitse avainsana kyselyissä. Sitä sovelletaan välittömästi kaikkiin Select-lausekkeeseen määriteltyihin sarakkeisiin, koska se sulkee pois täysin samanlaiset rivit kyselyn tuloksesta. Täten riittää, että määritetään "valitse erillinen" kirjoitettaessa SQL-kyselyä. Ainoa poikkeus on erillisten yhdistettyjen toimintojen käyttö, jota harkitsemme hieman myöhemmin.

sql valitse erillinen

On muistettava, että useimmat DBMS-järjestelmät eivät tunnista pyyntösi näin:

SELECT erillinen Ostatki.Count, erillinen Oboi. *

Oboista

INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi

Tässä argumentti määritellään useita kertoja tai määritetään kerran, mutta ennen toisen, kolmannen tai muun valittavissa olevaa saraketta. Saat virheen viittaamalla syntaksin epätarkkuuksiin.

Käyttämällä erillisiä vakiokyselyissä

Ilmeisesti, hyvin jäsennellyllä rakenteellataulukot ja niiden täyttö, yhdessä taulukossa, tilanteet suljetaan pois, kun täysin samanlaisia ​​merkkijonoja esiintyy. Siksi "Valitse erillinen" -kyselyn suorittaminen, jossa on valinta yhdestä taulukosta, on käytännöllisesti katsoen epäkäytännöllinen.

erillinen sql

Kuvittele tilanne, jossa meidän on selvitettävä, minkä tyyppinen taustakuva meillä on, vain mukavuus, lajitella tyypin mukaan:

SELECT Oboi.type

Oboista tilauksesta

Ja saamme tuloksen:

tyyppi

paperi

paperi

Kaksikerroksinen paperi

Kaksikerroksinen paperi

vinyyli

vinyyli

kangas

Ei-kudotut fleecekäsineet

Ei-kudotut fleecekäsineet

Kuten näet, taulukossa on päällekkäisiä rivejä. Jos lisäämme Valitse erillinen lauseke:

SELECT erillinen Oboi.type

Oboista tilauksesta

sitten saamme tuloksen toistamatta:

tyyppi

paperi

Kaksikerroksinen paperi

vinyyli

kangas

Ei-kudotut fleecekäsineet

Näin ollen, jos tiedot syötettiin oikeintaulukko, niin heti puhelun tai ostajien pyynnöstä voimme vastata siihen, että nestemäinen taustakuva, taustakuva ja akryylimaalaus ei ole saatavilla kaupassa. Koska valikoima kaupoissa ei tavallisesti rajoitu sataan taustakuvaan, olisi aivan työvoimavaltaista skannata luettelo ei-ainutlaatuisista tyypeistä.

Käytä erillisiä kokonaistoiminnoissa

SQL-erillistä argumenttia voidaan käyttää minkä tahansa kanssakokonaistoiminto. Mutta Min ja Max sen soveltaminen ei ole vaikutusta, mutta kun lasketaan summa tai keskiarvo on harvoin tilanne, jossa kukaan ei olisi otettava huomioon toistoja.

Sanotaan, että haluamme tietää, kuinka paljon varastomme on täynnä, ja lähetämme tämän vuoksi pyynnön, joka laskee telojen kokonaismäärän varastossa:

SELECT summa (Ostatki.count)

FROM Ostatki

Kysely palauttaa vastauksen 143. Jos muutetaan:

SELECT summa (erillinen Ostatki.count)

FROM Ostatki

niin saamme vain 119, koska 3 ja 7 artiklan tapetit ovat varastossa samassa määrin. On kuitenkin selvää, että tämä vastaus on väärä.

Useimmiten käytetään SQL-laskutoimintoa. Joten ilman vaikeuksia voimme selvittää, kuinka monta ainutlaatuista taustakuvaa meillä on yleensä:

SELECT-määrä (erillinen Oboi-tyyppi)

Oboista

Ja saat tuloksen 5 - paperi tavalliseksi jakaksikerroksinen, vinyyli, kangas ja kuitukangas. Varmasti kaikki nähneet mainoksia kuten: "Vain meillä on yli 20 erilaista tapetti" jolla tarkoitetaan sitä, että tämä kauppa ei ole vain pari tusinaa sämpylöitä ja erilaisia ​​tapetti modernin tyyppejä.

Mielenkiintoista, voit määrittää yhdessä kyselyssäuseita laskutoimintoja erillisellä attribuutilla tai ilman sitä. Toisin sanoen tämä on ainoa tapaus, jossa Select ei ole läsnä useammin kuin kerran.

Milloin hylätä argumentin käyttö

SQL-erillisen argumentin käyttö on hylättävä kahdella tavalla:

  1. Valitset taulukoista ja olet varmaarvojen ainutlaatuisuus kussakin. Tässä tapauksessa argumentin käyttö on epätodennäköistä, koska tämä on lisäkuorma palvelimelle tai asiakkaalle (riippuen DBMS-tyypistä).
  2. Pelkäät menettää tarvittavat tiedot. Selitämme.

Oletetaan, että pomo pyytää sinua näyttämään luettelon taustakuvasta, joka osoittaa vain kaksi saraketta - tyyppiä ja väriä. Tyypillisesti määrität argumentin erilainen:

SELECT erillinen Oboi.type, Oboi.color

Oboista

ORDER BY Oboi.type

Ja - menettää joitain tietoja:

tyyppi

väri

paperi

monivärinen

Kaksikerroksinen paperi

beige

vinyyli

ruskea

vinyyli

oranssi

kangas

pinkki

Ei-kudotut fleecekäsineet

beige

Ei-kudotut fleecekäsineet

valkoinen

Näyttää siltä, ​​että meillä on vain yksi paperityyppinen tapetti (perinteinen ja kaksikerroksinen), vaikka itse asiassa pienessä pöydässäkin meillä on kaksi artikkelia (tulos ilman erillistä):

tyyppi

väri

paperi

monivärinen

paperi

monivärinen

Kaksikerroksinen paperi

beige

Kaksikerroksinen paperi

beige

vinyyli

ruskea

vinyyli

oranssi

kangas

pinkki

Ei-kudotut fleecekäsineet

valkoinen

Ei-kudotut fleecekäsineet

beige

Siksi, kuten kirjoitettaessa mitä tahansa kyselyä, erillisellä argumentilla täytyy olla varovainen ja oikein ratkaista ongelma sen sovelluksesta riippuen käsillä olevasta tehtävästä.

Vaihtoehtoinen erillinen

Argumentin vastakohta on argumenttiKaikki. Kun käytät sitä, kaksoiskappaleet tallennetaan. Mutta koska DBMS olettaa, että kaikkien arvojen tulostaminen on välttämätöntä, Kaikki argumentti on tarkempi kuin todellinen funktionaalinen argumentti.

erillinen sql-kuvaus
Toivomme, että nyt ymmärrät, milloinkäytetään erillistä (SQL). Kuvaus antoi sinulle täydelliset tiedot tämän väitteen soveltamisen soveltuvuudesta erilaisten ongelmien ratkaisemiseksi. Loppujen lopuksi, kuten käy ilmi, jopa tällainen yksinkertainen argumentti sen hakemuksessa piilottaa erittäin tuntuvaa todennäköisyyttä menettää joitakin tietoja ja johtaa epätarkkoja tietoja.

Lue lisää: