5. Tipe Data String

Tutorial Belajar MySQL Part 14: Tipe Data String (Huruf) MySQL

Tipe data CHAR dan VARCHAR MySQL

Tipe data CHAR dan VARCHAR adalah tipe data karakter (string) yang akan sering kita gunakan.

Format query tipe data CHAR dan VARCHAR:

CHAR [(M)]
VARCHAR [(M)]

Dimana M adalah jumlah karakter yang akan dialokasikan oleh MySQL. Misalkan nilai M=5, maka MySQL menyediakan 5 karakter untuk kolom tersebut. Nilai maksimal M adalah 255 karakter untuk CHAR, dan 65,535 karakter untuk VARCHAR. Jika nilai M tidak di nyatakan, nilai defaultnya M=1.

Perbedaan antara CHAR dan VARCHAR adalah dari cara MySQL mengalokasikan ukuran penyimpanan data yang diinput kedalam kolom tersebut. Contohnya, jika kita mendefiniskan sebuah tabel dengan kolom bertipe CHAR(5), walaupun huruf atau karakter yang kita inputkan hanya 1 karakter, MySQL tetap menyimpan kolom tersebut untuk 5 karakter. Namun jika kita definiskan sebagai VARCHAR(5), dan kita menginput data dengan jumlah karakter 2, maka ukuran penyimpanan hanya akan menggunakan 2 karakter, sehingga VARCHAR lebih fleksibel dan efisien.

Tetapi untuk fleksibilitas ini, tipe VARCHAR memerlukan proses tambahan untuk menyimpan ukuran dari masing-masing data. Sehingga VARCHAR akan sedikit lebih lambat bila dibandingkan CHAR. Walaupun demikian, proses ini hampir tidak terdeteksi, anda bebas menggunakan CHAR atau VARCHAR untuk tipe data string.

Contoh perbedaan antara CHAR dan VARCHAR dapat kita lihat dari tabel dibawah ini:

DataCHAR(5)Ukuran PeyimpananVARCHAR(5)Ukuran Peyimpanan
' ''     '5 byte' '1 byte
'du''du    '5 byte'du'3 byte
'dunia''dunia'5 byte'dunia'6 byte
'duniailkom''dunia'5 byte'dunia'6 byte

Dari tabel diatas, kita dapat melihat bahwa ukuran penyimpanan untuk VARCHAR berubah-ubah tergantung data yang diinput. Namun sebenarnya VARCHAR membutuhkan 1 byte tambahan untuk menyimpan panjang data. Jika kita definiskan VARCHAR(5) dan menginputkan ‘dunia’, maka akan membutuhkan 5+1 byte. Berbeda dengan CHAR(5) yang tidak membutuhkan tambahan byte.

Jadi, kebutuhan akan tipe data antara CHAR dan VARCHAR bergantung kepada seperti apa data yang akan kita input. Tipe data CHAR cocok digunakan untuk kolom yang memiliki jumlah karakter tetap, misalnya untuk nomor KTP, ID pelanggan dan NIM mahasiswa. Sedangkan tipe data VARCHAR akan lebih cocok digunakan untuk kolom yang berisi data yang berbeda-beda ukuran, seperti nama, alamat dan kota.

Baik CHAR maupun VARCHAR data yang diinput akan disimpan secara case insensitif, dimana huruf besar dan kecil tidak dibedakan.

Untuk tipe data CHAR, jika kita menginputkan data dengan spasi dibelakangnya, misalnya ‘aku   ’ (terdapat 3 spasi setelah ‘aku’), maka sewaktu menampilkan data, spasi tersebut akan otomastis dihapus oleh MySQL, menjadi‘aku’. Pertimbangkan menggunakan VARCHAR jika hal ini anda butuhkan, dimana VARCHAR akan tetap menampilkan ‘aku   ’.

Contoh query membuat tabel dengan tipe data CHAR dan VARCHAR :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql> CREATE TABLE contoh_cha (cha CHAR(5),
varcha VARCHAR(5));
Query OK, 0 rows affected (0.06 sec)
 
