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.