Perintah SELECT

Setelah anda sudah menguasai penggunaan MySQL Query Browser sebagai tempat ‘belajar’ bahasa SQL, di artikel ini saya ingin mendiskusikan dengan anda tentang perintah SELECT ini kemungkinan besar akan kita gunakan sebanyak sebesar 75% dari total kegiatan ber-SQL kita nanti. Dengan perintah SELECT inilah yang memungkinkan kita bisa melihat dan memanipulasi data-data table di MySQL server nantinya.
OK, langsung saja. Misal saja kita mempunyai 4 table yaitu:

  1. tbl_master_pelanggan, yang terdiri dari field-field: kode_pelanggan, nama_pelanggan, alamat, kota, kode_pos, tanggal_masuk.
  2. tbl_penjualan, yang terdiri dari field-field: kode_transaksi, tanggal_penjualan, kode_pelanggan, keterangan, modified_date, modified_by.
  3. tbl_detail_penjualan, yang terdiri dari field-field: id_trans, kode_penjualan, kode_barang, jumlah, harga_jual, discount.
  4. tbl_master_barang, yang terdiri dari field-field: kode_barang, nama_barang, satuan, min_stock, keterangan, lokasi_gambar.

Di sini kita akan membahas bagaimana menampilkan data dari table-table tersebut dengan menggunakan perintah SELECT. Untuk syntax perintah dasar SELECT sendiri sebagai berikut:

SELECT nama_kolom_1, nama_kolom_2 FROM nama_table;

Kasus 1, saya ingin menampilkan semua data master pelanggan yang terletak di table tbl_master_pelanggan, maka perintah yang saya ketik di Query Edit adalah sebagai berikut:

SELECT * FROM tbl_master_pelanggan;

Tapi jika saya hanya ingin menampilkan kolom nama_pelanggan dan alamat saja, ketik seperti ini:

SELECT nama_pelanggan, alamat FROM tbl_master_pelanggan;

Anda bisa melihat data dengan kriteria tertentu, untuk melakukan itu anda bisa menggunakan tambahan perintah WHERE. Misal anda ingin melihat nama barang (field: nama_barang) yang kata depannya cover, maka perintah yang harus anda ketik adalah sebagai berikut:

SELECT * FROM tbl_master_pelanggan WHERE nama_barang LIKE 'cover%'

Karena type data dari kolom nama_barang adalah VarChar maka anda harus menambahkan karakter petik tunggal (‘) di dalam keyword nya. Kalau type data-nya adalah integer dan type angka yang lainnya, petik tunggal tidak diperlukan. Untuk mencari semua karakter setelah nama barang cover, saya menggunakan tanda wildcard % supaya MySQL mencari semua data yang kata depannya cover. Dan jika anda menggunakan wil card character, operator yang anda gunakan adalah LIKE. Jika tidak anda bisa menggunakan operator sama dengan (=). Untuk manipulasi data angka anda bisa menggunakan operator <, >, =, BETWEEN, <=, >=.

Kasus 2, saya ingin menampilkan data 2 table yang saling berkaitan. Ini dalam ilmu-nya sering disebutan normalisasi. Dengan normalisasi anda tidak perlu menyimpan data nama-nama pelanggan di dalam transaksi penjualan, cukup kode pelanggan nya saja yang perlu anda simpan, hal ini juga untuk menghindari duplikasi. Untuk menghubungkan dua table atau lebih yang dihubungkan dengan satu kode transaksi yang sudah kita tentukan tadi kita akan menggunakan perintah INNER JOIN. Perlu diingat bahwa kode yang akan dipakai untuk normalisasi ini adalah kode transaksi yang tidak terdapat duplikasi data di dalamnya atau sering disebut primary key. Dalam contoh ini saya akan menghubungkan tabel penjualan dan detail item penjualan. Kalau di contoh table saya, menghubungkan table 2 dan 3. Perintah yang kita ketikkan adalah sebagai berikut:

SELECT tp.kode_transaksi, tp.tanggal_transaksi, tp.kode_pelanggan, tp, keterangan, dtp.kode_barang, dtp.jumlah, dtp.harga_jual, dtp.discount FROM tbl_penjualan AS tp INNER JOIN tbl_detail_penjualan AS dtp ON tp.kode_transaksi=dtp.kode_penjualan;

Dari contoh di atas bisa di lihat bahwa nama table bisa di alias-kan untuk memperpendek nama table, deklarasi alias bisa ditentukan di asal table setelah FROM. Untuk penggunaan INNER JOIN jika dilihat dari contoh tersebut juga sangatlah mudah, tinggal ketik table1 INNER JOIN table 2 ON kode_table1=kode_table2. Usahakan dalam syntax SQL yang menggunakan INNER JOIN sertakan juga alias-nya selain untuk memperpendek nama table, hal itu juga dapat menghindarkan kita dari ‘tabrakan’ nama field/kolom yang sama. Misalnya, table 1 mempunyai field kode_pelanggan dan table 2 juga mempunyai field kode_pelanggan dan jika anda tidak menyertakan aliasnya dengan format alias.nama_kolom, anda akan mendapat masalah di kemudian waktu.