mysql> INSERT INTO contoh_cha values ('a  ','a  ');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO contoh_cha values ('dunia','dunia');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO contoh_cha values ('duniailkom','duniailkom');
ERROR 1406 (22001): Data too long for column 'cha' at row 1
 
mysql> SELECT * FROM contoh_cha;
+-------+--------+
| cha   | varcha |
+-------+--------+
| a     | a      |
| dunia | dunia  |
+-------+--------+
2 rows in set (0.00 sec)
Sama seperti tipe data integer, sebelum mendefinisikan suatu kolom dengan CHAR(10) atau VARCHAR(10), sedapat mungkin kita sudah memprediksi data yang akan diinput kedalam kolom tersebut. Apakah 10 karakter cukup untuk menampung seluruh data yang akan diisi, atau apakah terdapat kemungkinan data yang diinput akan berisi 15 karakter.

Merubah tipe kolom setelah implementasi akan membutuhkan usaha yang lebih dari pada memprediksinya di awal perancangan database.


Tipe Data BINARY dan VARBINARY dalam MySQL

Pada dasarnya tipe data BINARY dan VARBINARY sama dengan CHAR dan VARCHAR, perbedaannya hanya pada struktur peyimpanan dalam MySQL, dimana tipe data binary akan disimpan secara biner (bit per bit), bukan secara karakter seperti CHAR. Sederhananya, hal ini akan berefek pada case-sensitif data (perbedaan penggunaan huruf besar dan huruf kecil).

Pada tipe data CHAR, jika kita menyimpan data ‘A’, maka secara internal MySQL akan menyimpannya sebagai karakter ‘A’, dimana ‘A’ akan sama dengan ‘a’. Namun untuk tipe data BINARY‘A’ akan disimpan sebagai bit dari ‘A’, yaitu 65, dan akan berbeda dengan ‘a’, dimana nilai binernya adalah 97.

Format query tipe data BINARY dan VARBINARY:

BINARY [(M)]
VAR BINARY [(M)]

Dimana sama seperti tipe data CHAR dan VARCHAR, M adalah jumlah karakter yang akan dialokasikan oleh MySQL. Misalkan nilai M adalah 5, maka MySQL menyediakan 5 karakter untuk kolom tersebut. Nilai M maksimal 255 karakter untuk BINARY, dan 65,535 karakter untuk VARBINARY. Jika nilai M tidak di nyatakan, nilai defaultnya adalah 1.

BINARY akan disimpan dalam ukuran yang tetap, sedangkan VARBINARY akan berubah sesuai ukuran data (sama dengan perbedaan antara CHAR dan VARCHAR)

Contoh query membuat tabel dengan tipe data BINARY dan VARBINARY :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mysql> CREATE TABLE contoh_bin (bin BINARY(5),
varbin VARBINARY(5));
Query OK, 0 rows affected (0.08 sec)
 
mysql> INSERT INTO contoh_bin values ('dunia','dunia');
Query OK, 1 row affected (0.04 sec)
 
mysql> SELECT * FROM contoh_bin;
+-------+--------+
| bin   | varbin |
+-------+--------+
| dunia | dunia  |
+-------+--------+
1 row in set (0.00 sec)
 
mysql> SELECT * FROM contoh_bin where bin='dunia';
+-------+--------+
| bin   | varbin |
+-------+--------+
| dunia | dunia  |
+-------+--------+
1 row in set (0.00 sec)
 
mysql> SELECT * FROM contoh_bin where bin='DUNIA';
Empty set (0.00 sec)

Perhatikan bahwa pada query terakhir, tidak menampilkan hasil apa-apa, karena dalam BINARY, ‘dunia’ tidak sama dengan ‘DUNIA’.


Tipe Data TEXT MySQL

Untuk data string yang lebih besar, MySQL menyediakan tipe data TEXT, yang terdiri dari : TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT. Maksimal ukuran masing-masing tipe data dapat dilihat dari tabel dibawah ini:

