/ / SQL erillinen: kuvaus, esimerkit, ominaisuudet

SQL-selkeä: kuvaus, esimerkit, ominaisuudet

Usein, kun noutaa SQL: täTietoja taulukoista, käyttäjä saa redundantin datan, joka koostuu ehdottoman samanlaisten toistuvien rivien läsnäolosta. Voit poistaa tämän tilanteen käyttämällä SQL-selkeää argumenttia Select-lauseessa. Tässä artikkelissa käsitellään esimerkkejä väitteen käytöstä sekä tilanteita, joissa on parempi kieltäytyä käyttämästä väitettä.

Ennen kuin alamme harkita tiettyjä esimerkkejä, luomme pariin tarvittavia taulukoita tietokantaan.

Sql selkeä

Pöydän valmistelu

Kuvitellaan, että tietokanta tallentaatiedot taustakuvasta, esitetty kahdessa taulukossa. Tämä on Oboi-taulukko (taustakuva), jossa on kentät id (yksilöivä tunniste), tyyppi (taustakuvan tyyppi - paperi, vinyylilaji jne.), Väri (väri), rakenne (rakenne) ja hinta (hinta). Ja Ostatki-taulukko (jäännökset) kentillä id_oboi (linkki yksilölliseen tunnisteeseen Oboi-taulukossa) ja count (rullien määrä varastossa).

Täytä taulukot tiedoilla. Lisää taulukkoon 9 merkintää taustakuvilla:

tapetti

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

Kuitukangas

beige

kohokuvioitu

1020,9

5

Kaksikerroksinen paperi

beige

sileä

150,6

6

paperi

monivärinen

sileä

95,4

7

Vinyyli

Ruskea

sileä

372

8

Kuitukangas

Valkoinen

kohokuvioitu

980,1

9

Kudos

Vaaleanpunainen

sileä

1166,5

Taulukossa on myös yhdeksän jäännösmerkintää:

Ostatki

id_oboi

Kreivi

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Aloitetaan kuvaamaan kuinka erottuvuutta käytetään SQL: ssä.

Sijoita erillinen Select-lauseeseen

Erillinen tulisi sijoittaa heti sen jälkeenValitse avainsana kyselyissä. Sitä käytetään välittömästi kaikkiin Select-lausekkeessa määritettyihin sarakkeisiin, koska se sulkee ehdottomasti identtiset rivit lopullisesta kyselytuloksesta. Siksi riittää, että määrität "Valitse erillinen" kerran kirjoittaessasi SQL-kyselyä. Poikkeuksena on erillisten sisäisten aggregaattitoimintojen käyttö, jota tarkastelemme hieman myöhemmin.

sql valitse erillinen

On syytä muistaa, että useimmat DBMS: t eivät tunnista lomakkeen kyselyäsi:

VALITSE erillinen Ostatki.Count, erillinen Oboi. *

Oboilta

SISÄINEN LIITTYMINEN Ostatki ON Oboi.id = Ostatki.id_oboi

Kyseinen argumentti on määritelty tässä useita kertoja tai se on määritelty kerran, mutta ennen toista, kolmatta tai muuta valittavaa saraketta. Saat virheilmoituksen syntaksissa olevasta epätarkkuudesta.

Erillisten käyttäminen tavallisissa kyselyissä

On selvää, että rakenteen pätevällä rakenteellataulukot ja niiden täyttö, yhden taulukon sisällä, suljetaan pois tilanteista, joissa esiintyy täysin samanlaisia ​​rivejä. Siksi kyselyn "Valitse erillinen *" suorittaminen valinnalla yhdestä taulukosta on käytännössä epäkäytännöllistä.

erillinen neliömetrissä

Kuvittele tilanne, kun meidän on selvitettävä, minkä tyyppinen taustakuva meillä on, mukavuuden vuoksi lajittelemme heti tyypin mukaan:

Valitse Oboi.type

Oboi-tilauksesta tyypin mukaan

Ja saamme tuloksen:

tyyppi

paperi

paperi

Kaksikerroksinen paperi

Kaksikerroksinen paperi

Vinyyli

Vinyyli

Kudos

Kuitukangas

Kuitukangas

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

VALITSE erillinen Oboi-tyyppi

Oboi-tilauksesta tyypin mukaan

saamme tuloksen ilman toistoja:

tyyppi

paperi

Kaksikerroksinen paperi

Vinyyli

Kudos

Kuitukangas

Jos tiedot on syötetty oikeinPöydät, niin vastaamme heti puhelun tai asiakkaan pyynnöstä, että nestemäiset tapetit, lasitapetit ja akryylitapetit eivät ole saatavilla kaupassa. Ottaen huomioon, että valikoima myymälöissä ei yleensä rajoitu sadaan taustakuvaan, olisi melko työlästä etsiä luetteloa ei-ainutlaatuisista tyypeistä.

