MANIPULASI DATA DENGAN BANYAK KONDISI
Untuk menampilkan data dengan banyak kondisi dapat menggunakan operator logika yaitu: NOT, AND, OR, BETWEEN, LIKE, IN, SOME, ANY dan ALL. Untuk operator NOT, AND dan OR mempunyai kondisi logika dengan aturan baku. Pelajari selengkapnya bahasa SQL sebagai DML pada postingan ini.
Untuk memudahkan Anda dalam belajar dan praktek (Learn by Doing), maka saya asumsikan Anda telah mengimport database northwind. Tapi jika belum, silakan download DI SINI terlebih dahulu.
Untuk memudahkan Anda dalam belajar dan praktek (Learn by Doing), maka saya asumsikan Anda telah mengimport database northwind. Tapi jika belum, silakan download DI SINI terlebih dahulu.
AND
Berikut adalah perintah SQL untuk menampilkan record pada tabel products yang memiliki CategoryID=2 dan SupplierID=2.
SELECT * FROM Products WHERE CategoryID=2 AND SupplierID=2;
| SQL AND |
OR
Berikut adalah perintah SQL untuk menampilkan record pada tabel products yang memiliki CategoryID=2 atau SupplierID=2.SELECT * FROM Products WHERE CategoryID=2 OR SupplierID=2;
| SQL OR |
BETWEEN
Berikut adalah perintah SQL untuk menampilkan record pada tabel products yang memiliki UnitsInStock antara 20 sampai 50. Diluar batasan itu tidak ditampilkan.
SELECT * FROM Products WHERE UnitsInStock BETWEEN 20 AND 50;
| SQL BETWEEN |
SELECT
p.ProductName, SUM(od.Quantity) Terjual
FROM
products AS p JOIN order_details AS od
ON p.productID=od.productID
JOIN orders AS o
ON od.orderID=o.orderID
WHERE YEAR(o.OrderDate) BETWEEN 1996 AND 1997
GROUP BY 1
| Query Mengetahui Jumlah Omzet |
IN
Berikut adalah perintah SQL untuk menampilkan record pada suatu tabel, dengan cara menggunakan salah satu record sebagai referensi.
Contoh, saya pilih ProductID sebagai referensi SupplierID dan CategoryID untuk menampilkan data terkait. Sebenarnya contoh ini kurang pas, namun masih bisa untuk menjelaskan cara kerja perintah IN.
SELECT * FROM products WHERE ProductID IN (SupplierID,CategoryID);
MENGURUTKAN DATA (ORDER BY)
Mengurutkan record menggunakan perintah ORDER BY [ASC | DESC]. Pengurutan berlaku untuk tipe data string dan integer/numeric. Jika dalam pengurutan tidak disebutkan jenis pengurutannya maka decara default diset urut naik. Jika ada klausa WHERE maka order by diletakkan setelah WHERE.
1. Mengurutkan Secara Ascending (Naik)
1. Mengurutkan Secara Ascending (Naik)
SELECT * FROM products ORDER BY ProductName;
Secara default pengurutan (ORDER) SQL adalah ASCENDING. Meskipun sebenarnya dengan penulisan seperti ini juga bisa:
SELECT * FROM products ORDER BY ProductName ASC;
| SQL Default Order ProductName (ASCENDING) |
SELECT * FROM products ORDER BY ProductName DESC;
| SQL Order ProductName (DESCENDING) |
Contoh ini menggunakan SupplierID sebagai prioritas acuan, sehingga penempatannya harus paling kiri diantara acuan yang lain. Sedangkan CategoryID akan kami gunakan sebagai Acuan minoritas.
SELECT * FROM products ORDER BY SupplierID, CategoryID;
| SQL Priority Order |
SELECT * FROM products ORDER BY SupplierID DESC, CategoryID;
| SQL Order Descending - Ascending |
SELECT * FROM products ORDER BY SupplierID, CategoryID DESC;
| SQL Order Ascending - Descending |
SELECT TitleOfCourtesy,FirstName,LastName
FROM employees ORDER BY FirstName ASC;
| Ascending untuk menampilkan nama depan dan belakang |
PENGELOMPOKAN RECORD
Untuk menampilkan pengelompokan record gunakan GROUP BY. Kemampuan GROUP BY akan terlihat berbeda dengan ORDER BY manakala kita memanfaatkannya untuk keperluan Agregasi secara khusus pada kolom yang belum dikelompokkan.
Contoh:
Berikut akan kami tunjukan bagaimana cara mengetahui jumlah orderan yang perlu dikirim ke setiap negara.
Contoh:
Berikut akan kami tunjukan bagaimana cara mengetahui jumlah orderan yang perlu dikirim ke setiap negara.
SELECT COUNT(OrderID), ShipCountry FROM orders GROUP BY (ShipCountry);
| SQL GROUP BY |
SELECT
c.ContactName,
s.CompanyName,
COUNT(O.ShipVia)Frequensi
FROM
orders AS O JOIN shippers AS s
ON s.ShipperID=O.ShipVia
JOIN customers AS c
ON c.CustomerID=O.CustomerID
group by 1,2
| Query mengetahui nama pembeli |
LIKE
Pembahasan lebih mendetail tentang Query LIKE bisa Anda simak di SQL Pencarian String.
Sepintas akan kami berikan contoh bagaimana menampilkan employees dengan nama depan diawali dengan huruf A:
SELECT TitleOfCourtesy,FirstName,LastName
FROM employees WHERE FirstName LIKE 'A%';
| SQL LIKE - Acuan Awal String |
UPDATE
Tengok terlebih dahulu data yang ingin di update (Sebelum UPDATE).SELECT ProductName,SupplierID,UnitsInStock
FROM products WHERE
SupplierID=1;
| Data Sebelum Update |
Proses Update
UPDATE products SET UnitsInStock=UnitsInStock+5
WHERE SupplierID=1;
Tengok kembali datanya,
| Data Sesudah DiUPDATE |
COUNT
Menghitung jumlah data yang tersedia dengan kondisi SupplierID=1;SELECT count(*) FROM products WHERE SupplierID=1;
| Hasil Penghitungan Jumlah Record |
Memberikan judul laporan sebagai "Jumlah"
SELECT count(*) AS Jumlah
FROM products WHERE
SupplierID=1;
| Rename Judul Laporan |
LIMIT
Memberikan batasan dengan hanya menampilkan max 10 record secara randomSELECT TitleOfCourtesy,FirstName,LastName
FROM employees ORDER BY RAND() LIMIT 10;
| Memberikan batasan - LIMIT 10 record |
Memberikan batasan dengan hanya menampilkan max 5 record
SELECT TitleOfCourtesy,FirstName,LastName
FROM employees ORDER BY FirstName ASC LIMIT 5;
| Memberikan batasan - LIMIT 5 record |
Memberikan batasan dengan parameter;
LIMIT mulai_dari, jumlah_record
Di bawah ini akan saya berikan contoh menampilkan record employees yang dimulai dengan interval 3 dari urutan ke-1, hal itu sama saja dengan menampilkan record mulai dari urutan ke-4. Kemudian maksimal record yang ingin saya tampilkan adalah 3.
Perhatikan laporan employees di atas, interval 0 (urutan ke-1) ditempati oleh Andrew, berarti interval 3 (urutan ke-4) ditempati oleh Laura.
SELECT TitleOfCourtesy,FirstName,LastName
FROM employees ORDER BY FirstName ASC LIMIT 3,4;
| LIMIT interval,row |
