SQL ORACLE : DML, Select Statement
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
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:
Posting Komentar