Sajnáljuk, az értékeléshez bejelentkezés szükséges
Sajnáljuk, az értékeléshez bejelentkezés szükséges
  • sql-category
    Szűrési feltételek
  • sql-category
    Adatok lekérdezése több táblából
Adatok lekérdezése

Az SQL lekérdezések bemutatása

Haszontalannak jelölve: 0
Hasznosnak jelölve: 0
Kulcsszavak: wannacode, kurzus, course, adatbázis lekérdezések, database selects, sql lekérdezések, sql select
Elérhető: Nem érhető el

Az adatbázisból az adatok kiolvasását adatok lekérdezésének hívjuk, mivel egy parancsot adunk amelyre kapunk egy listát a visszaérkező adatokkal. Ezt a parancsot hívjuk SELECT-nek.

A SELECT parancs felépítése a következő formában néz ki:

        
    // Adatok lekérdezése esetén
    SELECT `oszlop1`, `oszlop2`
    FROM `táblázat neve`
    WHERE 'szűrési feltételek';

        
    

Ez a legegyszerűbb változat, ahol az oszlopokat felsorolhatjuk egymás után vesszővel elválasztva, bármennyit. Amennyiben az összes oszlop adatait szeretnénk lekérni, nyugodtan írhatunk *-t az oszlopok nevei helyett:

        
    // Adatok lekérdezése esetén
    SELECT *
    FROM `táblázat neve`
    WHERE 'szűrési feltételek';

        
    

Ehhez a parancshoz még hozza tartozik három lista módosító parancs is: GROUP BY, ORDER BY, LIMIT. Mindeniket lehet használni a többi nélkül is.

1. A GROUP BY parancs:

Arra szolgál, hogy a visszatérítendő adatokat csoportosítsa valamely oszlop(ok) szerint (akár több szerint is lehetséges).

            
        // Növekvő sorbarendezés ASCENDING
        SELECT *
        FROM `táblázat neve`
        WHERE 'szűrési feltételek'
        GROUP BY 'oszlop1';

            
        

Képzeljünk el egy olyan esetet amikor egy személy kivesz a könyvtárból egyszerre több könyvet, majd a lekérdezésnél nekünk minden személy kellene aki vett ki könyvet, de mivel több könyvet vett ki valaki, ezért a neve többszőr szerepelne a listában. Ilyen esetben a GROUP BY segítségével lehet csoportosítani a nevek alapján, így csak egyszer kapnánk vissza a nevet.

Fontos tudni, hogy csak akkor tudjuk csoportosítani az adatokat, ha az összes lekérdezett oszlop adatai (az adott személynél) egyeznek.

2. Az ORDER BY parancs:

Arra szolgál, hogy a visszatérítendő adatokat sorbarendezze valamely oszlop(ok) szerint (akár több szerint is lehetséges), növekvő, csökkenő vagy véletlenszerű sorrendbe.

            
    // Növekvő sorbarendezés ASCENDING
    SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' ORDER BY 'oszlop1' ASC;

    // Csökkenő sorbarendezés DESCENDING
    SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' ORDER BY 'oszlop1' DESC;

    // Véletlenszerű sorbarendezés
    SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' ORDER BY 'oszlop1' RAND();

            
        

A véletlenszerű sorbarendezésnél a RAND() függvényt kell meghívni, amely generál egy adott sorrendet.

Ha szeretnénk több oszlop szerint is sorbarendezni, csak vesszővel egymás után fel kell sorolni az oszlopokat:

            
    // Növekvő sorbarendezés ASCENDING
    SELECT *
    FROM `táblázat neve`
    WHERE 'szűrési feltételek'
    ORDER BY 'oszlop1' ASC, 'oszlop2' DESC, 'oszlop3' RAND();

            
        

3. A LIMIT parancs:

A LIMIT parancsot már ismerjük, arra szolgál, hogy az adatokat limitáljuk, hogy maximum hány sor adatot térítsen vissza. Két értéket lehet megadni neki, hogy hány értéket adjon vissza, és hogy hányadik elemtől.

            
        // Egyszerűen megszabjuk a sorok maximum számát
        SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' LIMIT 10;

        // Amikor azt is megszabjuk, hányadik elemtől adja vissza a sorokat
        SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' LIMIT 20, 10;

            
        