Nah, sekarang saya akan menggabungkan 4 table yang saya perlihatkan diatas. Jika anda melihat dari 4 table tersebut makan korelasi-nya adalah tbl_penjualan dihubungkan dengan tbl_detail_penjualan, lalu 2 table tersebut dihubungkan dengan table tbl_master_pelanggan dan tbl_master_barang. Syntax yang akan saya tulis adalah sebagai berikut:

SELECT tp.kode_transaksi, tp.tanggal.transaksi, tp.kode_pelanggan, mp.nama_pelanggan, dtp.kode_barang, mb.nama_barang, dtp.jumlah, dtp.harga_jual, dtp.discount, (dtp.jumlah*dtp.harga_jual)-((dtp.jumlah*dtp.harga_jual)-discount) AS sub_total
FROM tbl_penjualan AS tp INNER JOIN tbl_detail_penjualan AS dtp ON tp.kode_transaksi=dtp.kode_penjualan
INNER JOIN tbl_master_pelanggan AS mp ON tp.kode_pelanggan=mp.kode_pelanggan
INNER JOIN tbl_master_barang AS mb ON dtp.kode_barang=mb.kode_barang;


Cukup mudah kan? Kita akan belajar lagi untuk perintah-perintah SQL yang lainnya.

Artikel-artikel Yang Berhubungan Dengan Artikel Ini

22 Komentar

Menambah Baris Data Baru | Edi Susanto dot Com  on June 17th, 2009

[…] tentang dasar-dasar penggunaan SQL programming dalam Visual Basic. Setelah penggunaan syntax SELECT untuk membuka data, kali ini saya akan menulis bagaimana menyimpan data baru di database MySQL […]

Web Tukang Contek » Menambah Baris Data Baru  on July 15th, 2009

[…] tentang dasar-dasar penggunaan SQL programming dalam Visual Basic. Setelah penggunaan syntax SELECT untuk membuka data, kali ini saya akan menulis bagaimana menyimpan data baru di database MySQL […]

Thomas  on July 24th, 2009

Wah…asyiknya belajar bahasa pemrograman, masalahnya saya masih awam dalam bidang ini. Kebetulan saat ini saya sedang mempelajari VB6 dan SQL sebagai databasenya, saya juga sedang membuat proyek kecil2an utk mempermudah saya dalam menyelesaikan pekerjaan saya karena kebetulan juga saya adalah seorang Admin. Saya ingin bertanya kalau boleh Pa’, seperti apakah syntax di vb jika saya ingin menampilkan data yang ada pada database agar dapat ditampilkan seluruhnya dalam ComboBox? Btw, saya memakai syntax sbb :

Private Sub Form_Load()
data_masterBB.RecordSource = “SELECT * FROM tb_SatuanBB”
data_masterBB.Refresh

With data_masterBB.Recordset
cmbSatuanBB.Text = !Satuan
End With
End Sub

Cuma masalahnya adalah data yang ditampilkan pada ComboBox hanya data pada baris pertamanya saja,sedangkan data pada baris-baris selanjutnya tidak ditampilkan,saya sadar kalau saya salah dalam menginput syntaxnya, karenanya saya butuh penjelasannya tentang ini Pa’.
Terima kasih

Asep  on July 24th, 2009

Saya sangat mengharapkan bantuan anda tentang programing VB Acces.

Private Sub Jnilai_Change()
Dim MSQL As String
If CbNisn.Value “” Then
MSQL = “SELECT*FROM NILAI_SISWA” & _
” WHERE NISN= ‘” & CbNisn.Value & “‘” & _
” ORDER BY NISN”
Set rs = CNN.Execute(MSQL)
If Not rs.EOF Then
NILAI.Value = rs.Fields(“NILAI”)
End If
End If
End Sub[/blockquote]

Kode tersebut saya buat untuk menampilkan Nilai dari tabel NILAI_SISWA.

Pada tabel nilai siswa tersebut, terdapat fields NISN, JN (Jenis Nilai), dan Nilai. Data setiap kolom bisa ganda (duplicate). Tabel tersebut tidak memiliki kode unik tersendiri, sehingga saya tidak memiliki kode utama untuk membaca seluruh baris data. Dan saya bermaksud menampilkan Nilai dimana NISN & JN sebagai order / kunci utama. Kode yang saya buat diatas tadi, hanya menampilkan nilai pertama dari fieds Nilai, yaitu NU1, tapi tidak dapat menampilkan nilai lainya. Pertanyaan saya, bagaimana cara melakukan hal tersebut?

