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 WHEREnagyon ö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 WHEREa logikai műveleteket is . És pontosan úgy vannak megírva, ahogy itt leírtam. Egyik sem , illANDORNOT&&||!

Í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, BETWEENamellyel 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 BETWEENnem 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, INamellyel 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, not20, 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 LIKEnem csak karakterláncokkal működik. Aminek nem lehet örülni.