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

Kueri SQL Dasar

Artikel ini berisi contoh kueri SQL dasar yang dapat digunakan pemula untuk mengambil data dari database mereka.

Dasar SELECT Kueri

Berikut adalah contoh kemungkinan, kueri yang paling umum digunakan dalam SQL:

SELECT * 
FROM Pets;

Hasil:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

Kueri ini memilih semua baris dan semua kolom dari Pets meja. Ini karena tanda bintang (* ) wildcard memilih semua kolom.

Pilih Nama Kolom

Untuk alasan kinerja, biasanya yang terbaik adalah menghindari memilih semua kolom kecuali Anda benar-benar membutuhkannya. Biasanya lebih baik memilih kolom yang Anda butuhkan saja.

Ini contohnya.

SELECT PetId, PetName
FROM Pets;

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Fluffy    |
| 2       | Fetch     |
| 3       | Scratch   |
| 4       | Wag       |
| 5       | Tweet     |
| 6       | Fluffy    |
| 7       | Bark      |
| 8       | Meow      |
+---------+-----------+

Filter Hasil

Anda dapat menambahkan WHERE klausa untuk memfilter hasil ke baris yang Anda butuhkan saja.

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

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Fluffy    |
| 6       | Fluffy    |
+---------+-----------+

Berikut contoh lain untuk memfilter hasil. Kali ini kita menggunakan operator yang lebih besar dari (> ) untuk memfilternya menurut tanggal.

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 |
+-----------+------------+

Anda dapat menukar operator yang lebih besar dari ke operator lain, seperti lebih besar dari atau sama dengan operator (>= ), kurang dari operator (< ), atau kurang dari atau sama dengan operator (<= ).

