Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

12 Operator SQL yang Umum Digunakan

Dalam SQL, operator adalah karakter khusus atau kata kunci yang menentukan tindakan yang dilakukan pada satu atau lebih ekspresi.

Operator SQL merupakan bagian integral dari SQL, dan memungkinkan kita untuk menulis kueri yang mengembalikan hasil yang relevan.

Dalam artikel ini, saya menyajikan 12 operator SQL yang paling umum digunakan saat menulis kueri SQL.

Yang Sama (= ) Operator

Operator Setara (= ) mungkin adalah operator yang paling umum digunakan dalam SQL. Ini membandingkan kesetaraan dua ekspresi. Bahkan jika Anda tidak terlalu familiar dengan SQL, Anda mungkin tahu operator ini.

Bayangkan kita memiliki database untuk hotel hewan peliharaan, dan kita ingin mendapatkan informasi tentang semua hewan peliharaan bernama Fluffy.

Dalam hal ini, kita dapat melakukan ini:

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy';

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

Kueri kami menggunakan operator Equals (= ) untuk membandingkan kesetaraan nilai PetName kolom dan string Fluffy .

Dalam kasus kami, kami dapat melihat bahwa hotel hewan peliharaan saat ini memiliki dua hewan peliharaan bernama Fluffy.

Lebih Besar dari (> ) Operator

Operator Lebih Besar Dari (> ) membandingkan dua ekspresi dan mengembalikan TRUE jika operan kiri memiliki nilai lebih tinggi dari operan kanan; jika tidak, hasilnya adalah FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB > '2020-01-01';

Hasil:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Wag       | 2020-03-15 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Dalam hal ini, membandingkan nilai DOB kolom dan tanggal 2020-01-01 untuk melihat apakah DOB kolom lebih besar.

Kurang Dari (< ) Operator

Operator Kurang Dari (< ) melakukan sebaliknya. Ini membandingkan dua ekspresi dan mengembalikan TRUE jika operan kiri memiliki nilai lebih rendah dari operan kanan; jika tidak, hasilnya adalah FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB < '2020-01-01';

Hasil:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+

Lebih Besar dari atau Sama Dengan (>= ) Operator

Operator Lebih Besar dari atau Sama Dengan (>= ) membandingkan dua ekspresi dan mengembalikan TRUE jika operan kiri memiliki nilai lebih besar atau sama dengan operan kanan; jika tidak, ia mengembalikan FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB >= '2020-09-17';

Hasil:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Perhatikan bahwa itu mengembalikan 2020-09-17 dan semua tanggal yang lebih besar dari itu. Jika kita menggunakan operator Lebih Besar dari (> ), hanya dua baris pertama yang akan dikembalikan.

Kurang Dari atau Sama Dengan (<= ) Operator

Operator Kurang Dari atau Sama Dengan (<= ) membandingkan dua ekspresi dan mengembalikan TRUE jika operan kiri memiliki nilai lebih rendah dari atau sama dengan operan kanan; jika tidak, hasilnya adalah FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB <= '2020-09-17';

Hasil:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
| Wag       | 2020-03-15 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Perhatikan bahwa itu mengembalikan 2020-09-17 dan semua tanggal kurang dari itu. Jika kita menggunakan operator Less Than (< ), hanya tiga baris pertama yang akan dikembalikan.

The AND Operator

AND operator menggabungkan dua ekspresi Boolean dan mengembalikan TRUE ketika kedua ekspresi TRUE .

Ini contohnya.

SELECT PetId, DOB 
FROM Pets
WHERE PetName = 'Fluffy'
AND DOB > '2020-01-01';

Hasil:

+---------+------------+
| PetId   | DOB        |
|---------+------------|
| 1       | 2020-11-20 |
| 6       | 2020-09-17 |
+---------+------------+

Dalam hal ini, kami hanya mendapatkan detail hewan peliharaan dengan nama Fluffy dan tanggal lahir mereka berada di antara dua tanggal tersebut.

OR Operator

OR operator menggabungkan dua ekspresi Boolean dan mengembalikan TRUE ketika salah satu dari kondisinya TRUE .

Ini contohnya.

SELECT 
    PetId, 
    PetName,
    DOB 