Erillisten sisäisten aggregaattitoimintojen käyttäminen

SQL-erillistä argumenttia voidaan käyttää minkä tahansa kanssaaggregaattitoiminto. Mutta Minille ja Maxille sillä ei ole vaikutusta, ja laskettaessa summaa tai keskiarvoa voit harvoin kuvitella tilanteen, jossa ei olisi tarpeen ottaa huomioon toistoja.

Oletetaan, että haluamme tietää, kuinka täynnä varastoamme on, ja lähetämme tätä varten pyynnön, joka laskee rullien kokonaismäärän varastossa:

SELECT summa (Ostatki.count)

Ostatkilta

Pyyntö palauttaa vastauksen 143. Jos muutamme seuraavaksi:

SELECT summa (erillinen Ostatki.count)

Ostatkilta

saamme vain 119, koska artikkelien 3 ja 7 alla olevia taustakuvia on varastossa samalla määrällä. Tämä vastaus ei kuitenkaan selvästikään ole oikea.

Useimmiten käytetään SQL-toiminnossa erillään Count-funktiosta. Joten voimme helposti selvittää, kuinka monta ainutlaatuista tapettityyppiä meillä on yleensä:

SELECT-määrä (erillinen Oboi.type)

Oboilta

Ja saat tuloksen 5 - paperi säännöllinen jakaksikerroksinen, vinyyli, kangas ja kuitukangas. Varmasti kaikki ovat nähneet mainoksen, kuten: "Vain meillä on yli 20 erilaista taustakuvaa!", Mikä tarkoittaa, että tässä myymälässä ei ole pari tusinaa rullaa kaikkea, vaan taustakuvia monenlaisista moderneista.

On mielenkiintoista, että yhdessä pyynnössä voit määrittääuseita laskutoimintoja, sekä erillisinä että ilman erillisiä. Toisin sanoen tämä on ainoa tilanne, jossa erillinen Select-valikossa voi näkyä useita kertoja.

Milloin hylätä argumentti

SQL: n erillinen argumentti on hylättävä yhdessä kahdesta tapauksesta:

  1. Haet taulukoista ja olet varmaarvojen ainutlaatuisuus jokaisessa. Tässä tapauksessa argumentin käyttö on epäkäytännöllistä, koska tämä on lisäkuorma palvelimelle tai asiakkaalle (DBMS: n tyypistä riippuen).
  2. Pelkäät menettää tarvitsemasi tiedot. Selitetäänpä.

Oletetaan, että pomosi pyytää sinua luetteloimaan taustakuvat, joissa on vain kaksi saraketta - tyyppi ja väri. Tottumuksestasi käytät erillistä argumenttia:

VALITSE erillinen Oboi-tyyppi, Oboi-väri

Oboilta

TILAA Oboi.tyyppi

Ja - menetät osan tiedoista:

tyyppi

väri

paperi

monivärinen

Kaksikerroksinen paperi

beige

Vinyyli

Ruskea

Vinyyli

Oranssi

Kudos

Vaaleanpunainen

Kuitukangas

beige

Kuitukangas

Valkoinen

Saattaa näyttää siltä, ​​että meillä on vain yksi paperityyppityyppi (tavallinen ja kaksikerroksinen), vaikka itse asiassa jopa pienessä pöydässä on kumpikin kaksi artikkelia (tulos on ilman erillistä):

tyyppi

väri

paperi

monivärinen

paperi

monivärinen

Kaksikerroksinen paperi

beige

Kaksikerroksinen paperi

beige

Vinyyli

Ruskea

Vinyyli

Oranssi

Kudos

Vaaleanpunainen

Kuitukangas

Valkoinen

Kuitukangas

beige

Siksi, kuten kirjoitat mitä tahansa kyselyä, erillisellä argumentilla, sinun on oltava varovainen ja ratkaistava asia pätevästi sen sovelluksella tehtävän tehtävän mukaan.

Vaihtoehto erilliselle

Erillisen päinvastainen on argumenttiKaikki. Päällekkäiset viivat säilyvät, kun niitä käytetään. Mutta koska oletusarvoisesti DBMS: n mielestä kaikkien arvojen pitäisi näkyä, All-argumentti on pikemminkin määrittelijä kuin todellinen toiminnallinen argumentti.

erillinen sql-kuvaus
Toivomme, että ymmärrät nyt milloinerillinen (SQL) pätee. Kuvaus antoi sinulle täydelliset tiedot tämän argumentin soveltuvuudesta eri ongelmien ratkaisemiseen. Loppujen lopuksi, kuten kävi ilmi, jopa niin yksinkertainen argumentti sovelluksessaan kätkee melko konkreettisen todennäköisyyden menettää joitain tietoja ja näyttää virheellisiä tietoja.

piti:
0
Suosituimmat viestit
Henkinen kehitys
ruoka
y