Rabu, April 30, 2008

Seputar NOT NULL pada Database MySQL

Kebanyakan pengguna MySQL yang dulunya pengguna database server lain umumnya sudah mengerti mengenai konsep NULL. Jika Anda belum mengetahui persis mengenai apa itu NULL, intinya itu adalah suatu ekspresi sesuatu yang tidak ada nilainya atau belum diketahui nilainya. Jika Anda belum mengerti benar mengenai konsep NULL maka Anda bisa mencari mengenai subyek ini di Google.

Kembali lagi ke masalah NULL. Kita sering memasang contsraint NOT NULL pada suatu tabel untuk memastikan bahwa suatu nilai dimasukkan ke dalam kolom tersebut. Tapi di MySQL hal tersebut mungkin hasilnya tidak sesuai dengan keinginan Anda. Mengapa demikian?

Mari kita simak terus tulisan ini.

Pertama-tama mari kita buat sebuah tabel pada MySQL, sebut saja tabelnya bernama karyawan.

CREATE TABLE karyawan (id INT, nama VARCHAR(30) NOT NULL, umur INT NOT NULL);

Kemudian kita insert-kan beberapa data ke dalamnya. Perhatikan bahwa kolom nama dan umur sifatnya NOT NULL.

INSERT INTO karyawan (nama) VALUES ('agus');

dan

INSERT INTO karyawan (umur) VALUES (29);

Maka setelah kita eksekusi select * from karyawan hasilnya seperti berikut ini.

mysql> SELECT * FROM karyawan;
+--------+-------+-------+
| id | nama | umur |
+--------+-------+-------+
| NULL | agus | 0 |
| NULL | | 29 |
+--------+-------+-------+
2 rows in set (0.00 sec)

Pada beberapa database server lainnya, sebut saja MS SQL Server 2000, jika perintah INSERT INTO seperti di atas dijalankan, maka akan muncul error karena salah satu field tidak berisi nilai. Nah, kenapa di MySQL tidak ada error yang muncul?

Mengapa di MySQL contsraint NOT NULL seperti tidak berpengaruh apa-apa? Nanti dulu, menurut dokumentasi MySQL mengatakan bahwa jika suatu nilai tidak diberikan pada suatu kolom maka MySQL akan memasukkan suatu nilai default kepada kolom tersebut. Jika tidak ada default value yang didefinisikan dan kolom tersebut menerima nilai NULL, maka nilai NULL-lah yang akan dimasukkan oleh MySQL ke dalamnya. Sebaliknya, jika kolom tersebut tidak menerima nilai NULL, maka MySQL akan memasukkan suatu nilai yang berbasis pada tipe kolom tersebut. Pada kasus pertama di atas, penulis tidak memasukkan nilai umur ke kolom umur sehingga kolom umur akan diisi dengan nilai 0 (sesuai dengan tipe dasar dari kolom tersebut, yaitu INT). Sedangkan pada kasus kedua di atas, penulis tidak memasukkan nilai nama ke kolom nama (hanya memasukkan nilai umur saja) sehingga kolom nama akan berisi blank karakter (sesuai dengan tipe dasar dari kolom tersebut, yaitu VARCHAR).

Jadi kesimpulannya adalah masalah "mau menerima nilai NULL atau tidak" saja sebenarnya, itu yang terjadi pada MySQL. Kalau boleh diterangkan lebih jelas lagi, maka NOT NULL di MySQL itu berarti bahwa kolom tersebut tidak mau menerima nilai NULL. Sedangkan pada beberapa database server yang lain, NOT NULL diartikan sebagai penolakan jika kolom yang bersangkutan tidak berisi suatu nilai apa-apa.

Referensi

Andrew Gilfrin, MySQL Tip of the Month, Quest Software

Related Posts by Categories



Tidak ada komentar:

Mengukur Kecepatan Web / Blog

Your domain(s): Masukkan Alamat blog atau Web Kamu(Maximum 10)
 
(ex: dedi-zikri.blogspot.com)    
 

Powered by Klik Now
Photobucket
Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket
yoi...terhitung semenjak awal tahun ini saya beralih magang ke Dinas Pendidikan Kota Padang Panjang,karena di kantor dinas sedang dibutuhkan tenaga tekhnisi,sedang kan pada seleksi semester 3 kemeren utusan dari dinas pendidikan ini di DO,jd mo ga mo kantor dinas meminta saya magang dulu di sini.....

Photobucket

inilah foto ruangan tempat saya Magang di dinas Pendidikan Padang panjang

sering berantakan terus sih,maklumlah orang pendataan...