FROM Pets
WHERE PetName = 'Fluffy' OR PetName = 'Bark';

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
+---------+-----------+------------+

Ini pada dasarnya kebalikan dari AND operator. Jika kita menggunakan AND , tidak akan ada baris yang dikembalikan, karena kita tidak dapat memiliki dua nilai yang berbeda dalam satu kolom secara bersamaan.

BETWEEN Operator

BETWEEN operator memungkinkan kita untuk menentukan rentang yang akan diuji. Misalnya, kita dapat menggunakannya untuk mengembalikan hewan peliharaan yang lahir di antara dua tanggal.

SELECT
    PetName,
    DOB
FROM Pets
WHERE DOB BETWEEN '2018-01-01' AND '2020-01-01';

Hasil:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+

Yang NOT Operator

NOT operator meniadakan input Boolean (itu membalikkan nilai ekspresi Boolean apa pun). Karenanya mengembalikan TRUE ketika ekspresinya FALSE .

Inilah yang terjadi ketika kita menambahkan NOT operator ke contoh kita sebelumnya.

SELECT
    PetName,
    DOB
FROM Pets
WHERE DOB NOT BETWEEN '2018-01-01' AND '2020-01-01';

Hasil:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Wag       | 2020-03-15 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Kali ini kami mendapatkan semua hewan peliharaan lainnya – hewan peliharaan yang bukan lahir di antara tanggal tersebut.

Di MariaDB, NOT terbatas untuk meniadakan IN , BETWEEN , dan EXISTS klausa. Sebagian besar DBMS lain mengizinkan NOT untuk meniadakan ekspresi apa pun.

The IN Operator

IN operator menentukan apakah nilai yang ditentukan cocok dengan nilai apa pun dalam subkueri atau daftar.

Ini contohnya.

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetName IN ('Fluffy', 'Bark', 'Wag');

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 4       | Wag       | 2020-03-15 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
+---------+-----------+------------+

Kami dapat mencapai hasil yang sama dengan menggunakan dua OR operator:

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetName = 'Fluffy' 
    OR PetName = 'Bark' 
    OR PetName = 'Wag';

Namun, kode IN operator adalah cara yang lebih ringkas untuk melakukannya. IN operator sangat bermanfaat ketika Anda memiliki daftar nilai yang panjang untuk dibandingkan.

IN operator hampir selalu mengeksekusi lebih cepat daripada beberapa OR operator, terutama pada kumpulan data yang lebih besar.

Manfaat lain dari IN operator, apakah itu dapat berisi SELECT . yang lain daftar. Ini dikenal sebagai subkueri . Subquery adalah kueri yang bersarang di dalam kueri lain (atau bahkan subkueri lain).

Ini contohnya.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Hasil:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

Contoh ini menunjukkan kepada kita berapa banyak jenis hewan peliharaan di hotel hewan peliharaan kita.

Kita bisa menggunakan NOT operator untuk membalik ini dan melihat berapa banyak jenis hewan peliharaan yang bukan di hotel hewan peliharaan kami.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId NOT IN ( SELECT PetTypeId FROM Pets );

Hasil:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 4           | Rabbit    |
+-------------+-----------+

Jadi database kami berisi jenis hewan peliharaan Rabbit , tetapi saat ini kami tidak memiliki kelinci sebagai hewan peliharaan.

+ dan || Operator Penggabungan String

+ dan || operator penggabungan string memungkinkan Anda menggabungkan string. Penggabungan string adalah operasi penggabungan string karakter secara end-to-end.

Alasan saya mencantumkan dua operator yang melakukan hal yang sama adalah karena, + operator didukung di SQL Server, dan || operator didukung di DB2, Oracle, PostgreSQL, SQLite.

Berikut ini contoh yang berfungsi di SQL Server.

SELECT 
    FirstName,
    LastName,
    FirstName + LastName
FROM Owners;

Hasil:

+-------------+------------+--------------------+
| FirstName   | LastName   | (No column name)   |
|-------------+------------+--------------------|
| Homer       | Connery    | HomerConnery       |
| Bart        | Pitt       | BartPitt           |
| Nancy       | Simpson    | NancySimpson       |
| Boris       | Trump      | BorisTrump         |
+-------------+------------+--------------------+

