Mungkin ada di antara Anda yang protes pada saya, ngapain sih kok nulis artikel ini. Kan query INSERT itu mudah sekali. Iya sih.. mudah bagi Anda yang sudah expert tapi hal baru bagi para newbie. Toh… Anda dulu (yang expert) pernah jadi newbie juga
Alasan ditulisnya artikel ini tak lain adalah sering saya jumpai keluhan baik itu rekan2 sesama programmer pemula, mahasiswa maupun pengunjung blog ini yang sering gagal dalam menjalankan query INSERT ini. Salah satunya adalah pengunjung blog saya ini. Mereka menganggap query SQL yang diberikan sudah benar, tapi mengapa data atau record tak jua tersimpan dalam tabel. Mudah-mudahan dengan artikel ini bisa sedikit menjawab semua kesulitan yg dihadapi tsb.
OK… untuk studi kasus, misalkan saya berikan sebuah tabel sebagai berikut
1.
CREATE
TABLE
sampel (
2.
field1
int
(11) auto_increment,
3.
field2
varchar
(10),
4.
field3
date
,
5.
field4
float
,
6.
field5 text,
7.
PRIMARY
KEY
(field1)
8.
);
Nah.. secara umum, bila kita ingin menyisipkan sebuah record ke dalam tabel menggunakan query SQL maka menggunakan sintaks sbb:
1.
INSERT
INTO
namaTabel (field1, field2, field3, ..., fieldn)
2.
VALUES
(
'value1'
,
'value2'
,
'value3'
, ...,
'valuen'
);
Namun… yang menjadi pertanyaan adalah, Apakah susunan urutan penulisan field dalam query INSERT tersebut harus selalu sama dengan urutan field dalam tabel? Jawabnya adalah TIDAK. Anda bisa saja membolak-balik urutan field dalam penulisan query nya, asal… valuenya juga menyesuaikan. Contohnya:
1.
INSERT
INTO
namaTabel (field2, field1, field3, ..., fieldn)
2.
VALUES
(
'value2'
,
'value1'
,
'value3'
, ...,
'valuen'
);
1.
INSERT
INTO
sampel (field2, field3)
2.
VALUES
(
'Hallo'
,
'2009-10-12'
);
khusus untuk tipe data DATE, format value yang bisa disimpan adalah dalam bentuk ‘yyyy-mm-dd’.
Mungkin Anda bertanya lagi, Bagaimana bila tabel tersebut memuat field yang merupakan ‘AUTO INCREMENT’? value dalam query INSERT nya diisi dengan apa?
Ya… karena dia auto increment, nama field dan value tidak usah dituliskan, karena nanti akan diisi secara otomatis oleh sistem. Sebagai contoh adalah query berikut ini yang menyisipkan record pada tabel ‘sampel’ di atas pada semua field kecuali ‘field1′ yang merupakan auto increment.
1.
INSERT
INTO
sampel (field2, field3, field4, field5)
2.
VALUES
(
'Hallo'
,
'2009-10-12'
,
'2.89'
,
'Ini Sebuah Text'
);
Oya.. harap hati-hati dengan penggunaan bentuk query ini, karena field-field yang merupakan PRIMARY KEY (namun bukan AUTO INCREMENT) harus diisikan valuenya.
Sebagai contoh, misalkan suatu tabel terdapat 3 field ‘field1′, ‘field2′, dan ‘field3′ dimana ‘field1′ nya merupakan PRIMARY KEY (bukan auto increment).
Jika kita berikan query INSERT sbb:
1.
INSERT
INTO
namaTabel (field2, field3)
2.
VALUES
(
'value2'
,
'value3'
);
Selain bentuk atau sintaks query yang disebutkan di atas, ada pula query INSERT dengan bentuk sbb:
1.
INSERT
INTO
namaTabel
2.
VALUES
(
'value1'
,
'value2'
, ...,
'valuen'
);
Nah… apa perbedaan makna penulisan query tersebut dengan sebelumnya?
Ya.. perbedaannya adalah, bahwa dengan bentuk query tersebut, Anda harus urut dalam menuliskan valuenya (sesuai urutan field dalam tabel) dan juga jumlah value yang Anda tuliskan harus sama dengan jumlah field yang ada dalam tabel tersebut, atau dengan kata lain bentuk query INSERT tersebut akan mengisi record untuk semua field yang ada dalam tabel.
Sebagai contoh misalkan dalam suatu tabel terdapat field dengan urutan sbb:
field1, field2, field3
dan kemudian Anda memberikan query INSERT sbb:
1.
INSERT
INTO
namaTabel
2.
VALUES
(
'value1'
,
'value2'
,
'value3'
);
Sedangkan jika Anda menuliskan query INSERT sbb:
1.
INSERT
INTO
namaTabel
2.
VALUES
(
'value1'
,
'value2'
);
Trus… mungkin ada pertanyaan lagi, jadi… bisakah kita gunakan bentuk query INSERT terakhir ini untuk menyisipkan record ke dalam tabel yang di dalamnya terdapat auto increment? Jawabnya adalah.. sebaiknya JANGAN, karena field auto increment ini akan diisi otomatis oleh sistem, jadi.. sebaiknya gunakan bentuk sintaks INSERT pertama di atas.
OK… mudah-mudahan artikel ini bermanfaat bagi Anda, terutama yang masih sering salah dalam menyisipkan record ke dalam tabel.
Tidak ada komentar :
Posting Komentar