Query Dasar MySQL
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:
Data | CHAR(5) | Ukuran Peyimpanan | VARCHAR(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) |
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 Data | Ukuran Maksimum | Jumlah Karakter Maksimum |
---|---|---|
TINYTEXT | 255 byte | 255 |
TEXT | 65.535 byte (64 KB) | 6.5535 |
MEDIUMTEXT | 16.777.215 byte (16MB) | 16.777.215 |
LONGTEXT | 4.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 Data | Ukuran Maksimum | Jumlah Karakter Maksimum |
---|---|---|
TINYBLOB | 255 byte | 255 |
BLOB | 65.535 byte (64 KB) | 65.535 |
MEDIUMBLOB | 16.777.215 byte (16MB) | 16.777.215 |
LONGBLOB | 4.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.