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.
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
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
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
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:
oohhh itu to bedanya :)
nais inpoh B)
heh, kayaknya kenal nech :D
ok om, thanks for sharing
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?
Posting Komentar