Apakah SQL itu? SQL adalah kependekan dari Structured Query Languange yang merupakan bahasa database standar industri. SQL menyediakan Data Definiton Language (DDL) dan Data Manipulation Language (DML). Walaupun dalam beberapa bagian saling bersangkutan, perintah DDL memungkinkan kita untuk membuat dan mendefinisikan tabel (CREATE TABLE), dan index (CREATE INDEX), sedangkan perintah DML memungkinkan anda untuk membangun query untuk mengambil data (SELECT) dari beberapa tabel, menyisip (INSERT) data baru, memperbaiki (UPDATE) data, dan menghapus (DELETE). Sebelum mempelajari perintah-perintah DDL dan DML, terlebih dahulu kita akan mempelajari struktur sebuah tabel. Struktur Tabel Tabel Nilai Nama Agus Budi 80 65 Nilai
Berdasarkan tabel diatas maka Nama dan Nilai disebut sebagai Kolom sedangkan Agus dan Budi disebut Baris. Selanjutnya kita beranjak memelajari perintah-perintah DDL dan DML. Membuat Tabel Untuk membuat tabel kita menggunakan perintah CREATE TABLE. Berikut adalah bentuk umum dari penggunaan perintah tersebut: create table "namatabel" ("kolom1" "tipe data" (constraint), "kolom2" "tipe data" (constraint), "kolom3" "tipe data" (constraint)); Keterangan: Tipe Data dapat diisi dengan text, longtext, byte, bit, counter, short, long atau datetime. Sedangkan constraint adalah panjang data yang dipesan. Untuk lebih jelasnya akan saya berikan satu contoh: Apabila kita ingin membuat sebuah tabel Pegawai yang berisikan kolom Nama, Jabatan dan Gaji, maka perintah yang harus ditulis adalah: create table Pegawai (Nama text(10), Jabatan text(8), Gaji long(6)); Hasil dari perintah diatas adalah tabel dibawah ini: Pegawai
Nama
Jabatan
Gaji
Memasukkan Data Ke Tabel Untuk memasukkan data ke tabel kita menggunakan perintan INSERT. Bentuk umum dari perintah INSERT dapat anda lihat dibawah ini: insert into "nama tabel" (kolom pertama,...kolom ke-n) nilai(nilai pertama,...nilai ke-n); Keterangan: Nilai adalah data yang akan diisikan. Nilai pertama berarti nilai yang akan diisikan pada kolom pertama. Masih menggunakan tabel Pegawai yang telah kita buat sebelumnya. Sekarang kita akan mencoba memasukkan data-datanya. Data-data yang akan dimasukkan adalah: Nama : Ilham, Jabatan : Manager, Gaji : 500000. Perintah yang harus dituliskan adalah: insert into Pegawai (Nama,Jabatan,Gaji) values (Ilham,Manager,500000); Untuk melihat hasilnya anda harus menggunakan perintah SELECT. Perintah ini akan saya bahas lebih lanjut pada pertemuan kedua. Untuk melihat tabel pegawai, gunakan perintah: SELECT * from Pegawai. Dan tabel anda seharusnya akan terlihat seperti ini: Nama Ilham Jabatan Manager 500000 Gaji
Untuk memasukkan data-data berikutnya, anda dapat mengulangi kembali dengan metode yang sama.
Sales
Lalu dari tabel diatas yang ingin kita tampilkan hanya kolom Kode dan Nama. Perintahnya adalah: SELECT Kode, Nama from Sales Hasilnya adalah seperti dibawah ini: Kode SL01 SL02 SL03 SL04 Nama Bram Yudi Anis Bambang
Untuk melihat seluruh kolom dalam tabel gunakan perintah SELECT * from Sales. Bagaimana bila kita ingin menampilkan Kode dan Nama sales yang namanya berinisial B saja? Berikut ini perintahnya:
SELECT Kode, Nama from Sales2 where Nama LIKE 'B%'; Hasilnya adalah seperti dibawah ini:
Bila anda menginginkan nama yang berakhiran g maka anda tinggal merubah 'B%' menjadi '%g'. Tantangan berikutnya, anda diminta menampilkan Kode, Nama, Alamat dan Gaji sales yang memiliki gaji kurang dari 300000. Inilah caranya:
SELECT * from Sales where Gaji < 300000;
Kode SL03
Nama Anis
Alamat Supriyadi
Gaji 250000
Operator-operator lainnya seperti >,=,>=,<=, juga dapat anda gunakan. Mengubah Data Untuk mengubah atau mengganti data lama dengan data yang baru kita gunakan perintah UPDATE. Perintah UPDATE memiliki bentuk umum: UPDATE nama tabel set kolom = [data baru] where kolom = [data lama]; Misal saja kita ingin merubah nama Anis pada tabel Sales menjadi Anisah, caranya adalah sebagai berikut: UPDATE Sales set Nama = 'Anisah' where Nama = 'Anis'; Kemudian bila anda ingin menaikkan Gaji sebesar 50000 bagi sales yang gaji semulanya masih dibawah 350000, anda dapat menggunakan perintah dibawah ini:
update Sales set Gaji = Gaji + 50000 where Gaji < 350000;
Lalu kita ingin menghapus data Mahasiswa dengan NIM = 2902. Caranya: DELETE from Mahasiswa where NIM = 2902;
Hasilnya: NIM 2901 2903 Anjar Bayu Nama Jurusan Sipil Hukum
Seperti yang anda lihat, bahwa seluruh record dari NIM 2902 terhapus. Dan bila anda ingin menghapus record mahasiswa bernama Anjar dan Bayu bersamaan, anda dapat gunakan perintah ini: DELETE from Mahasiswa where Nama = 'Anjar' or Nama = 'Bayu'; Menghapus Tabel Perintah untuk menghapus tabel adalah DROP. Bentuk umumnya: DROP TABLE nama tabel; Contoh: Menghapus tabel Mahasiswa beserta seluruh recordnya. Caranya adalah: DROP TABLE Mahasiswa; Penutup Beberapa hal yang patut diperhatikan dalam penulisan perintah SQL adalah: 1. Perhatikan huruf besar - huruf kecil. Agus tidak sama dengan agus. Gaji_Pegawai tidak sama dengan GajiPegawai. 2. Jangan lupa untuk membubuhi tanda titik koma ( ; ) di setiap akhir penulisan perintah. Terakhir, saya ucapkan selamat karena anda telah mempelajari perintah-perintah DDL dan DML pada SQL. Dan anda bisa dibilang telah menguasai Tingkat Dasar SQL. Untuk mempelajari SQL Tingkat Lanjut akan saya bahas pada artikel lain. Terima kasih.
KP02 KP03
Camelia Bembi
300000 100000
Untuk menampilkan tabel diatas urut berdasarkan Nama dari A-Z (ascending) perintahnya adalah: select Kode,Nama,Gaji from Karyawan order by Nama; Perintah diatas akan menampilkan hasil seperti ini: Kode KP01 KP03 KP02 Amrin Bembi Camelia Nama Gaji 200000 100000 300000
Perhatikan, tabel diatas menampilkan data urut Nama dari A-Z. Sebaliknya,untuk menampilkan data urut Nama dari Z-A (descending), perintahnya adalah: select Kode,Nama,Gaji from Karyawan order by Nama DESC; Anda bisa juga memodifikasinya dengan perintah Where. Misal saja anda hanya ingin menampilkan data karyawan bergaji > 100000 dan urut Kode dari besar ke kecil (descending), maka anda gunakan perintah ini: select Kode,Nama,Gaji from Karyawan where gaji > 100000 order by Kode DESC; Hasilnya akan tampak seperti ini: Kode KP02 KP01 Camelia Amrin Nama 300000 200000 Gaji
MIN, MAX, AVG, SUM, DAN COUNT Perintah MIN MAX AVG SUM COUNT Fungsi Mencari jumlah paling kecil / minimum Mencari jumlah paling besar / maksimun Menghitung rata-rata Menghitung hasil penjumlahan Menghitung hasil pencacahan / counter
Masih menggunakan tabel Karyawan, kita ingin menampilkan gaji tertinggi. Maka perintahnya: select MAX(gaji) from Karyawan; Hasilnya: Gaji 300000 Lain halnya bila kita ingin menghitung jumlah dari gaji Karyawan. Perintahnya adalah: select SUM(gaji) from Karyawan; Hasilnya: 600000 Contoh lain adalah bila kita ingin mengetahui jumlah karyawan maka perintahnya sebagai berikut: select COUNT(*) from Karyawan; GROUP BY Perintah Group By memiliki kegunaan untuk melakukan perhitungan berdasarkan kriteria tertentu. Untuk lebih jelasnya coba perhatikan tabel dibawah ini: Pegawai_baru Kode PB01 PB02 PB03 PB04 PB05 PB06 PB07 Nama Ronald Made Aziz Mustofa Eka Gozali Dani Asal Jakarta Bali Semarang Semarang Jakarta Yogya Jakarta Pendidikan S1 S1 S1 D3 S1 D3 S1 Gaji 400000 300000 300000 250000 275000 200000 350000
Dari tabel Pegawai_baru, kita ingin menampilkan gaji tertinggi / maksimum yang diperoleh pegawai berdasarkan pendidikannya. Maka perintahnya adalah: select Pendidikan,max(Gaji) from Pegawai_baru GROUP BY Pendidikan; Hasil dari perintah diatas seperti ini : D3 250000
S1
400000
Kasus lain : kita ingin menampilkan berapa banyak pegawai berdasarkan kota asalnya. Maka kita dapat menggunakan perintah count untuk pencacahan. Lebih jelasnya seperti ini: select Asal,count(Asal) from Pegawai_baru GROUP BY Asal; Bali Jakarta Semarang Yogya 1 3 2 1
Contoh lain, bila kita ingin mengetahui berapa banyak pegawai dan jumlah total gaji yang dikeluarkan untuk masing-masing pendidikan, caranya: select Pendidikan,count(Pendidikan),sum(Gaji) from Pegawai_baru GROUP BY Pendidikan; Hasilnya: D3 S1 2 5 1625000 450000
Dari tabel Pembelian diatas, kita ingin menampilkan nama-nama pembeli, berapa kali mereka melakukan transaksi dan total harga yang mereka keluarkan. Untuk tampilan seperti ini, kita cukup menggunakan Group By saja : select Pembeli,count(Pembeli),sum(Harga) from Pembelian GROUP BY Pembeli; Tapi bagaimana bila yang ingin kita proses hanya pembeli yang melakukan transaksi lebih dari 1 kali saja ? Jawabannya, kita harus tambahkan Having seperti dibawah ini : select Pembeli,count(Pembeli),sum(Harga) from Pembelian GROUP BY Pembeli HAVING count(Pembeli) > 1; Hasilnya: Saiful Bakir 3 2 1200000 600000
AND,BETWEEN,OR,IN AND adalah perintah untuk menggabungkan kedua kondisi yang keduanya harus dipenuhi. Misalkan kita memiliki tabel seperti ini: Nilai_siswa Nama Budi Agung Roni Edi Lulu Sinta Yuni Nilai 80 70 90 70 60 80 90
Maka bila kita ingin menampilkan nama siswa yang memiliki nilai antara 70 hingga 90, perintahnya adalah: select Nama from Nilai_siswa where Nilai>=70 AND Nilai<=90; Perintah diatas dapat pula diganti menggunakan perintah BETWEEN seperti ini: select Nama from Nilai_siswa where Nilai BETWEEN 70 AND 90;
OR adalah perintah untuk menggabungkan dua/lebih kondisi yang paling tidak salah satunya harus terpenuhi. Contoh : Dari tabel Nilai_siswa, kita ingin tampilkan nilai siswa yang namanya Lulu atau Lala. Perintahnya: select Nilai from Nilai_siswa where Nama='Lulu' or Nama='Lala'; Hasilnya: 60 Dengan perintah OR maka bila tidak ada nama Lala, ia akan mencari nama Lulu, begitupula sebaliknya. Perintah diatas juga dapat diubah dengan menggunakan perintah IN, seperti dibawah ini: select Nilai from Nilai_siswa where Nama IN ('Lulu','Lala'); Kebalikan dari perintah IN dan BETWEEN adalah NOT IN dan NOT BETWEEN.
Melihat tabel diatas memang memusingkan. Anda harus menginput Nama dan Alamat setiap terjadi transaksi. Untuk lebih memudahkan, tabel diatas dapat kita bagi menjadi dua tabel yakni tabel Pelanggan dan tabel Transaksi. Prosesnya sering disebut sebagai normalisasi. Pelanggan ID Nama Alamat
001 002 003 004 005 Transaksi ID 003 002 001 004 001 002 001 005 003
Tgl_beli 010902 020902 020902 030902 030902 040902 050902 050902 050902
Barang Buku Tas Buku Pulpen Majalah Pulpen Buku Buku Tas
Harga 20000 80000 20000 10000 20000 10000 20000 20000 80000
Dengan begitu, maka tiap terjadi transaksi baru, kita cukup menginput data baru di tabel Transaksi saja dan kita tidak perlu menuliskan Nama maupun Alamat karena telah disimpan pada tabel Pelanggan. Perhatikan! tabel Pelanggan dan Transaksi memiliki penghubung (primary key) yang sama yaitu ID. Untuk menggabungkan kembali tabel Pelanggan dan tabel Transaksi seperti semula kita gunakan perintah ini : SELECT Pelanggan.ID,Pelanggan.Nama,Pelanggan.Alamat, Transaksi.Tgl_beli,Transaksi.Barang,Transaksi.Harga FROM Pelanggan,Transaksi WHERE Pelanggan.ID=Transaksi.ID; Bila kita ingin mengurutkan tabel berdasarkan tanggal belinya maka perintahnya menjadi: SELECT Pelanggan.ID,Pelanggan.Nama,Pelanggan.Alamat, Transaksi.Tgl_beli,Transaksi.Barang,Transaksi.Harga FROM Pelanggan,Transaksi WHERE Pelanggan.ID=Transaksi.ID;
Nah, selesai sudah kursus tutorial SQL tahap lanjut ini. Secara garis besar, anda telah menguasai teknikteknik SQL namun belum cukup sampai disini. Anda harus mempelajari teknik-teknik lainnya agar anda dapat lebih mahir dalam memecahkan masalah pada SQL. Anda dapat mempelajari teknik lainnya di situs lain atau artikel saya yang lain.