SQL dan Versinya
Tidak semua aplikasi sistem manajemen database memiliki versi SQL yang sama. Aplikasi seperti Microsoft SQL Server, Oracle, Microsoft Acess, mySQL, dan lain-lain, menggunakan versi SQL yang berbeda satu sama lain.
Sebagai contoh, versi yang digunakan oleh SQL Server disebut dengan Transact-SQL atau T-SQL. Sedangkan, Oracle menggunakan PL/SQL, di mana di antara versi SQL tersebut terdapat perbedaan fitur-fitur dasar.
Secara umum, SQL didesain untuk melakukan query data yang terdapat pada relational database, tetapi tidak mengarah pada bahasa pemrograman seperti C, Visual Basic, dan semacamnya yang didesain untuk menangani sistem yang lebih besar. Anda tidak dapat membuat game berbasis multimedia atau sebuah website e-commerce dengan hanya menggunakan perintah SQL.
Bagaimanapun, SQL masih dapat dikategorikan sebagai bahasa pemrograman karena memiliki sintaks dan tata bahasa sebagaimana bahasa pemrograman pada umumnya. Kalau demikian adanya, bagaimana dapat menghasilkan laporan seperti yang dihasilkan si Unyil di atas?
Untuk itu, Anda memerlukan tools atau peralatan tempur yang lengkap. Kombinasikan penggunaan bahasa pemrograman yang Anda kuasai dengan perintah-perintah SQL yang akan mengolah database. Apa saja kemampuan SQL secara umum, itulah yang akan kita bedah bersama di bawah ini.
Pengambilan Data
Dalam sebuah aplikasi yang mengakses database, pengambilan data dari dalam database bisa jadi merupakan suatu pekerjaan yang paling sering dilakukan. Menampilkan seluruh data yang ada tanpa pandang bulu merupakan hal yang mudah, tetapi memilah-milah data sesuai dengan yang diinginkan merupakan seni tersendiri dalam penguasaan perintah SQL.
Terutama sekali jika jumlah data dalam database Anda merupakan kumpulan data yang terkubur selama sepuluh tahun dengan transaksi sekian banyak. Maka, akan sangat memberatkan Anda (atau lebih tepatnya komputer Anda) untuk mengeluarkan seluruh informasinya, yang sudah pasti banyak yang tidak diperlukan.
Karena itu, Anda wajib mengetahui bagaimana memilih (SELECT) informasi yang diinginkan dari sekumpulan data. Perintah atau keyword (atau sering juga disebut dengan clause) untuk mengambil data adalah SELECT.
Perintah SELECT akan mengembalikan sejumlah record atau baris (row) yang berkisar sejumlah 0 atau lebih. Untuk perintah yang mengembalikan 0 record berarti tidak ada data yang memenuhi kriteria yang diinginkan.
Perintah SQL juga umum disebut dengan query, Anda tidak perlu heran jika sebuah query sepanjang ratusan karakter hanya menghasilkan satu baris nilai pada satu field. Perintah SELECT umumnya diikuti oleh beberapa keyword, seperti:
1. FROM.
Digunakan untuk mengidentifikasi dari table mana data yang akan diambil. Contohnya perintah SELECT * FROM Products berarti mengambil record pada seluruh field (yang diwakili tanda asterisk) dari table Products. Jika Anda telah mengetahui field-field mana saja yang ingin ditampilkan, disarankan Anda menulis field-field tersebut. Contoh:
SELECT ProductID, ProductName,
Price FROM Products
Berarti Anda hanya menampilkan record dari field ProductID, ProductName, dan Price, walaupun kemungkinan masih banyak terdapat field lain pada table Products. Keluarkan informasi yang dibutuhkan saja.
2. WHERE.
Jika keyword FROM menunjukkan table, maka keyword WHERE bertujuan untuk lebih mempersempit kriteria pencarian data. Contoh:
SELECT * FROM Products WHERE
price >= 1000000
Query di atas berarti menampilkan record pada seluruh field yang memenuhi kriteria, di mana field price harus lebih besar dari 1.000.000.
3. GROUP BY.
Keyword ini digunakan untuk menggabungkan baris yang memiliki nilai yang berkaitan sehingga menghasilkan baris hasil yang lebih sedikit. Contoh perintah dengan menggunakan GROUP BY:
SELECT Price, count(Price)
FROM Products GROUP BY Price.
Hasil query di atas akan menggabungkan (group) nilai field Price yang sama dan menghitung jumlah record yang memiliki nilai field Price tersebut (dihitung dengan menggunakan perintah count).
4. HAVING.
Digunakan untuk memilah data dari kumpulan baris yang dihasilkan oleh GROUP BY ataupun bagian SELECT yang memiliki fungsi penggabungan (aggregate function). HAVING mirip dengan WHERE, perbedaannya HAVING dioperasikan setelah hasil GROUP BY atau fungsi penggabungan. Contoh penggunaan perintah HAVING:
SELECT department,
SUM(sales) FROM Order_Detail
GROUP BY departement HAVING
SUM(sales) > 1000000
Contoh di atas sangat mungkin terjadi pada banyak perusahaan. Di mana terdapat table Order_Detail yang menyimpan transaksi dan Anda dituntut menghasilkan total penjualan dari masing-masing departemen, di mana total penjualan tersebut bernilai di atas 1.000.000.
5. ORDER BY.
Digunakan untuk melakukan pengurutan data pada field tertentu. Contoh:
SELECT NIM, StudentName,
Score FROM Student ORDER BY
Score DESC
Manipulasi Data
Pembahasan yang telah kita lalui di atas hanya memperlakukan data secara pasif, di mana data diasumsikan telah tersedia. Kini saatnya kita menginjak pembahasan mengenai manipulasi data, di sini kita akan membuat, mengubah, ataupun menghapus data.
Perintah-perintah yang digunakan untuk melakukan manipulasi data di antaranya:
1. INSERT.
Merupakan perintah untuk membuat sebuah record baru pada sebuah table.
Contoh:
INSERT INTO Products
(ProductID,
ProductName,Price) VALUES
(‘01’,’Motherboard’,1500000)
Perintah di atas akan menambahkan sebuah record baru pada table Products, yaitu ProductID = 01, ProductName =Motherboard dan Price = 1.500.000. Perhatikan bahwa untuk tipe data alfanumerik Anda harus mengapitkan nilai yang ingin Anda masukkan dengan karakter kutip satu (aposthrope), sedangkan untuk tipe numerik Anda dapat langsung menuliskan nilainya.
2. UPDATE.
Perintah yang digunakan untuk memodifikasi nilai dari baris pada table. Contoh:
UPDATE Products SET Price =
2000000 WHERE ProductID = ‘01’
Hasil dari perintah di atas adalah mengubah field price menjadi sebesar 2.000.000 dengan kondisi ProductID adalah 01.
3. DELETE.
Untuk menghapus data yang sudah tidak diperlukan, Anda dapat menggunakan perintah DELETE ini. Sebagai contoh:
DELETE FROM Products WHERE
ProductID = ‘01’
Di mana perintah di atas akan menghapus seluruh baris record yang memiliki nilai ProductID = 01. Anda perlu berhati-hati menggunakan perintah DELETE tanpa kondisi WHERE, karena akan menghapus seluruh data tanpa pandang bulu.
4. TRUNCATE.
Perintah TRUNCATE akan menghapus seluruh data dari sebuah table. Apakah hasil eksekusi perintah TRUNCATE sama dengan perintah DELETE? Sama-sama menghapus data, tetapi perintah TRUNCATE akan me-reset nilai autonumber. Sebagai contoh jika Anda menghapus record yang memiliki field autonumber yang berisi nilai 1 hingga 10 dengan menggunakan DELETE, maka saat Anda kembali mengisikan sebuah record baru
maka field autonumber tersebut akan bernilai 11 walaupun record 1 hingga 10 telah terhapus.
Sebaliknya jika Anda menggunakan perintah TRUNCATE, maka saat ditambah sebuah record baru, field autonumber tersebut akan bernilai 1.
Perintah TRUNCATE juga memiliki waktu eksekusi lebih cepat dibandingkan dengan menggunakan perintah DELETE, terutama untuk jumlah data yang banyak. TRUNCATE bukan merupakan perintah SQL standard, tetapi merupakan perintah SQL yang umum terdapat pada aplikasi DBMS.
Transaksi Data
Pernahkah Anda mengalami, saaa melakukan input data tiba-tiba terjadi mati listrik yang menyebabkan data Anda tidak masuk seluruhnya dengan sempurna sehingga menimbulkan permasalahan pada aplikasi secara keseluruhan?
Hal ini tidak mengherankan karena seiring dengan kompleksitas table dan alur program, mengharuskan untuk melakukan input data melalui alur bertingkat dan kondisi khusus. SQL menyediakan fungsi transaksi data untuk menjaga agar data diolah dengan benar, jika terjadi kesalahan maka transaksi data dapat di-rollback sehingga tidak terdapat sisa data yang menggantung.
Perintah yang tersedia dalam transaksi data:
1. START TRANSACTION.
Digunakan untuk menandakan awal dari transaksi database, tanpa mempedulikan apakah akan berhasil atau gagal.
2. COMMIT.
Menyebabkan seluruh perubahan data yang dilakukan pada Start Transaction dikonfi rmasi secara permanen.
3. ROLLBACK.
Membatalkan transaksi data.
Definisi Data
Kelompok keyword ini berfungsi untuk mendefi nisikan table baru dan elemen yang berhubungan, pada umumnya diklasifi kasikan sebagai Data Defi nition Language (DDL). Beberapa keyword yang digunakan adalah:
1. CREATE.
Menciptakan sebuah object. Sebuah object dapat berupa database, table, index, atau query yang tersimpan seperti Stored Procedure atau View.
2. DROP.
Untuk menghapus object yang telah ada. Seperti database, table, index, view, dan lain-lain.
3. ALTER.
Untuk melakukan modifi kasi pada object yang telah ada. Sebagai contoh untuk menambahkan field pada sebuah table. Dengan bekal perintah-perintah di atas, ternyata belum cukup untuk menghasilkan beberapa jenis informasi seperti menampilkan beberapa perhitungan statistik atau pengolahan string. Untuk itu, terdapat sekumpulan function yang dapat digunakan.
Function pada SQL bervariasi tergantung pada sistem database yang Anda gunakan, sebagai contoh, function pada Microsoft SQL Server tidak seluruhnya sama dengan function pada Oracle, walaupun masih terdapat kemiripan pada kebanyakan function.
Secara umum function dibedakan menjadi dua kategori besar, yaitu Aggregate Function dan Scalar Function.
Aggregate Function pada SQL
Aggregate function mengoperasikan sekumpulan nilai untuk menghasilkan satu nilai. Beberapa function yang umum digunakan:
1. AVG.
Mengembalikan nilai rata-rata dari sebuah kolom yang didefi nisikan. Sebuah function yang umum digunakan untuk menghasilkan summary rata-rata angka penjualan, nilai pada suatu kelas dan kebutuhan lain yang dapat diminta oleh pihak manajemen perusahaan Anda sewaktu-waktu.
2. COUNT.
Penulisan COUNT(*) akan mengembalikan jumlah record keseluruhan. Jika ditulis dengan COUNT(nama_field), maka akan menampilkan jumlah baris field tersebut yang memiliki nilai, jadi nilai NULL tidak ikut terhitung.
3. MAX.
Menghasilkan nilai maksimum/tertinggi dari field yang dispesifikasikan.
4. MIN.
Menghasilkan nilai minimum/terendah dari field yang dispesifikasikan.
5. SUM.
Menjumlahkan total nilai field yang dispesifikasikan.
Penggunaan Aggregate Function sering dikombinasikan dengan penggunaan GROUP BY untuk melakukan klasifikasi data berdasarkan kolom tertentu.
Scalar Function Pada SQL
Scalar Function mengolah sebuah nilai dan mengembalikan sebuah nilai baru tergantung pada parameter yang diberikan. Beberapa contoh Scalar Function yang kerap digunakan:
1. LEN.
Mengembalikan panjang karakter suatu string atau field.
2. MID.
Mengembalikan sebagian string dari suatu string atau field dengan berpatokan pada parameter input.
3. ROUND.
Membulatkan sebuah nilai numerik berdasarkan parameter desimal.
4. DATEDIFF.
Mengembalikan nilai hasil kalkulasi date. Function yang berhubungan dan dapat dikombinasikan penggunaannya adalah function DATEADD. Pengolahan tipe data date cukup sering digunakan untuk menghasilkan laporan yang berhubungan dengan tanggal. Terdapat banyak variasi teknik perintah DATEDIFF / DATEADD, sebagai contoh pada perintah berikut:
SELECT DATEADD(ms,-3,DATEADD (mm,DATEDIFF(m,0,getdate()) + 1, 0))
Contoh di atas merupakan sebuah query untuk mencari tanggal terakhir pada bulan yang aktif. Logika query tersebut adalah dengan menambahkan 1 bulan pada bulan aktif, kemudian dikurangi 3 milidetik sehingga mundur menjadi tanggal terakhir bulan aktif. Jadi jika saat ini bulan November 2006, hasilnya adalah tanggal 30 November 2006.
Perintah Tambahan
Masih terdapat perintah-perintah lain yang dapat digunakan, setelah Anda menguasai masing-masing perintah tersebut. Cobalah untuk melakukan penggabungan perintah-perintah dasar yang telah Anda kuasai.
Beberapa perintah tambahan:
1. IN.
Perintah IN digunakan untuk mengelompokkan nilai-nilai yang sudah Anda ketahui. Contoh:
SELECT * FROM Pegawai
WHERE Nama IN
(‘BUDI’,’RAHMAT’,’IWAN’)
Perintah di atas akan mengembalikan record pada table Pegawai, di mana field Nama berisi BUDI, RAHMA, atau IWAN.
2. NOT.
Merupakan operator negasi, pada contoh di atas Anda dapat mengubah sedikit query-nya dengan menambahkan NOT sehingga menjadi:
SELECT * FROM Pegawai
WHERE Nama NOT IN
(‘BUDI’,’RAHMAT’,’IWAN’)
Hasil query di atas adalah kebalikan dari contoh pertama, pada query ini akan dihasilkan record pada table Pegawai dengan kondisi field Nama tidak berisi BUDI, RAHMAT, atau IWAN.
3. NULL.
Perintah ini menunjukkan isi field yang kosong—umumnya disebut nil—atau NULL dalam perintah SQL.
4. AND/OR.
Perintah ini membentuk dua atau lebih kondisi pada perintah WHERE. Contoh:
SELECT * FROM Student WHERE
Score >= 85 AND Year = 2006
Perintah di atas akan menghasilkan record pada table Student pada tahun 2006 dan memiliki nilai lebih besar sama dengan 85.
5. LIKE.
Jika Anda ingin mencari sebagian string dari sebuah field, gunakan perintah LIKE. Sebagai contoh jika Anda ingin mencari nama pegawai yang berawalan dengan huruf ‘A’, maka querynya adalah:
SELECT Nama FROM Pegawai
WHERE Nama LIKE ‘A%’
Jika pada table Pegawai memiliki nama pegawai seperti AMIR, ANTO, dan AJI, maka ketiga nama tersebut akan tampil. Karakter % (persen) pada perintah diatas berguna sebagai wildcart. Beberapa sistem manajemen database menggunakan wildcart yang berbeda, sebagai contoh Microsoft Access menggunakan wildcart dengan tanda * (asterisk).
Masih terdapat cukup banyak perintah tambahan seperti JOIN, BETWEEN, UNION dan lain-lain. Ingatlah bahwa Anda dapat menggunakan sub query (query di dalam query) untuk menghasilkan record yang diharapkan.
Salah satu contoh penggunaan sub-query adalah seperti di bawah ini:
SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM Trans WHERE Amount > 1000000)
Dengan asumsi table Products menyimpan informasi product dan table Trans menyimpan informasi transaksi penjualan, maka perintah di atas akan menampilkan record pada table Products dengan kondisi ProductID terdapat di dalam table Trans di mana field Amount berjumlah diatas 1.000.000.
Dengan bahasa pimpinan Anda, mungkin akan dikatakan: “Tolong perlihatkan pada saya produk apa saja pada perusahaan ini yang penjualannya mencapai lebih dari 1 juta”. Query di atas dapat dikembangkan dengan menambahkan kondisi-kondisi tertentu seperti periode tanggal atau kategori.
12 comments:
daksjdakdj :))
Gimana perintah delete u/ yang terdaftar dibawah tanggal tertentu? minta tolong ya? tq..
coba ini gan : delete from table where to_char(tanggal,'ddmmyyy')<'20122009'
Gimana perintah untuk menampilkan data suau field cuma yang 3 bulan terakhir dari hari sekarang. minta tolong ya? tq..
coba ini gan : SELECT month(kolom_tanggal) FROM table where month(kolom_tanggal) <= month(now( ) ) and month(kolom_tanggal) > (month(now() )-3);
sorry, perintah : delete from table where to_char(tanggal,'ddmmyyy')<'20122009' untuk oracle, kalo untuk mysql gini delete from table where DATE_FORMAT(tanggal,'%Y%m%d') = '20100401';
untuk menampilkan data suau field cuma yang 3 bulan terakhir dari hari sekarang :
SELECT log_terakhir FROM user where log_terakhir >=( now( )-interval 3 month)
untuk menampilkan data suau field cuma yang 3 bulan terakhir dari hari sekarang
SELECT * FROM tabel where tanggal >=( now( )-interval 3 month)
Halloo temen2 salam kenal,,,
Oya pingin tanya cara mengurangi tanggal sekarang dengan tanggal kemaren gimana yah di sql server tanpa waktunya tidak ikut terhitung,,,
saya sudah pake perintah:
Misal tanggal terakhir:2010-10-12
SELECT A.PROJECT_END,
datediff(day,getDate(),PROJECT_END) AS Durasi_Keterlambatan FROM AUDIT_PROJECT A
makasih..tolong yah...
:)]
bos, kalo ane cuma pengin nampilin 10 record pertama gmn sintak SQL nya ya...???
Need Inpoohhh Gan,
kalau mau nampilin 2 bulan terakhir tapi tdk berdasrkan hari sekarang. entah hari ke berapa dlm bulan itu tidak diperdulikan. yang penting 2-3 bulan terakhir gmn yaaakkk ?
Posting Komentar