LMS-SPADA INDONESIA
Seperti yang telah dibahas dalam pengenalan SQL pada topik sebelumnya, pernyataan SELECT memungkinkan kita untuk mengambil data dari satu atau beberapa tabel basis data. Dalam topik ini, akan dibahas penggunaan query pada satu tabel. SELECT juga dapat digunakan untuk data tertentu yang cocok dengan kriteria yang diberikan.
Dalam membahasa perintah SELECT, pada bagian ini digunakan contoh database sebagai berikut:
CREATE DATABASE sql_latihan;
Beralih ke database yang baru dibuat:
USE sql_demo;
Buat tabel pengguna baru:
CREATE TABLE pengguna
(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
about TEXT,
email VARCHAR(255),
birthday DATE,
active BOOL
);Masukkan beberapa data yang bisa kita gunakan:
INSERT INTO users
( username, email, active )
VALUES
('bobo', 'b@latihan.com', true),
('jojo', 'd@latihan.com', false),
('toni', 't@latihan.com', true);Keluaran:
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0Sekarang kita sudah memiliki beberapa data dalam userstabel, mari kita lanjutkan dan ambil semua entri dari tabel tersebut:
SELECT * FROM pengguna;
Ringkasan pernyataan:
SELECT: Pertama, kita tentukan tindakan yang ingin kita lakukan, dalam kasus kita, kita ingin memilih atau mendapatkan beberapa data dari basis data.*: Bintang di sini menunjukkan bahwa kita ingin mendapatkan semua kolom yang terkait dengan tabel yang kita pilih.FROM: Pernyataan from memberi tahu MySQL tabel mana yang ingin kita pilih datanya. Anda perlu mengingat bahwa Anda dapat memilih dari beberapa tabel, tetapi ini sedikit lebih rumit, dan kami akan membahasnya dalam beberapa bab berikutnya.pengguna: Ini adalah nama tabel yang datanya ingin kita pilih.Ini akan mengembalikan semua entri dalam pengguna tabel beserta semua kolomnya:
+----+----------+-------+----------+--------+---------------+
| id | username | about | birthday | active | email |
+----+----------+-------+----------+--------+---------------+
| 1 | bobi | NULL | NULL | 1 | b@latihan.com |
| 2 | jojo | NULL | NULL | 0 | d@latihan.com |
| 3 | tony | NULL | NULL | 1 | t@latihan.com |
+----+----------+-------+----------+--------+---------------+
3 rows in set (0.00 sec)
Seperti yang terlihat pada output peritah SELECT mendapatkan daftar 3 pengguna yang baru saja kita buat, termasuk semua kolom dalam tabel tersebut. Dalam beberapa kasus, tabel mungkin memiliki banyak kolom, dan Anda mungkin tidak ingin melihat semuanya. Misalnya, kita memiliki kolom aboutdan birthdayyang semuanya NULLsaat ini. Jadi mari kita lihat bagaimana kita dapat membatasinya dan hanya mendapatkan daftar kolom tertentu.
Pencocokan pola SQL memungkinkan Anda mencari pola jika Anda tidak mengetahui kata atau frasa yang Anda cari. Untuk melakukannya, kami menggunakan karakter wildcard untuk mencocokkan pola bersama dengan operator LIKE dan ILIKE.
Dua karakter wildcard yang paling umum adalah _dan %.
_Mencocokkan karakter tunggal apa pun dan %mencocokkan sejumlah karakter yang sembarangan.
Mari kita lihat contoh bagaimana Anda mencari usernameakhiran dengan y:
SELECT * FROM pengguna WHERE username LIKE '%y';
Keluaran:
+----+----------+-------+----------+--------+---------------+
| id | username | about | birthday | active | email |
+----+----------+-------+----------+--------+---------------+
| 1 | bobi | NULL | NULL | 1 | b@latihan.com |
| 3 | toiy | NULL | NULL | 1 | t@latihan.com |
+----+----------+-------+----------+--------+---------------+
Seperti yang Anda lihat di atas, kami biasa %mencocokkan sejumlah karakter sebelum karakter y.
Jika kita mengetahui jumlah karakter yang ingin kita cocokkan, kita dapat menggunakan _. Setiap karakter _mewakili satu karakter.
Jadi, jika kita ingin mencari nama pengguna yang memiliki ekarakter kedua, kita akan melakukan sesuatu seperti ini:
SELECT * FROM pengguna WHERE username LIKE '_e%';
Keluaran:
+----+----------+-------+----------+--------+---------------+
| id | username | about | birthday | active | email |
+----+----------+-------+----------+--------+---------------+
| 2 | jojo | NULL | NULL | 0 | d@latihan.com |
+----+----------+-------+----------+--------+---------------+
Harap diingat bahwa LIKEoperator peka huruf besar/kecil, artinya tidak akan mencocokkan huruf kapital dengan huruf kecil dan sebaliknya. Jika Anda ingin mengabaikan huruf kapital, gunakan ILIKEoperator sebagai gantinya.
Seperti yang telah kami sebutkan di bab sebelumnya, setiap pernyataan SQL harus diakhiri dengan titik koma: ;. Atau, daripada menggunakan titik koma, Anda dapat menggunakan \Gkarakter yang akan memformat output dalam bentuk daftar, bukan tabel.
Sintaksnya benar-benar sama tetapi Anda hanya mengubah ;with \G:
SELECT * FROM pengguna \G
Output akan diformat seperti ini:
*************************** 1. row ***************************
id: 1
username: bobi
about: NULL
birthday: NULL
active: 1
email: b@latihan.com
*************************** 2. row ***************************
id: 2
username: jojo
about: NULL
birthday: NULL
active: 0
email: d@latihan.com
...
Hal ini sangat berguna jika tabel Anda terdiri dari banyak kolom dan tidak dapat dimuat di layar, sehingga sulit membaca kumpulan hasil.
Anda dapat membatasi ini ke sekumpulan kolom tertentu. Katakanlah Anda hanya memerlukan kolom usernamedan active. Dalam kasus ini, Anda akan mengubah *simbol dengan kolom yang ingin Anda pilih dibagi dengan koma:
SELECT username,active FROM pengguna;
Keluaran:
+----------+--------+
| username | active |
+----------+--------+
| bobi | 1 |
| jojo | 0 |
| toni | 1 |
+----------+--------+
Seperti yang Anda lihat, kami hanya mendapatkan kembali 2 kolom yang telah kami tentukan dalam SELECTpernyataan.
CATATAN: Nama SQL tidak peka huruf besar/kecil. Misalnya, nama pengguna ≡ NAMA PENGGUNA ≡ namapengguna.
Dalam pernyataan SQL, kolom dapat berupa literal tanpa FROMklausa.
SELECT 'Soni' as username;
Keluaran:
+----------+
| username |
+----------+
| Soni |
+----------+
Klausa pilih dapat berisi ekspresi aritmatika yang melibatkan operasi +, –, *, dan /.
SELECT username, active*5 as new_active FROM pengguna;
Keluaran:
+----------+------------+
| username | new_active |
+----------+------------+
| bobi | 5 |
| jojo | 0 |
| toni | 5 |
+----------+------------+
Klausa ini LIMITsangat berguna jika Anda ingin membatasi jumlah hasil yang Anda dapatkan. Misalnya, saat ini, kita memiliki 3 pengguna dalam basis data, tetapi katakanlah Anda hanya ingin mendapatkan 1 entri saat menjalankan pernyataan tersebut SELECT.
Hal ini dapat dicapai dengan menambahkan LIMITklausa di akhir pernyataan Anda, diikuti dengan jumlah entri yang ingin Anda dapatkan. Misalnya, katakanlah kita ingin mendapatkan hanya 1 entri. Kita akan menjalankan kueri berikut:
SELECT * FROM pengguna LIMIT 1;
Keluaran:
+----+----------+-------+----------+--------+---------------+
| id | username | about | birthday | active | email |
+----+----------+-------+----------+--------+---------------+
| 2 | bobi | NULL | NULL | 1 | b@latihan.com |
+----+----------+-------+----------+--------+---------------+
Jika Anda ingin mendapatkan 2 entri, Anda akan mengubahnya, LIMIT 2dan seterusnya.
Jika Anda hanya ingin mendapatkan jumlah entri dalam kolom tertentu, Anda dapat menggunakan COUNTfungsi ini. Ini adalah fungsi yang sangat sering saya gunakan.
Sintaksisnya adalah sebagai berikut:
SELECT COUNT(*) FROM pengguna;
Keluaran:
+----------+
| COUNT(*) |
+----------+
| 3 |
+----------+
Seperangkat fungsi bermanfaat lain yang serupa COUNTyang akan membuat hidup Anda lebih mudah adalah:
MIN: Ini akan memberi Anda nilai terkecil dari kolom tertentu. Misalnya, jika Anda memiliki toko daring dan ingin mendapatkan harga terendah, Anda akan menggunakan MINfungsi ini. Dalam kasus kami, jika kami ingin mendapatkan ID pengguna terendah, kami akan menjalankan yang berikut:SELECT MIN(id) FROM users;
Ini akan mengembalikan 1ID pengguna terendah yang kita miliki yaitu 1.
MAX: Sama seperti MIN, tetapi akan mengembalikan nilai tertinggi:SELECT MAX(id) FROM pengguna;
Dalam kasus kita, ini akan terjadi 3karena kita hanya memiliki 3 pengguna, dan nilai tertinggi pada idkolom tersebut adalah 3.
AVG: Sesuai namanya, fungsi ini akan menjumlahkan semua nilai kolom tertentu dan mengembalikan nilai rata-rata. Karena kita memiliki 3 pengguna dengan ID 1, 2, dan 3, nilai rata-ratanya adalah 6 dibagi 3 pengguna, yaitu 2.SELECT AVG(id) FROM pengguna;
SUMFungsi ini mengambil semua nilai dari kolom yang ditentukan dan menjumlahkannya:SELECT SUM(id) FROM pengguna;
Dalam beberapa kasus, Anda mungkin memiliki entri duplikat dalam sebuah tabel, dan untuk mendapatkan hanya nilai unik, Anda dapat menggunakan DISTINCT.
Untuk mendemonstrasikan hal ini dengan lebih baik, mari jalankan pernyataan insert sekali lagi sehingga kita dapat menduplikasi pengguna yang ada dan memiliki 6 pengguna dalam tabel pengguna:
INSERT INTO pengguna
( username, email, active )
VALUES
('bobi', 'b@latihan.com', true),
('jojo', 'd@latihan.com', false),
('toni', 't@latihan.com', true);Sekarang, jika kamu lari SELECT COUNT(*) FROM pengguna;.
Mari kita juga memilih semua pengguna dan hanya menampilkan usernamekolom:
SELECT username FROM pengguna;
Keluaran:
+----------+
| username |
+----------+
| bobi |
| jojo |
| toni |
| bobi |
| jojo |
| toni |
+----------+
Seperti yang Anda lihat, setiap nama muncul beberapa kali dalam daftar. Kita memiliki bobby, devdjodan tonymuncul dua kali.
Jika kita hanya ingin menampilkan yang unik usernames, kita dapat menambahkan DISTINCTkata kunci ke pernyataan pilih kita:
SELECT DISTINCT username FROM pengguna;
Keluaran:
+----------+
| username |
+----------+
| bobi |
| jojo |
| toni |
+----------+
Seperti yang Anda lihat, entri duplikat telah dihapus dari output.