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, WHERE
anda 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 WHERE
menggunakan operasi logik AND
, OR
dan 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 = 'Директор'
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 BETWEEN
yang 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 BETWEEN
menyokong 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 IN
yang 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 не
20, 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 'И%'
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 LIKE
ia berfungsi bukan sahaja dengan rentetan. Apa yang tidak boleh tetapi bergembira.
GO TO FULL VERSION