3.1 Értékek összehasonlítása: <, >, =, <>
Az SQL lekérdezések írásakor használt egyik leggyakoribb kulcsszó a WHERE
. Segítségével mondjuk meg a MySQL-nek, hogy mely táblázatsorokat szeretnénk szűrni (kijelölni).
A kulcsszó után WHERE
nagyon összetett és trükkös feltételeket írhat. Tehát milyen műveleteket tartalmazhat ez a feltétel?
Operátor | Leírás | Példa |
---|---|---|
< | Kevésbé | fizetés < 40 000 |
> | Több | fizetés > 100 000 |
<= | Kisebb vagy egyenlő | életkor <= 25 |
>= | Több vagy egyenlő | életkor >= 18 |
= | Egyenlő | occupation = 'Programozó' |
<>, != | Nem egyenlő | Év(csatlakozási_dátum) != 2015 |
A Java nyelvtől eltérően a szigorú egyenlőség érdekében itt egy egyenlő karaktert használunk, és nem kettőt .
Ha ellenőrizni szeretné, hogy az értékek nem egyenlőek-e, akkor ezt kétféleképpen teheti meg: <>
vagy !=
Az első megközelítést olyan nyelvekben használják, mint például a Pascal, a második olyan nyelvekre jellemző, mint például a C ++ és Java.
Az SQL-ben történő hozzárendeléshez ugyanúgy használják, :=
mint a Pascalban, de magát a hozzárendelést nagyon ritkán használják.
Írjunk egy lekérdezést, ahol megjelenítjük az összes 2015-ben fel nem vett alkalmazottat.
SELECT * FROM employee WHERE YEAR(join_date) != 2015
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
1 | Ivanov Iván | Programozó | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programozó | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Szergej | Vizsgáló | 40 000 | harminc | 2014-01-01 |
6 | Vaska | macska | 1000 | 3 | 2018-01-01 |
3.2 Logikai műveletek ÉS, VAGY, NEM
Használhatja a , és WHERE
a logikai műveleteket is . És pontosan úgy vannak megírva, ahogy itt leírtam. Egyik sem , illAND
OR
NOT
&&
||
!
Írjunk egy SQL lekérdezést, ahol 20 év feletti, 50K-nál kisebb fizetést kapó alkalmazottakat választunk ki.
SELECT * FROM employee WHERE age > 20 AND salary < 50000
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
3 | Ivanov Szergej | Vizsgáló | 40 000 | harminc | 2014-01-01 |
5 | Kirienko Anasztázia | Irodavezető | 40 000 | 25 | 2015-10-10 |
Túl könnyű. Írjunk egy lekérdezést, ahol kiválasztjuk azokat az alkalmazottakat, akik több mint 100 000-t kapnak, és nem igazgatóként dolgoznak:
SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
Itt kifejezetten !=
az operátort használtuk a szimbólum helyett NOT
.
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
1 | Ivanov Iván | Programozó | 100 000 | 25 | 2012-06-30 |
3.3 KÖZÖTT: értéktartomány
Az SQL-ben is van egy speciális operátor, BETWEEN
amellyel ellenőrizheti, hogy egy változó két érték között van-e. Ez az operátor logikai kifejezésekben használatos. Az ilyen operátor általános formája:
variable BETWEEN bottom line AND top_bound
Ebben az esetben a Java nyelvtől eltérően az alsó és a felső határ is beletartozik az engedélyezett intervallumba.
Írjunk egy példát, ahol az összes alkalmazottat kiválasztjuk, akiknek fizetése 40 000 és 100 000 között van. A kérés így fog kinézni:
SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
1 | Ivanov Iván | Programozó | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programozó | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Szergej | Vizsgáló | 40 000 | harminc | 2014-01-01 |
5 | Kirienko Anasztázia | Irodavezető | 40 000 | 25 | 2015-10-10 |
Az operátor BETWEEN
nem csak a numerikus típusokat támogatja, hanem a dátumokat és a karakterlánc-típusokat is . A húrokkal való munkavégzésnél a lexikográfiai sorrendet alkalmazzuk: az aaba az aabb elé kerül
3.4 IN: értékek listája
Ezenkívül az SQL-nek van egy speciális operátora, IN
amellyel ellenőrizheti, hogy a megadott listában szerepel-e egy változó. Ez az operátor logikai kifejezésekben használatos. Az ilyen operátor általános formája:
variable IN (value 1 , value 2 , ... value N)
Írjunk lekérdezést, amelyben 20, 25 vagy 30 éves munkavállalókat választunk ki. A kérés így fog kinézni:
SELECT * FROM employee WHERE age IN (20, 25, 30)
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
1 | Ivanov Iván | Programozó | 100 000 | 25 | 2012-06-30 |
3 | Ivanov Szergej | Vizsgáló | 40 000 | harminc | 2014-01-01 |
5 | Kirienko Anasztázia | Irodavezető | 40 000 | 25 | 2015-10-10 |
És most írjunk egy lekérdezést, ahol éppen ellenkezőleg, not
20, 25 vagy 30 éves munkavállalókat választunk ki. A lekérdezés így fog kinézni:
SELECT * FROM employee WHERE age NOT IN (20, 25, 30)
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
2 | Petrov Petr | Programozó | 80 000 | 23 | 2013-08-12 |
4 | Rabinovics Moisa | Rendező | 200 000 | 35 | 2015-05-12 |
6 | Vaska | macska | 1000 | 3 | 2018-01-01 |
Minden a vártnak megfelelően működött. Szépség.
3.5 LIKE: húrminta
És végül egy másik fontos és nagyon gyakran használt operátor - LIKE
. A karakterláncok összehasonlításakor használatos. Használható húrminta beállítására. Ez az operátor logikai kifejezésekben használatos. Az ilyen operátor általános formája:
variable LIKE 'sample'
A mintában speciális karakterek használhatók: %
és _
.
- Az aláhúzás bármely karaktert jelent, mindig 1 db.
- A százalék bármely karaktert és tetszőleges számú alkalmat jelent (beleértve a 0-t is).
Írjunk egy lekérdezést, amely kiválasztja az összes olyan személyt, akinek vezetékneve "I" betűvel kezdődik. A kérés így fog kinézni:
SELECT * FROM employee WHERE name LIKE 'I%'
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
1 | Ivanov Iván | Programozó | 100 000 | 25 | 2012-06-30 |
3 | Ivanov Szergej | Vizsgáló | 40 000 | harminc | 2014-01-01 |
Most bonyolítsuk le a feladatot - a névnek tartalmaznia kell az "o"-t, és a névnek "a"-ra kell végződnie. A kérés így fog kinézni:
SELECT * FROM employee WHERE name LIKE '%o%a'
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
4 | Rabinovics Moisa | Rendező | 200 000 | 35 | 2015-05-12 |
Oké, nehezítsük meg egy kicsit. Szűrjünk ki minden olyan alkalmazottat, akinek életkora 3-as számmal kezdődik. A kérés így fog kinézni:
SELECT * FROM employee WHERE age LIKE '3%'
És a következő lekérdezési eredményt kapjuk:
id | név | Foglalkozása | fizetés | kor | csatlakozás dátuma |
---|---|---|---|---|---|
3 | Ivanov Szergej | Vizsgáló | 40 000 | harminc | 2014-01-01 |
4 | Rabinovics Moisa | Rendező | 200 000 | 35 | 2015-05-12 |
6 | Vaska | macska | 1000 | 3 | 2018-01-01 |
Egyébként a kor rovatunk típusú int
, tehát LIKE
nem csak karakterláncokkal működik. Aminek nem lehet örülni.