Számítógépek, Fájltípusok
SQL külön: leírás, példák, tulajdonságok
Gyakran előfordul, hogy amikor az SQL-t a táblázatokból származó információk lekérésére használja, a felhasználó redundáns adatokat kap, amelyek teljesen azonos duplikált sorokból állnak. A helyzet kizárásához használja az SQL különálló argumentumot a Select szakaszban. Ebben a cikkben megfontoljuk az érvelés használatának példáit, valamint azokat az eseteket, amikor jobb az érvelés elhagyása.
Mielőtt konkrét példákat vesszük fontolóra, néhány szükséges táblát hozunk létre az adatbázisban.
Táblázat készítése
Képzelje el, hogy az adatbázisban tároltunk információkat a tapétáról, két táblázatban. Ez az Oboi tábla (háttérkép) a mezők id (egyedi azonosító), típus (háttérkép típusa - papír, vinil stb.), Szín, struktúra és ár. És az Ostatki-táblát (maradék) az id_oboi mezőkkel (hivatkozás az Oboi-táblázat egyedi azonosítójára), és számolja (a raktárban lévő tekercsek számát).
Töltse ki az adatokat tartalmazó táblázatokat. A háttérképben 9 bejegyzést adunk hozzá:
Oboi | ||||
id | típus | szín | struct | ár |
1 | papír | sokszínű | domborított | 56,9 |
2 | Kétrétegű papír | bézs | sima | 114,8 |
3 | vinyl | narancs | domborított | 504 |
4 | Nem szőtt szövet | bézs | domborított | 1020,9 |
5 | Kétrétegű papír | bézs | sima | 150,6 |
6 | papír | sokszínű | sima | 95,4 |
7 | vinyl | barna | sima | 372 |
8 | Nem szőtt szövet | fehér | domborított | 980,1 |
9 | szövet | rózsaszín | sima | 1166,5 |
A maradék táblázatban kilenc adat is szerepel:
Ostatki | |
id_oboi | számol |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Kezdjük azzal, hogy leírjuk, hogyan kell használni az SQL-ben külön.
Helyezzen elkülönítettet a Select záradékban
A külön érvet közvetlenül a Kulcsszavak kiválasztása után kell elhelyezni a lekérdezésekben. Ez azonnal alkalmazásra kerül a Select szakaszban megadott összes oszlopra, mivel kizárja a lekérdezés eredményéből teljesen azonos sorokat. Így elegendő az "SQL" lekérdezés írásakor a "select select" megadását. Az egyetlen kivétel az, hogy az aggregált függvényeken belüli különbségtételt alkalmazzuk, ami egy kicsit később lesz.
Nem szabad megfeledkeznünk arról, hogy a legtöbb DBMS nem ismeri fel a kérését így:
SELECT külön Ostatki.Count, külön Oboi. * FROM Oboi INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
Itt az argumentum többször meg van adva, vagy megadható egyszer, de a második, harmadik vagy más választható oszlop előtt. Hiba kerül a szintaxis pontatlanságaira való hivatkozással.
A standard lekérdezésekben elkülönítettek
Nyilvánvaló, hogy a táblák szerkezeti felépítésével és kitöltésével ugyanazon a táblázatban a helyzetek kizárásra kerülnek, ha feltétlenül azonos vonalak találkoznak. Ezért a "Select select *" lekérdezés végrehajtása egy táblázattal való kiválasztással gyakorlatilag nem praktikus.
Képzeljünk el egy olyan helyzetet, ahol meg kell találnunk, milyen háttérképünk van, csak a kényelem érdekében, típus szerint:
SELECT Oboi.type Oboi típusú sorrendtől függően |
És megkaptuk az eredményt:
típus |
papír |
papír |
Kétrétegű papír |
Kétrétegű papír |
vinyl |
vinyl |
szövet |
Nem szőtt szövet |
Nem szőtt szövet |
Amint láthatja, a táblában duplikált sorok vannak. Ha hozzáadjuk a Válasszon külön záradékot:
SELECT külön Oboi.type Oboi típusú sorrendtől függően |
Aztán megkapjuk az eredményt anélkül, hogy megismételtük:
típus |
papír |
Kétrétegű papír |
vinyl |
szövet |
Nem szőtt szövet |
Így ha az adatok helyesen kerültek a táblázatokba, akkor közvetlenül a hívás vagy a vásárlók kérése után válaszolni tudunk arra, hogy nincs folyadék tapéta, üvegpadló és akril tapéta az üzletben. Tekintettel arra, hogy a raktárkészletek általában nem csak száz háttérképre korlátozódnak, eléggé munkaigényes lenne, ha átnéznék a nem egyedi típusok listáját.
Az aggregált függvényeken belüli különálló használat
SQL különbözõ lehet bármely aggregált függvény használatával. De a Min és a Max esetében a felhasználásnak nincs hatása, és az összeg vagy az átlagérték kiszámításakor ritkán elképzelhető olyan helyzet, ahol nem szükséges figyelembe venni az ismétléseket.
Tegyük fel, hogy szeretnénk megtudni, mennyire tele van a raktárunk, ezért küldünk egy kérelmet, amely kiszámolja a raktárban lévő összes tekercs számát:
SELECT összeg (Ostatki.count) FROM Ostatki |
A lekérdezés 143. választ ad vissza. Ha a következőre váltunk:
SELECT összeg (különálló Ostatki.count) FROM Ostatki |
Aztán csak 119-et kapunk, mert a 3. és 7. cikk háttérképei ugyanabban a mennyiségben vannak raktáron. Nyilvánvaló azonban, hogy ez a válasz téves.
Leggyakrabban az SQL a Count funkcióval együtt használható. Tehát nehézségek nélkül megismerhetjük, hogy hány egyedi háttérképünk van:
SELECT szám (külön Oboi.type) FROM Oboi |
És kapd el az eredményt az 5 - papíros rendes és kétrétegű, vinil, szövet és nem szőtt. Bizonyára mindenki olyan hirdetést látott, mint például: "Csak több mint 20 féle különböző háttérképünk van!", Mire ez azt jelenti, hogy ebben a boltban nincs több tucat tekercs mindentől, hanem a legkülönbözőbb modern típusok háttérképéről.
Érdekes, hogy egyetlen kérésben több funkciót is megadhat a különálló attribútummal vagy anélkül. Vagyis ez az egyetlen helyzet, amikor a Select-ben többször is jelen lehet.
Mikor kell elutasítanom egy érv használatát?
Az SQL különálló argumentumát kétféle módon kell eldobni:
- Ön kiválasztja a táblázatokat, és biztos abban, hogy az egyes értékek egyedisége. Ebben az esetben az argumentum használata nem megfelelő, mivel ez egy további terhelés a kiszolgálón vagy az ügyfélen (a DBMS típusától függően).
- Félsz, hogy elveszíted a szükséges adatokat. Magyarázzuk meg.
Tegyük fel, hogy a főnök arra kéri, hogy jelenítse meg a háttérképet, amely csak két oszlopot tartalmaz - típus és szín. A szokás szerint megkülönbözteti az érvet:
SELECT külön Oboi.type, Oboi.color FROM Oboi ORDER BY Oboi.type |
És - elveszít néhány adatot:
típus | szín |
papír | sokszínű |
Kétrétegű papír | bézs |
vinyl | barna |
vinyl | narancs |
szövet | rózsaszín |
Nem szőtt szövet | bézs |
Nem szőtt szövet | fehér |
Úgy tűnhet, hogy csak egyféle papír háttérképünk van (hagyományos és kétrétegű), bár valójában még a kis asztalunkban is két cikkük van (az eredmény különösebb):
típus | szín |
papír | sokszínű |
papír | sokszínű |
Kétrétegű papír | bézs |
Kétrétegű papír | bézs |
vinyl | barna |
vinyl | narancs |
szövet | rózsaszín |
Nem szőtt szövet | fehér |
Nem szőtt szövet | bézs |
Ezért, mint bármelyik lekérdezésnél, a különálló argumentummal óvatosnak és helyesnek kell lennie a probléma megoldásával a feladat függvényében.
Alternatív különálló
A különálló érv ellentétje az All argumentum. Ha használja, duplikált sorokat ment. De mivel alapértelmezés szerint a DBMS úgy gondolja, hogy minden érték kinyomtatásához szükséges, az All argumentum sokkal inkább egy specifikátor, mint egy valós funkcionális argumentum.
Similar articles
Trending Now