Dalam hal ini, pemilik memiliki nama depan dan nama belakang mereka disimpan di kolom yang berbeda. Dalam SELECT . kami list, pertama-tama kami mengambilnya satu per satu, tetapi kami juga mengambilnya lagi, menggunakan operator gabungan untuk menggabungkannya.

Ada beberapa masalah dengan hasil kami.

  • Tidak ada spasi antara nama depan dan belakang.
  • Tidak ada nama kolom.

Untungnya ini mudah diperbaiki.

Kita dapat menggunakan operasi penggabungan yang sama untuk memasukkan spasi antara nama depan dan nama belakang.

Dan kita dapat menggunakan alias kolom ke hasil gabungan untuk memberikan nama kolom di kumpulan hasil.

SELECT 
    FirstName,
    LastName,
    FirstName + ' ' + LastName AS FullName
FROM Owners;

Hasil:

+-------------+------------+---------------+
| FirstName   | LastName   | FullName      |
|-------------+------------+---------------|
| Homer       | Connery    | Homer Connery |
| Bart        | Pitt       | Bart Pitt     |
| Nancy       | Simpson    | Nancy Simpson |
| Boris       | Trump      | Boris Trump   |
+-------------+------------+---------------+

Jika Anda menggunakan DB2, Oracle, PostgreSQL, SQLite, tukar + untuk || dan itu akan berfungsi dengan baik.

Jika Anda menggunakan MySQL atau MariaDB, Anda harus menggunakan CONCAT() berfungsi untuk menggabungkan string.

The LIKE Operator

LIKE operator memungkinkan Anda untuk melakukan pencocokan pola. Ini menentukan apakah string karakter tertentu cocok dengan pola tertentu. Sebuah pola dapat menyertakan karakter reguler dan karakter wildcard.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%.com';

Hasil:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
+-------------+------------+-------------------+

Dalam contoh ini, saya menggunakan LIKE operator bersama dengan % operator wildcard untuk mengembalikan pemilik yang alamat emailnya diakhiri dengan .com .

Operator Bonus! % Operator Wildcard

% operator wildcard cocok dengan string apa pun dari nol atau lebih karakter. Ini dapat digunakan sebagai awalan atau akhiran, dan juga dapat digunakan di tengah string.

Ini cenderung lebih umum digunakan sebagai sufiks, dan penggunaannya terbatas di tengah pola, meskipun ada beberapa kasus penggunaan yang valid untuk menggunakannya di tengah pola, seperti berikut:

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '[email protected]%.com';

Hasil:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | [email protected] |
+-------------+------------+------------------+

Dalam hal ini, kami tidak tahu alamat email bart, tetapi kami tahu itu dimulai dengan [email protected] dan diakhiri dengan .com . Oleh karena itu, kami dapat menggunakan LIKE dalam hubungannya dengan % operator wildcard untuk mengisi sisanya.

Ingatlah bahwa teknik ini dapat mengembalikan banyak baris yang tidak relevan, bergantung pada data, dan cara Anda menyusun pernyataan SQL.

Perlu diketahui juga bahwa kueri yang berisi LIKE klausa dapat berjalan jauh lebih lambat daripada kueri lain, dan Anda mungkin harus menghindari penggunaan LIKE klausa kecuali Anda benar-benar membutuhkannya. Menggunakan % operator sebagai awalan bisa sangat lambat.

Itu tidak berarti Anda tidak boleh menggunakannya sama sekali. LIKE operator adalah bagian integral dari SQL, dan Anda akan menemukan banyak skenario di mana itu akan menjadi satu-satunya pilihan (atau setidaknya, pilihan terbaik).

Lebih Banyak Operator SQL

Lihat daftar lengkap Operator SQL saya untuk sejumlah besar operator lain yang tidak disertakan di sini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ikhtisar Fungsi DBCC CheckDB

  2. Lembar Cheat SQL UNION dengan 10 Tips Mudah dan Berguna

  3. Kumpulan Masalah 2 – Mengidentifikasi Entitas dan Atribut

  4. Cara Menambahkan Posisi Peringkat ke Baris dengan DENSE_RANK() di SQL

  5. Menghubungkan Meja Kerja Snowflake DB &IRI