Tipe DataUkuran MaksimumJumlah Karakter Maksimum
TINYTEXT255 byte255
TEXT65.535 byte (64 KB)6.5535
MEDIUMTEXT16.777.215 byte (16MB)16.777.215
LONGTEXT4.294.967.295 (4GB)4.294.967.295

Setiap tipe data text disimpan berdasarkan berapa data yang diinput, sama seperti VARCHAR, dimana jika kita mendefinisikan suatu kolom sebagai LONGTEXT, dan hanya berisi 100 karakter, ukuran penyimpanan yang digunakan sekitar 100 byte, bukan 4GB.

Contoh query membuat tabel dengan tipe data TEXT :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mysql> CREATE TABLE contoh_text (tin TINYTEXT, tex TEXT,
lon LONGTEXT);
Query OK, 0 rows affected (0.05 sec)
 
mysql> DESC contoh_text;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| tin   | tinytext | YES  |     | NULL    |       |
| tex   | text     | YES  |     | NULL    |       |
| lon   | longtext | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.09 sec)
 
mysql> INSERT INTO contoh_text values ('duniailkom',
'duniailkom','duniailkom.com');
Query OK, 1 row affected (0.04 sec)
 
mysql> SELECT * FROM contoh_text;
+------------+------------+----------------+
| tin        | tex        | lon            |
+------------+------------+----------------+
| duniailkom | duniailkom | duniailkom.com |
+------------+------------+----------------+
1 row in set (0.00 sec)

Tipe Data BLOB MySQL

Tipe data BLOB adalah tipe data versi binary dari TEXT, dimana karakter akan disimpan dalam bit. Dan untuk karakter huruf, huruf besar dan kecil akan dibedakan (‘A’ tidak sama dengan ‘a’). Sama seperty TEXT, BLOB juga memiliki beberapa tipe : TINY BLOB, BLOB, MEDIUM BLOB, dan LONGBLOB.

Ukuran serta jangkauan dari BLOB sama seperti TEXT, seperti pada tabel berikut ini:

Tipe DataUkuran MaksimumJumlah Karakter Maksimum
TINYBLOB255 byte255
BLOB65.535 byte (64 KB)65.535
MEDIUMBLOB16.777.215 byte (16MB)16.777.215
LONGBLOB4.294.967.295 (4GB)4.294.967.295

Karena sifatnya yang tersimpan secara binary,tipe data BLOB dapat digunakan untuk menyimpan data multimedia, seperti gambar dan musik kedalam tabel MySQL.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mysql> CREATE TABLE contoh_blob (tin TINYBLOB, blo BLOB,
lon LONGBLOB);
Query OK, 0 rows affected (0.14 sec)
 
mysql> DESCRIBE contoh_blob;
 +-------+----------+------+-----+---------+-------+
 | Field | Type     | Null | Key | Default | Extra |
 +-------+----------+------+-----+---------+-------+
 | tin   | tinyblob | YES  |     | NULL    |       |
 | blo   | blob     | YES  |     | NULL    |       |
 | lon   | longblob | YES  |     | NULL    |       |
 +-------+----------+------+-----+---------+-------+
 3 rows in set (0.01 sec)
 
mysql> INSERT INTO contoh_blob values ('duniailkom',
'duniailkom','duniailkom.com');
Query OK, 1 row affected (0.05 sec)
 
mysql> SELECT * FROM contoh_blob;
 +------------+------------+----------------+
 | tin        | blo        | lon            |
 +------------+------------+----------------+
 | duniailkom | duniailkom | duniailkom.com |
 +------------+------------+----------------+
 1 row in set (0.01 sec)

Dalam tutorial MySQL kali ini kita telah membahas tentang tipe data String dalam MySQL. Tipe data string mungkin adalah tipe data yang paling sering digunakan di dalam pembuatan tabel. Melanjutkan pembahasan tentang tipe data, dalam tutorial MySQL selanjutnya kita akan membahas tentang cara penggunaan tipe data date dalam MySQL.