Data Manipulation Language (DML) Pada MySQL
Daftar Isi
Merlindawibowo.com – Data Manipulation Language (DML) dapat digunakan apabila DDL telah terjadi, sehingga fungsi dari Query DML ini untuk melakukan manipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan dan penghapusan data.
Perintah Dasar dalam DML
- INSERT : digunakan untuk menyisipkan data ke dalam tabel
- DELETE : digunakan untuk menghapus data dari tabel
- UPDATE : digunakan untuk mengubah data dalam tabel
- SELECT : digunakan untuk memilih dan menampilkan data
A. INSERT
Perintah INSERT digunakan untuk menambahkan baris atau memasukkan data pada suatu tabel. Syarat untuk memasukkan data adalah telah terciptanya tabel pada sebuah database terlebih dahulu. Terdapat tiga cara untuk memasukkan data, yaitu:
INSERT INTO namatabel VALUES (nilai1, nilai2, nilai-n);
Perintah ini berfungsi untuk mengisikan data ke dalam tabel secara urut dari kolom paling kiri hingga paling akhir. Values yang diberikan harus sama jumlahnya dengan kolom yang tersedia di dalam tabel.
INSERT INTO namatabel (kolom1, kolom2, kolom-n) VALUES (nilai1, nilai2, nilai-n);
Perintah di atas tidak menghiraukan apakah kolom yang seharusnya NOT NULL terisi atau tidak. Cara ini digunakan seperlunya, karena dapat menimbulkan error seperti kolom Primary key yang tidak terisi.
INSERT INTO namatabel SET kolom1 = nilai1, kolom2 = nilai2, kolom-n = nilai-n;
Perintah di atas harus menuliskan nama kolom secara benar, jika tidak maka akan menyebabkan error.
Keterangan:
Jika data bertipe string, date atau time (contoh: merlinda, pemodelan basis data, 1993-03- 20) maka pemberian nilainya diapit dengan tanda petik tunggal (‘merlinda’) atau tanda petik ganda (“merlinda”). Jika data bertipe numerik (contoh: 11, 9) maka pemberian nilainya tidak diapit tanda petik tunggal maupun ganda.
Baca juga : Data Definition Language (DDL) pada MySQL
B. DELETE
Perintah DELETE digunakan untuk menghapus record suatu tabel. Sedangkan untuk menghapus record pada kolom tertentu menggunakan perintah UPDATE. DELETE FROM namatabel [WHERE kondisi];
Perintah dalam tanda [] bersifat opsional untuk menghapus suatu baris dengan suatu kondisi tertentu.
C. UPDATE
Perintah UPDATE digunakan untuk mengubah isi data pada satu atau beberapa kolom pada suatu tabel.
UPDATE namatabel SET kolom-n = nilai-n [WHERE kondisi]; Perintah dalam tanda [] bersifat opsional untuk mengubah suatu baris dengan suatu kondisi tertentu.
D. SELECT
Perintah SELECT digunakan untuk menampilkan isi dari suatu tabel yang dapat dihubungkan dengan tabel yang lainnya. Fungsi SELECT dalam bentuk sederhana hanya mempunyai pasangan kata FROM, yang berarti memilih tabel yang akan di SELECT. Terdapat tiga cara untuk menampilkan isi dari suatu tabel, yaitu:
1. Menampilkan data untuk semua kolom menggunakan asterisk (*)
SELECT * FROM namatabel;
2. Menampilkan data untuk kolom tertentu
SELECT kolom1, kolom2, kolom-n FROM namatabel;
3. Menampilkan data dengan kondisi data tertentu dengan klausa
WHERE SELECT * FROM namatabel WHERE kondisi;
Beberapa operator perbandingan yang dapat digunakan pada klausa WHERE adalah “=” (sama dengan), > (lebih dari), < (kurang dari), < > (tidak sama dengan), >= (lebih dari atau sama dengan), <= (kurang dari atau sama dengan). Adapun operator yang lain, yaitu AND, OR, NOT, BETWEEN-AND, IN dan LIKE.
Operasi SELECT
Select digunakan sebagai operasi untuk mengambil sejumlah baris data yang memenuhi predikat yang diberikan. Predikat mengacu pada kondisi yang ingin dipenuhi dalam operasi seleksi. Beberapa perintah dalam operasi Select antara lain:
1. Memberikan nama lain pada kolom
SELECT namakolomlama AS namakolombaru FROM namatabel;
Contoh penggunaan:
SELECT jenis AS judul_buku FROM master_buku;
2. Menggunakan alias untuk nama tabel
SELECT namaalias.namakolom1, namaalias.namakolom2 FROM namatabel namaalias;
Contoh penggunaan:
SELECT B.judul_buku, B.pengarang FROM master_buku B;
3. Menampilkan data lebih dari dua tabel
SELECT * FROM namatabel1, namatabel2, namatabel-n;
Contoh penggunaan:
SELECT * FROM master_buku;
4. Query Menggunakan Beberapa Parameter Kondisional
Kita dapat memilih data menggunakan beberapa kombinasi parameter kondisional dihubungkan dengan statement AND atau OR. Statement AND dapat juga ditulis sebagai ‘&&’, sedangkan statement OR juga dapat ditulis sebagai ‘||’. Statement AND memiliki precedence yang lebih tinggi dibandingkan dengan statement OR.
Baca juga : Pengenalan MySQL
Contoh penggunaan:
SELECT first_name, last_name, salary, city FROM employee WHERE city=’New York’ AND salary > 4000;
5. Query Data Bertipe Teks dengan Pattern Matching
Pattern matching dapat digunakan untuk memilih data bertipe teks dengan karakteristik tertentu. Command yang digunakan untuk melakukan pencocokan adalah LIKE dan NOT LIKE. Berikut beberapa fasilitas pattern matching yang disediakan oleh MySQL.
Simbol | Fungsi |
_ | Match any single character |
% | Match an arbitrary number of character (including non character) |
Contoh penggunaan 1:
SELECT CONCAT(first_name,” “,last_name)
FROM employee
WHERE first_name LIKE ‘J_ _ _ _’;
Contoh di atas menunjukkan bagaimana memilih employee yang bernama depan diawali dengan huruf ‘J’ dan diikuti oleh tepat 4 buah karakter apapun.
Contoh penggunaan 2:
SELECT CONCAT(first_name,” “,last_name)
FROM employee
WHERE first_name NOT LIKE ‘%n’;
Contoh di atas menunjukkan bagaimana memilih employee yang bernama depan tidak diakhiri dengan karakter ‘n’.
6. Query Data Unik Menggunakan DISTINCT
Digunakan untuk menghilangkan duplikasi dari data yang dicari sehingga didapatkan data yang unik (hanya muncul satu kali).
Contoh penggunaan:
SELECT DISTINCT city FROM employee;
Pada contoh di atas ketika statement DISTINCT tidak digunakan, akan ditampilkan semua nama kota dari tabel employee. Akan ada deskripsi yang keluar lebih dari satu kali, misalnya kota “New York”.
7. Membatasi Hasil Query dengan LIMIT
Data yang dihasilkan dari query yang kita masukkan dapat kita batasi menggunakan statement LIMIT.
Contoh penggunaan 1:
SELECT * FROM employee LIMIT 5;
Pada contoh di atas, kita membatasi jumlah data yang ditampilkan yaitu sebanyak 5 record data saja.
Contoh penggunaan 2:
SELECT * FROM employee LIMIT 2,3;
Pada contoh di atas, kita membatasi data yang ditampikan dimulai dari data ke-2 hingga data ke-4 (jumlahnya sebanyak 3 data). Hal yang perlu diperhatikan adalah urutan data dimulai dari urutan ke-0.
8. Mengelompokkan Hasil Query Menggunakan GROUP BY
Hasil query dapat dikelompokkan berdasarkan field/kolom menggunakan statement GROUP BY.
Contoh penggunaan:
SELECT * FROM employee GROUP BY city;
Contoh di atas menunjukkan pengelompokan berdasarkan ‘city’. Hasil query akan menunjukkan data yang ditampilkan adalah data yang pertama untuk setiap kelompok ‘city’. Hal yang perlu diperhatikan adalah data yang ditampilkan terurut berdasarkan data pada kolom ‘city’.
Baca juga : Karakteristik Big Data 10 v
9. Mendapatkan Jumlah Anggota Tiap Kelompok Menggunakan COUNT()
Query menggunakan GROUP BY hanya menunjukkan data pertama yang muncul. Jika kita ingin mendapatkan jumlah anggota setiap kelompok, kita dapat menggunakan fungsi COUNT().
Contoh penggunaan 1:
SELECT city, COUNT(*) FROM employee GROUP BY city;
Hasil query di atas menunjukkan jumlah employee yang ada di setiap kota. Kita juga dapat melakukan kombinasi GROUP BY dengan parameter kondisi sebagai berikut:
SELECT city, COUNT(*) FROM employee WHERE description=’Programmer’ GROUP BY city;
Hasil query di atas menunjukkan jumlah “Programmer” yang ada pada setiap kota.
10. Parameter Kondisional dengan HAVING
Statement HAVING merupakan parameter kondisional seperti WHERE yang bertindak sebagai pembatas sekunder dari hasil query. Statement HAVING biasanya digunakan untuk pembatas sekunder setelah statement GROUP BY, walaupun bisa saja digunakan tanpa menggunakan GROUP BY.
Contoh penggunaan 1:
SELECT first_name, last_name, salary FROM employee HAVING salary > 3000;
Hasil query di atas menunjukkan parameter HAVING dapat digunakan seperti parameter WHERE.
Contoh penggunaan lainnya:
SELECT city, COUNT(*), salary FROM employee WHERE salary > 3000 GROUP BY city;
SELECT city, COUNT(*), salary FROM employee GROUP BY city HAVING salary > 3000;
Hasil query di atas menunjukkan perbedaan urutan dijalankannya filtering, sehingga didapatkan hasil yang berbeda. Query (a) melakukan pemilihan salary>3000 terlebih dahulu sebelum kemudian dikelompokkan berdasarkan city. Query (b) melakukan pengelompokan terhadap city terlebih dahulu. Pengelompokan tersebut menyebabkan data pertama untuk setiap kelompok saja yang terpilih. Ketika parameter HAVING dijalankan, query hanya akan menampilkan data pertama untuk setiap kelompok city yang memiliki salary>3000.
11. Mengurutkan Hasil Query Menggunakan ORDER BY
Hasil query dapat kita urutkan berdasarkan field/kolom tertentu menggunakan ORDER BY. Statement ASC dan DESC dapat kita tambahkan untuk mendapatkan pengurutan naik atau turun.
Contoh penggunaan:
SELECT CONCAT(first_name,” “,last_name) AS name FROM employee ORDER BY name;
SELECT CONCAT(first_name,” “,last_name) AS name FROM employee ORDER BY name DESC;
Query (a) mengurutkan employee berdasarkan nama. Secara default, ORDER BY menggunakan urutan naik. Kita dapat menggunakan DESC untuk mendapatkan urutan turun seperti yang ditunjukkan oleh query (b).
12. Mengurutkan Hasil Query Berdasarkan Lebih Dari Satu Kolom
Pengurutan hasil query dapat dilakukan berdasarkan lebih dari satu kolom. Statement urutan (ASC dan DESC) melekat pada kolom yang mendahuluinya. Contoh penggunaan:
SELECT first_name, last_name, city FROM employee ORDER BY first_name, city;
Contoh query di atas menunjukkan pengurutan berdasarkan first_name terlebih dahulu sebelum pengurutan berdasarkan city. Jika ada data dengan first_name yang sama, baru data tersebut diurutkan berdasarkan city.
13. Operator BETWEEN
Operator BETWEEN digunakan untuk memfilter data yang bernilai diantara dua buah nilai yang dispesifikasikan. Sedangkan operator NOT BETWEEN adalah negasi dari BETWEEN, dimana digunakan untuk memfilter data yang tidak bernilai diantara dua buah nilai yang dispesifikasikan
Contoh penggunaan:
SELECT first_name, last_name, salary FROM employee WHERE salary BETWEEN 1000 AND 3000;
Hasil query di atas menunjukkan daftar employee dengan pendapatan antara 1000 dan 3000. Operator BETWEEN value1 AND value2 memiliki nilai yang ekivalen dengan value1 ≤ data < value2. Operator BETWEEN juga dapat digunakan untuk memfilter nilai alfanumerik (karakter huruf).
Sub-Query
Sub-query adalah statement SELECT di dalam statement SELECT. Sebuah sub query dinyatakan di dalam tanda kurung (). Statement di luar statement sub-query adalah salah satu dari statement SELECT, INSERT, UPDATE, DELETE, SET atau DO. Contoh penggunaan:
SELECT first_name, last_name, salary FROM employee WHERE salary = (SELECT MAX(salary) FROM employee);
Operator penghubung ‘=’ hanya dapat digunakan untuk menerima satu buah nilai, sehingga ketika hasil dari sub-query berisi lebih dari satu data maka akan terjadi pesan error.
1. Sub-query dengan ALL
Command ALL diikuti dengan operator perbandingan dan memiliki arti menampilkan nilai jika perbandingan bernilai benar untuk semua data. Contoh penggunaan:
SELECT first_name, last_name, salary FROM employee WHERE salary > ALL(SELECT salary FROM employee WHERE salary<2000);
Query di atas menghasilkan daftar employee yang memiliki salary lebih besar dari semua employee yang memiliki salary<2000.
2. Sub-query dengan ANY
Command ANY diikuti dengan operator perbandingan, memiliki arti menampilkan nilai yang sesuai dengan apapun yang dihasilkan oleh sub-query. Alias dari ANY adalah SOME.
Contoh penggunaan:
SELECT first_name, last_name, salary FROM employee WHERE salary > ANY(SELECT salary FROM employee WHERE salary<2000);
Hasil sub-query contoh di atas adalah semua employee yang memiliki salary kurang dari 2000. Hasil keseluruhan menampilkan semua employee yang memiliki salary yang lebih besar dari hasil sub-query. Misalkan, pada keseluruhan data employee terdapat employee A dengan salary terendah yaitu 100, maka employee A tersebut tidak akan ikut ditampilkan karena tidak ada salary lain yang lebih kecil dari A.
3. Sub-query dengan EXISTS
Sebuah sub-query dengan EXISTS memberikan nilai TRUE jika sub-query tersebut memiliki hasil. Jika sub-query bernilai TRUE, maka query utama akan dijalankan. Negari dari sub-query EXISTS adalah NOT-EXISTS.
Contoh penggunaan:
SELECT first_name, last_name, city FROM employee WHERE EXISTS(SELECT * FROM employee WHERE city=’Toronto’);
4. Sub-query dengan IN
Seperti yang telah disebutkan sebelumnya, operator ‘=’ hanya dapat digunakan ketika hasil sub-query memiliki hasil tepat satu. Jika hasil sub-query berjumlah lebih dari satu data, maka kita dapat menggunakan command IN.
Contoh penggunaan:
SELECT first_name, last_name, description FROM employee WHERE description IN(SELECT title FROM job);
Semoga bermanfaat!!