Minggu, 21 September 2008

perintah select & fungsi update pada dml sql

SQL ORACLE : DML, Select Statement

October 7th, 2007 by mulyanto

Select Statement

Perintah SELECT digunakan untuk melakukan query pemilihan data pada database. Perintah select biasanya mereferensi ke dalam sebuah tabel atau view, oleh karena itu hasil akhir query sama seperti halnya tabel yaitu terdapat baris dan kolom hasil.

- SELECT, bertugas untuk mengakses data dari suatu tabel dalam database

Bentuk umum sintak SELECT :

SELECT <>

FROM <>

WHERE <0,>

Sebagai contoh seleksi semua kolom pada tabel lokasi dapat dilakukan dengan cara sebagai berikut :

SQL>select * from manager;
ID_MA NAMA                 GAJI     ALAMAT                       ID_LO
– ——- — ———- –
M001  Tubagus Dewantara     7000000  Jl. Buntu No. 2               K001
M002  Tania Renita          5000000  Jl. Merdeka No. 24            K001
M003  Bathara Kamajaya      6000000  Jl. Pusing Keliling No. 123   K001
M004  Date Bashe            7000000  Jl. Berlubang No. 90          K001
M005  Ratih Kumalasari      5000000  Jl. Tidak Rata No.7           K001
M006  Chintia               4000000  Jl. Tak Berujung No. 1        K006
M007  Aditya Nugraha        4500000  Jl. Mahakam No.5              K006
M008  Ahmad Sholikhin       4000000  Jl. Melati No.100             K006
M009  Dina Amelia           3500000  Jl. Khayangan No. 10a         K006
M010  May                   4000000  Jl. Belantara No. 90          K006
10 rows selected.

Tanda asterisk (*) digunakan untuk melakukan seleksi terhadap semua kolom yang ada pada tabel, dapat juga queri dilakukan hanya dengan menyertakan kolom tertentu saja.

SQL>select nama, gaji from manager;
NAMA                            GAJI
——— —
TubagusDewantara             7000000
TaniaRenita                  5000000 
BatharaKamajaya              6000000 
DateBashe                   7000000 
RatihKumalasari              5000000 
Chintia                  4000000
AdityaNugraha                4500000 
AhmadSholikhin               4000000 
DinaAmelia                  3500000 
May                      4000000
10 rows selected.

Kondisi Where

Statement SELECT biasanya digunakan untuk memilih data sesuai dengan kondisi atau kriteria tertentu, baik dengan kriteria tunggal maupun banyak kriteria. Penambahan kondisi biasanya dengan menggunakan query WHERE.

Entah bagaimana dunia tanpa WHERE :P

SQL> select id_manager, nama, gaji from manager where gaji >=5000000;
ID_MA NAMA                            GAJI
– ——— —-
M001  Tubagus Dewantara            7000000
M002  Tania Renita                 5000000
M003  Bathara Kamajaya             6000000
M004  Date Bashe                   7000000
M005  Ratih Kumalasari             5000000

Kondisi juga dapat ditentukan dengan nested SELECT yaitu perintah SELECT yang kondisinya diambil dari perintah SELECT yang lainnya.

Sebagai contoh : coba tampilkan semua data dari manager yang gajinya diatas gaji rata-rata seluruh manager. Query yang mingkin dilakukan adalah sebagai berikut :

SQL> select * from manager where gaji > ( select avg(gaji) from manager );
ID_MA NAMA                 GAJI       ALAMAT                     ID_LO
– ——- —- ——— –
M001  Tubagus Dewantara      7000000  Jl. Buntu No. 2             K001
M003  Bathara Kamajaya       6000000  Jl. Pusing Keliling No. 123 K001
M004  Date Bashe             7000000  Jl. Berlubang No. 90        K001

Terdapat 3 hasil query dari tabel manager, perintah select yang pertama akan membandingkan kolom gaji setelah query mencari rata-rata gaji pegawai didapat hasilnya.

Fungsi agregat dan aritmatika