Anda juga dapat menggunakan BETWEEN operator untuk memfilter hasil ke rentang tertentu (misalnya 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 |
+-----------+------------+

Urutkan Hasil

Anda dapat menambahkan ORDER BY klausa untuk mengurutkan baris yang dikembalikan oleh kueri.

Urutan Ascending

Gunakan ASC kata kunci untuk mengurutkan hasil dalam urutan menaik. Ini adalah nilai default, jadi Anda juga dapat menghilangkan kata kunci ini jika Anda menginginkan hasil dalam urutan menaik.

SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC;

Atau:

SELECT PetId, PetName
FROM Pets
ORDER BY PetName;

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 7       | Bark      |
| 2       | Fetch     |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 8       | Meow      |
| 3       | Scratch   |
| 5       | Tweet     |
| 4       | Wag       |
+---------+-----------+

Urutan Turun

Gunakan DESC kata kunci untuk mengurutkan hasil dalam urutan menurun.

SELECT PetId, PetName
FROM Pets
ORDER BY PetName DESC;

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 4       | Wag       |
| 5       | Tweet     |
| 3       | Scratch   |
| 8       | Meow      |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 2       | Fetch     |
| 7       | Bark      |
+---------+-----------+

Urutkan berdasarkan Beberapa Kolom

Anda dapat mengurutkan menurut beberapa kolom dengan mencantumkan setiap kolom, dipisahkan dengan koma.

SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC, PetId ASC;

SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC, PetId DESC;

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 7       | Bark      |
| 2       | Fetch     |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 8       | Meow      |
| 3       | Scratch   |
| 5       | Tweet     |
| 4       | Wag       |
+---------+-----------+
(8 rows affected)
+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 7       | Bark      |
| 2       | Fetch     |
| 6       | Fluffy    |
| 1       | Fluffy    |
| 8       | Meow      |
| 3       | Scratch   |
| 5       | Tweet     |
| 4       | Wag       |
+---------+-----------+
(8 rows affected)

Kita dapat melihat bahwa kedua Fluffy adalah urutan yang berbeda di setiap hasil (kita dapat mengetahuinya dengan melihat PetId mereka nilai). Ini karena PetName kolom diurutkan terlebih dahulu, lalu PetId mengurutkan duplikat apa pun dari penyortiran pertama.

Urutkan berdasarkan Kolom Tersembunyi

Anda dapat mengurutkan berdasarkan kolom yang tidak disertakan dalam SELECT daftar.

SELECT PetId, PetName
FROM Pets
ORDER BY DOB DESC;

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 5       | Tweet     |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 4       | Wag       |
| 2       | Fetch     |
| 3       | Scratch   |
| 7       | Bark      |
| 8       | Meow      |
+---------+-----------+

Dalam hal ini, kita dapat menyimpulkan dari hasil ini bahwa Tweet adalah hewan peliharaan termuda, dan Meow adalah yang tertua. Ini karena kami mengurutkan berdasarkan tanggal lahir mereka (DOB ) kolom dalam urutan menurun.

Untuk memastikannya, ini dia lagi dengan DOB kolom yang disertakan dalam SELECT daftar.

SELECT PetId, PetName, DOB
FROM Pets
ORDER BY DOB DESC;

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 5       | Tweet     | 2020-11-28 |
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
| 4       | Wag       | 2020-03-15 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 7       | Bark      | NULL       |
| 8       | Meow      | NULL       |
+---------+-----------+------------+

Sebenarnya, sekarang kita dapat melihat bahwa Meow dan Bark memiliki NULL nilai dalam DOB kolom. Oleh karena itu, kami tidak tahu apakah mereka sebenarnya lebih tua atau lebih muda.

Tetapi ini menunjukkan bahwa NULL nilai diperlakukan sebagai nilai serendah mungkin. Perhatikan NULL nilai saat menjalankan kueri.

Pencocokan Pola

Anda dapat menggunakan LIKE operator untuk menggunakan pencocokan pola.

SELECT PetId, PetName
FROM Pets
WHERE PetName LIKE 'F%';

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Fluffy    |
| 2       | Fetch     |
| 6       | Fluffy    |
+---------+-----------+

Dalam contoh ini, kami mencari semua hewan peliharaan yang namanya dimulai dengan huruf F . Tanda persentase (% ) adalah karakter wildcard yang cocok dengan string apa pun yang terdiri dari nol atau lebih karakter. Ini dapat digunakan sebagai awalan atau akhiran, dan juga dapat digunakan di tengah string.

Ini contoh lain.

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

Hasil:

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

Pilih dari Daftar

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       |
+---------+-----------+------------+

Subkueri

Anda dapat menggunakan IN operator saat melakukan subkueri (kueri bersarang di dalam kueri lain).

Ini contohnya.

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

Hasil:

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

Ini mengembalikan kolom dari satu tabel (PetTypes ), tetapi hanya jika ada setidaknya satu baris yang sesuai di tabel lain (Pets ) yang cocok dengan PetTypeId kolom.

Untuk mendemonstrasikan hal ini lebih lanjut, konten yang relevan dari kedua tabel ini ditunjukkan di bawah ini.

PetTypes tabel:

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

Pets tabel:

+-------------+-----------+
| PetTypeId   | PetName   |
|-------------+-----------|
| 2           | Fluffy    |
| 3           | Fetch     |
| 2           | Scratch   |
| 3           | Wag       |
| 1           | Tweet     |
| 3           | Fluffy    |
| 3           | Bark      |
| 2           | Meow      |
+-------------+-----------+

Kita dapat melihat bahwa PetTypes tabel berisi jenis hewan peliharaan Rabbit , tetapi tidak ada hewan peliharaan di Pets tabel telah ditetapkan jenis itu (yaitu tidak ada nilai 4 di Pets.PetTypeId kolom).

Lihat 12 Operator SQL yang Umum Digunakan dan daftar Operator SQL ini untuk informasi selengkapnya tentang operator di SQL.

Bergabung

Dapat diperdebatkan apakah gabungan SQL dianggap sebagai "kueri SQL dasar", tetapi saya tetap akan menyertakan gabungan di sini.

Jadi untuk melengkapi artikel ini, berikut adalah contoh dari inner join.

SELECT 
    p.PetName,
    pt.PetType
FROM Pets p
INNER JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId;

Hasil:

+-----------+-----------+
| PetName   | PetType   |
|-----------+-----------|
| Fluffy    | Cat       |
| Fetch     | Dog       |
| Scratch   | Cat       |
| Wag       | Dog       |
| Tweet     | Bird      |
| Fluffy    | Dog       |
| Bark      | Dog       |
| Meow      | Cat       |
+-----------+-----------+

Dalam hal ini, kami menggunakan INNER JOIN untuk mengembalikan semua nama hewan peliharaan dengan jenis hewan peliharaannya masing-masing. Kami menggunakan ON klausa untuk menentukan predikat yang akan dievaluasi untuk setiap pasangan baris yang digabungkan. Dalam hal ini, p.PetTypeId kolom adalah kunci asing dari pt.PetTypeId kolom, yang merupakan kunci utama untuk PetTypes tabel.

Dalam contoh ini, saya juga menggunakan alias pada tabel, yang membantu menjaga kode tetap bagus dan ringkas.

Lihat Tutorial Bergabung SQL saya untuk lebih banyak contoh bergabung.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL CREATE TABLE untuk Pemula

  2. Langsung ke Memulai Pengembangan Basis Data Berbasis Tes (TDDD)

  3. Notasi Kaki Gagak

  4. GUNAKAN PETUNJUK dan DISABLE_OPTIMIZED_NESTED_LOOP

  5. Menyewakan Mobil Sesederhana Mengemudi:Model Data untuk Perusahaan Rental Mobil