A második példában szintén 10 elemet kérünk le, de az első 20 elemet kihagyjuk, így csak a 20. elemtől kapjuk vissza az adatokat.

Ha ebből a három parancsból egyszerre többet is szeretnénk használni, akkor ebben a sorrendben kell megadnunk őket, ahogy tárgyaltuk az előbb. GROUP BY, ORDER BY, LIMIT

        
    // Adatok lekérdezése esetén
    SELECT *
    FROM `táblázat neve`
    WHERE 'szűrési feltételek'
    GROUP BY 'oszlop1'
    ORDER BY 'oszlop1'
    LIMIT 10;

        
    

Célszerű az SQL parancsokat úgy megszerkeszteni, hogy a fontosabb parancsokat új sorban kezdjük, ezáltal sokkal átláhatóbbak lesznek, ahogy a fenti példában is írtuk.

A kiválasztott oszlopok meghatározásánál nyugodtan végezhetünk műveleteket az oszlopokkal, pl. összefűzhetünk két vagy több oszlopot és úgy kérjük le, vagy kicserélhetünk benne karaktert, vagy akár feltételt is írhatunk, hogy annak függvényében kérjünk le adatot egyik vagy másik oszlopból.

1. Oszlopok összefűzése

Parancs: ||

Ebben az esetben eredményként az oszlopok értékeit fűzzük össze, nem az oszlopok neveit:

            
    // Oszlopok összefűzése
    SELECT 'oszlop1' || 'oszlop2'

            
        

2. Műveletek öszlopokkal

Ebben az esetben valamilyen műveletet hajtunk végre az oszlop értékén mielőtt megkapnánk azt eredményként pl. kicserélünk egy szöveget egy másikra:

            
    // Oszlopok értékein művelet végrehajtása
    SELECT REPLACE( 'oszlop neve', 'cserélendő szöveg', 'csere szöveg' )

            
        

Az oszlop neve oszlop értékeiben kicseréljük a cserélendő szöveg-t a csere szöveg-re.

Ilyen végrehajtható művelet rengeteg létezik: kisbetűsítés, nagybetűsítés, szöveg csere, dátum formázás, stb.

3. Oszlopok átnevezése

Parancs: AS

Ebben az esetben a lekérdezett oszlopot más néven szeretnénk megkapni:

            
    // Oszlopok átnevezése
    SELECT 'oszlop neve' AS 'új név'

            
        

3. Feltételes lekérdezés

Parancs: CASE

Ez egy olyan eset, amikor attól függően szeretnénk egyik vagy másik oszlopot lekérdezni, hogy egy felétel teljesül vagy sem.

A CASE parancs felépítése:

            
    CASE
        WHEN feltétel1 THEN 'oszlop neve'
        WHEN feltétel2 THEN 'oszlop neve'
        WHEN feltétel3 THEN 'oszlop neve'
        ...
        ELSE 'oszlop neve'
    END

            
        

Tehát: a WHEN segítségével mondhatjuk meg, hogy Amikor ez a feltétel teljesül akkor az érték legyen a THEN után szereplő oszlop értéke.
Ha nem teljesül az első WHEN, akkor nézi a következőt, majd a következőt és így tovább. Ha egyetlen WHEN feltétele sem teljesül, akkor ugrik az ELSE (másképp) ágra, és annak az oszlopnak az értékét adja vissza.

A feltételes lekérdezés esetében is nyugodtan adhatunk egy saját nevet az oszlopnak, hogy könnyen férjünk majd hozza az adatokhoz:

            
    CASE
        WHEN feltétel1 THEN 'oszlop neve'
        WHEN feltétel2 THEN 'oszlop neve'
        WHEN feltétel3 THEN 'oszlop neve'
        ...
        ELSE 'oszlop neve'
    END AS 'új név'

            
        

A feltételek olyanok lehetnek, mint amiket a Szűrési feltételek leckében is tárgyaltunk.

Hasonló leckék