Perintah-perintah aritmatika dan fungsi agregat dapat juga disisipkan pada query SELECT.

Contoh : Karena mo lebaran maka semua manager akan diberi tunjangan sebesar ½ dari gaji mereka. Query yang diinginkan tampilkan nama manager, gaji sekarang dan besar tunjangan yang akan diberikan.

SQL> select nama, gaji, gaji*0.5 as tunjangan from manager;
NAMA                            GAJI  TUNJANGAN
——— —- —-
Tubagus Dewantara            7000000    3500000
Tania Renita                 5000000    2500000
…….
Ahmad Sholikhin              4000000    2000000
Dina Amelia                  3500000    1750000
May                          4000000    2000000
10 rows selected.

Pada contoh diatas juga digunakan nama alias dengan nama TUNJANGAN yang digunakan sebagai pengganti header kolom gaji*0.5.

Perintah diatas dapat juga diikuti dengan klausa ORDER BY yang digunakan untuk melakukan pengurutan berdasar kolom yang direferensi, ORDER BY biasanya diikuti dengan ASC[CENDING] ataupun DESC[ENDING]. Sebenarnya tanpa menyebutkan klausa tersebut maka secara otomatis pengurutan akan dilakukan secara ASCENDING.

SQL> select nama, gaji, gaji*0.5 as tunjangan from manager order by tunjangan desc;
NAMA                            GAJI  TUNJANGAN
——— —- —-
Tubagus Dewantara            7000000    3500000
Date Bashe                   7000000    3500000
….
….
May                          4000000    2000000
Dina Amelia                  3500000    1750000
10 rows selected.

Untuk perintah agregat sebagai contoh AVG, MIN, MAX, COUNT, SUM juga tidak jauh berbeda dengan fungsi aritmatika. Sebagai contoh, diinginkan hasil query menghitung berapa gaji keseluruhan yang dikeluarkan perusahaan untuk membayar manager.

SQL> select sum(gaji) “Total Gaji” from manager;
Total Gaji
—-
50000000

Atau query untuk mengetahui siapakah manager yang punya gaji paling gede.

SQL> select nama, gaji from manager where gaji = (select max(gaji) from manager);
NAMA                            GAJI
——— —-
Tubagus Dewantara            7000000
Date Bashe                   7000000

Seleksi dengan DISTINCT akan melakukan grouping atau menghilangkan pengulangan terhadap baris-baris yang bersesuaian.

SQL> select distinct id_lokasi from manager;
ID_LO
K001
K006

SELECT dengan Group by.

Klausa Group by digunakan untuk melakukan pengelompokan berdasarkan baris-baris pada tabel. Sebgai contoh hitung total gaji yang dikelompokkan perdaerah operasional.

SQL> col id_lokasi format a20;
SQL> select sum(gaji) as gaji, id_lokasi  from manager group by id_lokasi;
GAJI ID_LOKASI
—- ——-
30000000 K001
20000000 K006
Mengurut hasil query dengan ORDER BY clause
SELECT fieldlistFROM tableWHERE selectcriteria[ORDER BY field1 [ASC DESC ][, field2 [ASC DESC ]][, ...]]]
Anda dapat menggunakan ORDER BY clause untuk menentukan urutan data hasil query berdasarkan field tertentu, pada defaultnya adalah Ascending kalau tidak disebutkan ASC ataupun DESC.
Contoh :SELECT * FROM Anggota ORDER BY Nama;SELECT * FROM Anggota WHERE TanggalDaftar <= #01-Jan-2001# ORDER BY Nama;

SELECT pada lebih dari satu tabel.

Query juga dapat dilakukan lebih dari satu tabel. Hal ini dimungkinkan karena adanya relasi pada kedua tabel ( disebut juga JOIN).

Contoh : query untuk menampilkan nama manager, gaji , dan nama divisi lokasi tempat manager bekerja. Pada kasus ini nama lokasi tidak dapat diambil dari tabel manager , tetapi dapat diambil dari tabel lokasi. Akan tetapi kedua tabel berelasi dengan adanya id_lokasi.

