3.1 Membandingkan nilai: <, >, =, <>

Salah satu kata kunci yang paling biasa digunakan semasa menulis pertanyaan SQL ialah WHERE. Dengan bantuannya kami memberitahu MySQL baris jadual yang ingin kami tapis (pilih).

Selepas kata kunci, WHEREanda boleh menulis keadaan yang sangat kompleks dan rumit. Jadi apakah operasi yang boleh terkandung dalam keadaan ini?

Operator Penerangan Contoh
< Kurang gaji < 40000
> Lagi gaji > 100000
<= Kurang atau sama umur <= 25
>= Lebih atau sama umur >= 18
= sama pekerjaan = 'Programmer'
<>, != Tidak sama Tahun(tarikh_sertai) != 2015

Tidak seperti bahasa Jawa, untuk kesamarataan yang ketat, satu aksara yang sama digunakan di sini, dan bukan dua .

Jika anda ingin menyemak bahawa nilainya tidak sama, maka ini boleh dilakukan dalam dua cara: <>sama ada !=Pendekatan pertama digunakan dalam bahasa seperti Pascal, yang kedua adalah tipikal untuk bahasa seperti C ++ dan Jawa.

Untuk tugasan dalam SQL, ia digunakan :=seperti dalam Pascal, tetapi tugasan itu sendiri jarang digunakan.

Mari tulis pertanyaan di mana kami memaparkan semua pekerja yang tidak diambil bekerja pada tahun 2015.


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
1 Ivanov Ivan Pengaturcara 100,000 25 30-06-2012
2 Petrov Petr Pengaturcara 80,000 23 2013-08-12
3 Ivanov Sergey Penguji 40,000 tiga puluh 2014-01-01
6 Vaska kucing 1,000 3 2018-01-01

3.2 Operasi logik DAN, ATAU, BUKAN

Anda juga boleh WHEREmenggunakan operasi logik AND, ORdan NOT. Dan ia ditulis tepat seperti yang saya gambarkan di sini. Tiada &&, ||atau!

Mari tulis pertanyaan SQL di mana kami memilih pekerja yang berumur lebih dari 20 tahun dan menerima gaji kurang daripada 50K.


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
3 Ivanov Sergey Penguji 40,000 tiga puluh 2014-01-01
5 Kirienko Anastasia Pengurus pejabat 40,000 25 2015-10-10

Terlalu mudah. Mari tulis pertanyaan di mana kami memilih pekerja yang menerima lebih daripada 100K dan tidak bekerja sebagai pengarah:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

Di sini kami secara khusus !=menggunakan operator dan bukannya simbol NOT.

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
1 Ivanov Ivan Pengaturcara 100,000 25 30-06-2012

3.3 ANTARA: julat nilai

Juga dalam SQL terdapat pengendali khas BETWEENyang mana anda boleh menyemak sama ada pembolehubah terletak di antara dua nilai. Operator ini digunakan dalam ungkapan boolean. Bentuk umum pengendali sedemikian ialah:


variable BETWEEN bottom line AND top_bound
        

Dalam kes ini, tidak seperti bahasa Java, kedua-dua sempadan bawah dan atas disertakan dalam selang yang dibenarkan.

Mari kita tulis contoh di mana kita memilih semua pekerja dengan gaji dari 40K hingga 100K. Permintaan akan kelihatan seperti:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
1 Ivanov Ivan Pengaturcara 100,000 25 30-06-2012
2 Petrov Petr Pengaturcara 80,000 23 2013-08-12
3 Ivanov Sergey Penguji 40,000 tiga puluh 2014-01-01
5 Kirienko Anastasia Pengurus pejabat 40,000 25 2015-10-10

Pengendali BETWEENmenyokong bukan sahaja jenis angka, tetapi juga tarikh dan juga jenis rentetan . Dalam kes bekerja dengan rentetan, susunan leksikografi digunakan: aaba didahulukan sebelum aabb

3.4 IN: senarai nilai

Di samping itu, SQL mempunyai pengendali khas INyang mana anda boleh menyemak sama ada pembolehubah terkandung dalam senarai yang ditentukan. Operator ini digunakan dalam ungkapan boolean. Bentuk umum pengendali sedemikian ialah:

variable IN (value 1 , value 2 , ... value N)

Mari tulis pertanyaan di mana kita memilih pekerja yang berumur 20, 25 atau 30 tahun. Permintaan akan kelihatan seperti:

SELECT * FROM employee WHERE age IN (20, 25, 30)

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
1 Ivanov Ivan Pengaturcara 100,000 25 30-06-2012
3 Ivanov Sergey Penguji 40,000 tiga puluh 2014-01-01
5 Kirienko Anastasia Pengurus pejabat 40,000 25 2015-10-10

Dan sekarang mari kita tulis pertanyaan, di mana, sebaliknya, kita memilih pekerja yang berumur not20, 25 atau 30 tahun. Pertanyaan itu akan kelihatan seperti:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
2 Petrov Petr Pengaturcara 80,000 23 2013-08-12
4 Rabinovich Moisha Pengarah 200,000 35 12-05-2015
6 Vaska kucing 1,000 3 2018-01-01

Semuanya berfungsi seperti yang diharapkan. Kecantikan.

3.5 SUKA: corak tali

Dan akhirnya, satu lagi pengendali penting dan sangat kerap digunakan - LIKE. Ia digunakan apabila membandingkan rentetan. Ia boleh digunakan untuk menetapkan corak rentetan. Operator ini digunakan dalam ungkapan boolean. Bentuk umum pengendali sedemikian ialah:

variable LIKE 'sample'

Aksara khas boleh digunakan dalam corak: %dan _.

  • Garis bawah bermaksud mana-mana watak, sentiasa 1 pc.
  • Peratus bermaksud mana-mana aksara dan beberapa kali (termasuk 0 kali).

Mari tulis pertanyaan yang akan memilih semua orang yang nama keluarga mereka bermula dengan huruf "I". Permintaan akan kelihatan seperti:

SELECT * FROM employee WHERE name LIKE 'I%'

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
1 Ivanov Ivan Pengaturcara 100,000 25 30-06-2012
3 Ivanov Sergey Penguji 40,000 tiga puluh 2014-01-01

Sekarang mari kita rumitkan tugas - nama harus mengandungi "o" dan nama itu harus berakhir dengan "a". Permintaan akan kelihatan seperti:

SELECT * FROM employee WHERE name LIKE '%o%a'

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
4 Rabinovich Moisha Pengarah 200,000 35 12-05-2015

Baiklah, mari kita buat ia lebih sukar. Mari tapis semua pekerja yang umurnya bermula dengan nombor "3". Permintaan akan kelihatan seperti:

SELECT * FROM employee WHERE age LIKE '3%'

Dan kami mendapat hasil pertanyaan berikut:

ID nama pekerjaan gaji umur tarikh menyertai
3 Ivanov Sergey Penguji 40,000 tiga puluh 2014-01-01
4 Rabinovich Moisha Pengarah 200,000 35 12-05-2015
6 Vaska kucing 1,000 3 2018-01-01

By the way, lajur umur kami adalah jenis int, jadi LIKEia berfungsi bukan sahaja dengan rentetan. Apa yang tidak boleh tetapi bergembira.