Senin, 07 Juni 2010

Antara CHAR, VARCHAR dan VARCHAR2 di Oracle

Dalam Oracle terdapat 3 tipe data yang menampung data-data alfanumerik atau string, yaitu CHAR, VARCHAR, VARCHAR2. Apa perbedaan diantara ketiga tipe data tersebut dan saat kapan kita menggunakannya? Mari kita bahas satu persatu.


CHAR 


CHAR digunakan untuk menyimpan data dengan panjang karakter tetap. Jika tipe data ini dugunakan untuk menyimpan data yang bermacam-macam panjangnya seperti nama ataupun alamat, maka akan banyak memory yang terbuang dalam disk. CHAR cocok digunakan untuk penyimpanan data dengan nilai tetap seperti Jenis Kelamin.


Contoh :


SQL> CREATE TABLE char_test (col1 CHAR(10));

Table created.

SQL> INSERT INTO char_test VALUES ('qwerty');

1 row created.

SQL> SELECT col1, length(col1), dump(col1) "ASCII Dump" FROM char_test;

COL1       LENGTH(COL1) ASCII Dump
---------- ------------ ------------------------------------------------------------
qwerty               10 Typ=96 Len=10: 113,119,101,114,116,121,32,32,32,32


Dapat dilihat dari hasil query diatas, bahwa col1 menyimpan karakter qwerty sepanjang 10 karakter, yang seharusnya hanya berisi 6 karakter.

VARCHAR

VARCHAR memiliki kegunaan sama dengan VARCHAR2, yaitu menyimpan data-data bertipe alfanumerik sesuai panjang data yang digunakan. Namun Oracle sudah tidak menggunakan VARCHAR lagi dan digantikan oleh VARCHAR2. Dapat kita lihat contoh berikut :



SQL> CREATE TABLE varchar_test (col1 VARCHAR(10));

Table created.

SQL>DESC varchar_test

Name                            Null?    Type
------------------------------- ------- -------------
COL1                                    VARCHAR2(10)

Walaupun saat pembuatan tabel, kita menggunakan tipe data VARCHAR, namun Oracle akan mengubahnya langsung menjadi VARCHAR2.

Kemudian kita lakukan query berikut :

SQL> INSERT INTO varchar_test VALUES ('qwerty');

1 row created.

SQL> SELECT col1, length(col1), dump(col1) "ASCII Dump" FROM varchar_test;

COL1       LENGTH(COL1) ASCII Dump
---------- ------------ ------------------------------------------------------------
qwerty                6 Typ=1 Len=6: 113,119,101,114,116,121

Panjang karakter dari col1 adalah 6 sesuai panjang karakter yang ada di tabel yaitu qwerty.

VARCHAR2

VARCHAR2 digunakan untuk menyimpan karakter alfanumerik atau string dengan menyesuaikan panjang karakter dari data itu sendiri. Panjang karakter pada data di tabel akan sesuai dengan panjang karakter yang disimpan pada disk

Contoh :



SQL> CREATE TABLE varchar2_test (col1 VARCHAR2(10));

Table created.

SQL> INSERT INTO varchar2_test VALUES ('qwerty');

1 row created.

SQL> SELECT col1, length(col1), dump(col1) "ASCII Dump" FROM varchar2_test;

COL1       LENGTH(COL1) ASCII Dump
---------- ------------ ------------------------------------------------------------
qwerty                6 Typ=1 Len=6: 113,119,101,114,116,121

Perbedaan VARCHAR dan VARCHAR2

VARCHAR sudah diganti dengan VARCHAR2 pada pendefinisian tipe data di Oracle, dan Oracle menganjurkan untuk mendeklarasikan VARCHAR2 ketimbang VARCHAR.Mengapa? Disini saya akan menjelaskan kelebihan dari VARCHAR2 dibandingkan VARCHAR. Antara lain adalah :

  • VARCHAR hanya dapat menampung karakter hingga 2000 byte, sedangkan VARCHAR2 dapat menampung karakter sepanjang 4000 byte.
  • Tipe data VARCHAR akan menampung spasi pada nilai NULL, sedangkan VARCHAR2 tidak akan menampung karakter atau spase sama sekali.


3 komentar:

Unknown mengatakan...

oohhh itu to bedanya :)
nais inpoh B)

Anonim mengatakan...

heh, kayaknya kenal nech :D

ok om, thanks for sharing

dimasiano mengatakan...

ane rasa ada yang salah bro di type data varchar2, ambil contoh tabel mahasiswa dengan primary key nim panjang karakter 20 byte, ane lakuin

insert into mahasiswa(nim)values('12345678');
insert into mahasiswa(nim)values('12345678 ');
insert into mahasiswa(nim)values('12345678 ');

dari ke 3 data klo diinsert pasti akan tersimpan walaupun dengan nim yang sama. seharusnya kan tidak bisa disimpan karena primary key nya nim dan yg diinsertkan juga nilainya sama, ada solusi?