SQL alapok 2. rész - SELECT használata

Szerző: Bonjasky

A SELECT statement.

A következőkben arról lesz szó, hogy hogyan tudunk egyszerű lekérdezéseket írni SQL-ben.

A segédlethez létrehoztam egy példa táblát, hogy jobban szméletetni tudjam a lekérdezéseket.

Előző cikk a témában: SQL alapok 1. rész

A példa táblám így néz ki: 

A SELECT szintaxisa elég egyszerű (úgy tagolom, az SQL query-t, hogy a következő segédletekhez is érthető legyen majd, tehát mindent külön sorba):

SELECT
oszlopnev1,
oszlopnev2,
....
FROM
tablanev

Egy példa:

SELECT
nev,
kategoria,
darab,
ar
FROM
termekek

A fenti példa lekérdezi a nev, kategoria, darab, ar oszlopokat a termekek táblából, ebben az esetben az egész tábla tartalma lekérdezésre kerül.

Ha le szeretnénk kérni a tábla összes oszlopát, akkor használhatjuk a * -ot, a következők szerint:

SELECT
*
FROM
termekek

 

WHERE 

SQL-ben a WHERE-t arra használjuk, hogy megmondjuk a querynek. hogy bizonyos táblákból milyen adatokra vagyunk kíváncsiak.

A WHERE szintaxisa a következő:

 

SELECT
oszlopnev1,
oszlopnev2,
...
FROM
tablanev
WHERE
feltetel

Egy egyszerű példa WHERE-re:

SELECT
nev,
kategoria,
darab,
ar
FROM
termekek
WHERE 
kategoria = 'szoftverek'

 

A fenti példában minden sort lekérdeztünk a termekek táblából, amire igaz az a feltétel, hogy a szoftverek kategoriába tartoznak.

AND, OR a WHERE feltételben

Ha szeretnénk egyszerre több feltételt is megadni a lekérdezésünkben, azt gond nélkül megtehetjük, ilyenkor egyszerűen csak az AND, vagy az OR kulcsszóval írhatunk további feltételeket.

Szintaxis:

SELECT
oszlopnev1,
oszlopnev2,
....
FROM
tablanev
WHERE
feltetel
AND feltetel2
AND feltetel3
...

A fenti példából kiindulva, ha szeretnénk lekérdezni a kategoriakbol azokat a szoftvereket, amikből több, mint 10 darab érhető el, azt a következőképpen tudjuk megtenni: 

SELECT
nev,
kategoria,
darab,
ar
FROM
termekek
WHERE 
kategoria = 'szoftverek'
AND darab > 10

 

A lekérdezés eredménye:

Oké, most lekérdeztük a szoftvereket amikből több, mint 10 licensz érhető el, de mondjuk arra vagyok kíváncsi, hogy több, mint 10 licensz érhető el, vagy drágább, mint 20.000 forint. 

Az SQL erre is ad megoldást, erre használjuk az OR-t. OR-al (VAGY) megadhatjuk, hogy a darab legyen nagyobb, mint 10, vagy legyen drágább, mint 20.000 forint.

Ezt a következőképpen tehetjük meg:

SELECT
nev,
kategoria,
darab,
ar
FROM
termekek
WHERE 
kategoria = 'szoftverek'
AND 
(
darab > 10
OR ar > 20000
)

Figyeljük meg, hogy a fenti példában már használtam a zárójeleket, ezzel az SQL-nek azt mondtam meg, hogy a kategora='szoftverek' feltételhez ragaszkodom, és az OR-t csak a darab, vagy az ar feltételnél értelmezze. 

Ha nem lenne ott a zárójel, az SQL a követkzőképpen járna el:

lekérdezne mindent, ami:

VAGY szoftverek kategóriába tartozik

VAGY 10 darabnál több van raktáron

VAGY 20000 ft-nál drágább

A lekérdezés eredménye zárójellel (helyes): 

Láthatjuk, hogy csak a szoftverek kategoriában lévő sorok jöttek fel, és a darab vagy több, mint 10, vagy az ár nagyobb, mint 20.000. 

 

A lekérdezés zárójel nélküli eredménye (nem helyes):

 

Itt láthatjuk, hogy zárójel nélkül feljöttek olyan termékek is, amik nem csak a szoftverek kategóriában vannak. 

Tehát elmondhatjuk, hogy SQL-ben az olyan lekérdezésekben, ahol van AND és OR is, nagyon kell figyelni a helyes zárójelezésre is, különben nem fogunk helyes eredményt visszakapni. Erről még lesz bővebben szó a következő SQL segédletekben, ahol már bonyolultabb SQL query-t fogunk írni. 

 

LIKE használata 

Ha szeretnénk egy mezőn belül keresni, akkor használhatjuk rá a LIKE-ot, ez annyit tesz, hogy a mező tartalmában keresi az általunk megadott szót. 

Szintaxisa:

SELECT
oszlopnev1,
oszlopnev2,
....
FROM
tablanev
WHERE
feltetel
AND oszlopnev1 LIKE feltetel

 

A like-ot többféleképpen is használhatjuk, a leti példákban megmutatom.

1. Példa.

Szeretném lekérdezni az Apple-el kezdődő termékeket, ilyenkor a feltételbe ez kerül: nev like 'Apple%', itt a % utáni részt úgy értelmezi az SQL, hogy az bármi lehet. 

SQL:

SELECT
nev,
kategoria,
darab,
ar
FROM
termekek
WHERE 
nev LIKE 'Apple%'

 

Az SQL query eredménye:

Láthatjuk, hogy valóban csak azok jöttek fel, amik Apple-el kezdőnek.

Ugyan ez a módszer működik fordítva is, ha azt szeretnénk, hogy azok jöjjenek fel, amik mondjuk Pro-ra végződnek, azt a következőképpen tehetjük meg: nev like '%Pro'.

Ebben az esetben a lekérdezés eredménye:

2. Példa

Ha azt szeretnénk, hogy azok a termékek jöjjenek fel, amik tartalmazzák a Windows szót, akkor a keresendő kifejezés elé, és után is % jelet kell tennünk, tehát:

nev like '%Windows%'

SQL:

SELECT
nev,
kategoria,
darab,
ar
FROM
termekek
WHERE 
nev LIKE '%Windows%'
 

A query eredménye:

Láthatjuk, hogy azok a sorok jöttek fel, amik tartalmazzák a Windows kifejezést. 

Ha több kifejezésre is szeretnénk keresi egyszerre, használhatjuk a LIKE-ot ilyen módszerrel is: nev LIKE '%Apple%Pro%' 

Ilyenkor azok a termékek jönnek fel, aminek a nevében az Apple, és a Pro is szerepel (ha nekünk már csak a legjobb Apple termékek felelnek meg) 

 

Most megmutattam, hogy hogyan működik a Like, de ha mi nem szereténk egy egész szóra keresni, hanem mondjuk, egy betűre, akkor használhatjuk a _ (aláhúzás jel) jelet is. 

Például, ha azt írjuk be a feltételbe, hogy nev LIKE '____e%', akkor ez azt jelenti, hogy az első 4 karakter bármi lehet, az ötörik viszont e kell, hogy legyen, utána peidg bármi lehet. 

Vagy nev LIKE '_pp_e%', mind a két esetben az Apple kezdetű termékeket fogja visszaadni. 

2020-02-02 13:17:58

Értékelés 5.0 /5