Saya coba jelaskan dengan cara lain :
Saya membuat sebuah form, dimana saya memasang tiga buah textbox. Text1 berisi NISN. Text2 berisi JN (Jenis Nilai). Sedangkan Text3 berisi Nilai. Data yang akan ditampillkan pada semua textbox tersebut berasal dari tabel Nilai_Siswa. Saya menginginkan, ketika setelah saya mengisi Text1 & Text2, maka data pada kolom Nilai dapat ditampilkan secara otomatis. Bagaimanakah caranya?

Hal tersebut dapat saya atasi bila saya membuat kode unik pada tabel, sehingga cukup dengan menulis kode unik tersebut pada kolom kode, maka semua nilai pada kolom berikutnya dapat ditampilkan. Tapi, saya ingin tahu, dapatkah nilai ditampilkan tanpa kode unik? Atau dapatkah satu milai ditampilkan dengan syarat dua kondisi, yaitu terpenuhinya nilai NISN dan JN?

Terimas kasih sebelumnya.

sofyan  on November 15th, 2009

terimakasih..

yani  on December 29th, 2009

makasih banyak atas ilmunya….
blog anda sangat membantu….
sekali lagi terima kasih…

Bart. Edi  on December 29th, 2009

@yani: senang sekali bisa sedikit membantu…

agung  on February 12th, 2010

mas.. kalo where digunakan untuk statmen tanggal atau waktu syntaxnya gmana y?? teerimakasih

Bart. Edi  on February 12th, 2010

@agung: kalo di MySQL seperti ini karena MySQL mempunyai format tanggal YYYY-MM-DD -> SELECT * FROM tbl_transaksi WHERE tgl_transaksi BETWEEN ‘2009-01-01’ AND ‘2010-01-01’

Wendy Afreza  on May 29th, 2010

kalo cara penggunaan
mysql> SELECT IF(1 ‘yes’

untuk kasus ini
“SELECT AttendanceDateTime,F1 FROM t_HrmAttendanceLog ” _
& “WHERE idBusinessPartner='” & FString(idBP) & “‘ AND idCompany='” & db.CompanyID & “‘ and ” _
& “DATE(AttendanceDateTime)='” & FDateOnly(attDate) & “‘ AND isDelete=’N’ ” _
& “ORDER BY AttendanceDateTime ASC”)
gimana ya?

Bart. Edi  on May 29th, 2010

@Wendy Afreza: apakah maksudnya seperti ini SELECT IF(nilai_kolom=1, ‘Yes’, ‘No’) AS ketr_hadir FROM t_Hrm…. ?

isthur  on October 19th, 2010

saya br belajar Mysql dari dasar,bisa enggak di kirim tutorialnya mas dari 0 sampai level sedang,saya mau banget belajar Mysql.
OS saya linux XAMPP sdh sy install
yg br sy pelajari :
create
drop
insert
update
alter
select, nah di SELECT ini banyak yg harus sy pelajari mohon tutorialnya

nafiul  on February 23rd, 2011

kok saya praktekin di vb untnuk menampilkan data yang laki2 saja gimana ya????

rizki  on December 15th, 2011

Select lb.no, lb.nama, lb.department, lb.tanggal , lb.jenis_lembur, lb.jam_masuk ,lb.jam_pulang ,lb.lembur1, lb.lembur2, pc.PersonalCalendarID, pc.PersonalCalendarDate, pc.Lembur , pc.Lbr1, pc.Lbr2 From T_Lembur AS lb INNER JOIN PersonalCalendar AS pc ON lb.tanggal=pc.PersonalCalendarDate; ”

Tapi data yang tampilnya dalam datagrid jadi dober-dobel padahal dalam databasenya cuma ada 2 data saja…mohon masukannya

Eri  on January 23rd, 2012

bagai mana cara membuat sintaq sebuah bengkel

Eri  on January 23rd, 2012

cara membuat sintaq sebuah bengkel

Eri  on January 23rd, 2012

pungo

Bart. Edi  on January 23rd, 2012

@Eri: wah tergantung aplikasi bengkel nya mau di buat gimana

indra  on February 9th, 2012

gimana bila combo box di rubah maka secara otomatis text box ikut berubah sesuai data pada combo box, mohon penjelasannya trims

indra  on February 9th, 2012

pada ms access 2007 sudah saya tuliskan seperti ini tapi nggak mau muncul juga pada text boxnya

Private Sub Kodecombo_AfterUpdate()
‘ Manampilkan nama kota
Me.nama_kota.Value = Me.Kodecombo.Column(1)

End Sub

indra  on February 9th, 2012

Seperti ini juga nggak mau muncul pussing mohon pencerahnnya mas

Private Sub Kodecombo_AfterUpdate()
‘ Manampilkan nama kota
Me.[nama_kota] = Kodecombo.Column(1)

End Sub

EKHA  on April 12th, 2012

semoga bermanfaat>>^_^

Berikan opini anda tentang artikel ini

CommentLuv badge