SQL> select manager.nama, manager.gaji, lokasi.kota from manager inner join lokasi
2  on manager.id_lokasi = lokasi.id_lokasi;
NAMA                            GAJI KOTA
——– —– ——
Tubagus Dewantara            7000000 Jakarta
Tania Renita                 5000000 Jakarta
Bathara Kamajaya             6000000 Jakarta
….
….
Ahmad Sholikhin              4000000 Pekanbaru
Dina Amelia                  3500000 Pekanbaru
May                          4000000 Pekanbaru
10 rows selected.

Query diatas juga sama dengan apabila melakukan query seperti dibawah ini.

SQL> select m.nama, m.gaji, l.kota from manager m, lokasi l where m.id_lokasi=l.id_lokasi;
NAMA                            GAJI KOTA
——— —- ———
Tubagus Dewantara            7000000 Jakarta
Tania Renita                 5000000 Jakarta
Bathara Kamajaya             6000000 Jakarta
….
….
Ahmad Sholikhin              4000000 Pekanbaru
Dina Amelia                  3500000 Pekanbaru
May                          4000000 Pekanbaru
10 rows selected.
Mengambil kolom dari dua atau lebih tabel dengan Operasi INNER JOIN
Kadang-kadang kita perlu melakukan kombinasi kolom-kolom dari beberapa tabel menjadi suatu recordset tunggal dimana yang memiliki nilai yang sama pada kolom tertentu.
Pada operasi INNER JOIN akan mengabungkan record-record yang memiliki nilai sama pada kolom tertentu pada kedua tabel.
FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
Perhatikan kembali tabel-tabel pada Rental.Mdb modul sebelumnya :
Tabel Transaksi
Nama Field
Type
NoTransaksi
Long
Tanggal
DateTime
KodeAnggota
Text
KodeCD
Text
Kembali
DateTime
Denda
Currency
Tabel CD
Nama Field
Type
KodeCD
Text
Judul
Text
Kategori
Text
Aktor
Text
Harga
Currency
Daftar
DateTime
Tabel Anggota
Nama Field
Type
KodeAnggota
Text
Nama
Text
Alamat
Text
Telepon
Text
Limit
Byte
Daftar
DateTime
Misalnya kita ingin mengambil suatu recordset yang berisi kolom-kolom berikut :
Kolom
Tabel sumber
Kriteria
Tanggal
Transaksi

Judul
Transaksi

Nama
Anggota

Denda
Transaksi
Not Null
Dalam hal ini kita akan menggambil data dari dua tabel, yaitu tabel Transaksi, dan tabel Anggota, dimana dalam pengambilan tersebut KodeAnggota pada tabel Transaksi harus bersesuaian dengan KodeAnggota pada tabel Anggota, sehingga FROM clause-nya dapat ditulis menjadi :FROM Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota
Sehingga Perintah SQL adalah sebagai berikut :SELECT Transaksi.Tanggal, Transaksi.KodeAnggota, Anggota.Nama, Transaksi.Denda FROM Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota WHERE NOT Denda Is NULL;Pada perintah SELECT yang menggambil kolom lebih dari satu tabel, kita perlu menuliskan nama Tabel dan Field yang dipisahkan dengan dot (.).

Next lanjut ke UPDATE

- UPDATE, bertugas untuk mengupdate (merubah) data dalam suatu tabel pada database

syntax update

update namatabel set field1=nilai1 [,field2=nilai2[, ...]][where kondisi];

UPDATE tidak menghasilkan suatu himpunan hasil. Juga, setelah anda mengupdate record dengan menggunakan update query, anda tidak dapat membatalkan operasi tersebut. Jika anda ingin mengetahui record mana saja yang akan terupdate, pertama anda perlu melakukan select query dengan kriteria yang sama.· Lakukan backup terhadap data anda setiap saat. Jika anda salah menghapus, maka anda dapat mengambil kembali dari backup.
Contoh :UPDATE Anggota SET BlackList = True WHERE KodeAnggota = 'SD001';

Tidak ada komentar: