Sebelumnya penulis telah membahas tentang berbagai macam jenis tipe data yang
pada mysql namun pada pembahasan sebelumnya hanya berupa ringkasan singkat
sehingga tidak membahas lebih detail mengenai tipe data yang ada. Pada kali
ini penulis akan kumpas tuntas tipe data string yang ada pada mysql serta
pendeklarasiannya. Tipe data string pada mysql digunakan untuk menyimpan
nilai/data berupa /huruf/angka/simbol atau kombinasi diantara itu,
beberapa tipe data string pada mysql adalah sebagai berikut:
Tipe Data | Keterangan | Jangkauan | Ukuran |
---|---|---|---|
Char(M) | Menyimpan string dengan nilai (M) tetap | 0 s/d 255 | (M) |
Varchar(M) | Menyimpan string dengan nilai dinamis | 0 s/d 65.535 | String + 1 jika panjang nilai 0-255, String + 2 jika butuh lebih dari 255 |
Text | Menyimpan data bilangan bulat positif dan negatif | 0 s/d 65.535 | String + 2 dan String < 216 |
Tinytext | Menyimpan data bilangan bulat positif dan negatif | 0 s/d 65.535 | String + 2 dan String < 28 |
Mediumtext | Menyimpan data bilangan bulat positif dan negatif | 0 s/d 65.535 | String + 2 dan String < 224 |
Longtext | Menyimpan data bilangan bulat positif dan negatif | 0 s/d 65.535 | String + 2 dan String < 232 |
Enum | Menyimpan data bilangan bulat positif dan negatif | 1 s/d 65.535 | Tergantung pada banyaknya nilai yang ada |
Value | Menyimpan data bilangan bulat positif dan negatif | 0 s/d 64 | Tergantung pada banyaknya nilai yang ada |
1. Char dan Varchar
Tipe data char dan varchar merupakan tipe data yang digunakan
untuk menyimpan data string dengan bentuk umum / format querynya sebagai
berikut:
Char(M) / Varchar(M) dimana (M) menunjukan batas maksimal karakter yang dapat di simpan, contohnya sebagai berikut:
create table karakter (kolom_1 char(10), kolom_2 varchar(10))
0 row(s) affected 0.514 sec
insert into karakter values ("", "")
1 row(s) affected 0.109 sec
insert into karakter values ("geek", "geek")
1 row(s) affected 0.031 sec
insert into karakter values ("geekasmedi", "geekasmedi")
1 row(s) affected 0.094 sec
insert into karakter values ("geekasmedia", "geekasmedia")
Error Code: 1406. Data too long for column 'kolom_1' at row 1 0.016 sec
insert into karakter values ("geekasmedi", "geekasmedia")
Error Code: 1406. Data too long for column 'kolom_2' at row 1 0.000 sec
Pada contoh diatas dapat dilihat bahwa data dapat di input selama tidak melebihi
panjang nilai(M) yang telah didefinisikan sehingga jika menginput data
melebihi panjang nilai maka baik char maupun varchar akan menampilkan pesan
error code 1406 yang menunjukkan bahwa data terlalu panjang. Perbedaan
antara char dan varchar terletak pada jumlah memori dan maksimal karakter
yang dapat disimpan dimana pada tipe data char menyimpan memori secara
tetap, artinya jika kita mendeklarasikan char(10) maka ukuran memori yang
tersimpan akan tetap 10 byte meskipun panjang karakter tidak sampai 10 karakter, sementara pada
varchar sesuai dengan jumlah string + 1, namun jika data yang disimpan lebih
dari 255 karakter maka alokasi memorinya menjadi String + 2.
Tipe data char cocok digunakan untuk data bernilai tetap seperti NPM
mahasiswa, no pegawai/dosen/guru dsb sedangkan varchar cocok untuk menyimpan data dengan jumlah karakter yang dapat berbeda-beda seperti username, email, nama, dsb. Kita juga bisa
menyimpan data dengan campuran huruf besar-kecil maupun angka dan simbol,
contohnya seperti berikut:
insert into karakter values ("gEEkAsmEdi", "GeEkASmedi")
1 row(s) affected 0.390 sec
insert into karakter values ("g33k@$mE&i", "9eEk4$m*D^")
1 row(s) affected 0.000 sec
2. Enum dan Set
MySQL menyediakan tipe data string yang bersifat enumerasi (pilihan) dan set
(himpunan), format quernya sebagai berikut:
Enum (value1, value2, valueN) / Set (value1, value2, valueN)
Tipe data set digunakan untuk dapat memilih satu / lebih dari satu pilihan
dari beberapa daftar pilihan yang telah didefinisikan sebelumnya, sedangkan
tipe data enum hanya membolehkan untuk memilih satu pilihan dari daftar
pilihan yang telah didefinisikan sebelumnya, agar lebih mudah simak contoh
berikut:
create table eset (kolom_1 enum("pilihan1", "pilihan2", "pilihanN"), kolom_2 set("pilihan1", "pilihan2", "pilihanN"))
0 row(s) affected 0.390 sec
insert into eset values("Pilihan1", "Pilihan1")
1 row(s) affected 0.328 sec
insert into eset values("Pilihan1", "pilihan1,pilihan2,pilihanN")
1 row(s) affected 0.031 sec
insert into eset values("pilihan1,pilihan2,pilihanN", "pilihan1,pilihan2,pilihanN")
Error Code: 1265. Data truncated for column 'kolom_1' at row 1 0.000 sec
Dari contoh diatas dapat dilihat pada tipe data set dapat memilih lebih dari
satu pilihan sementara pada tipe data enum hanya bisa memilih satu. Tipe
data enum cocok digunakan pada nilai yang memang hanya memiliki satu pilihan
seperti misalnya jenis kelamin, jurusan kuliah, dsb sementara tipe data set
digunakan untuk nilai yang kemungkinannya bisa satu atau lebih seperti
daftar hobi serta daftar pilihan keduanya sama-sama telah didefinisikan
sebelumnya. Kita juga bisa menyimpan data enum dan set dengan campuran huruf
besar-kecil meskipun data yang tersimpan tetap akan sesuai dengan pendefinisan kolom di awal, contohnya seperti berikut:
insert into eset values("pIlIhAN1", "pILihAN2")
1 row(s) affected 0.031 sec
insert into eset values("Pilihan1", "pIlIhAN1,PIlIhAN2,PiLIhANN")
1 row(s) affected 0.016 sec
Beberapa kesalahan yang dapat menyebabkan error ketika menyimpan data dengan
tipe data set dan enum adalah sebagai berikut :
- Tidak dapat menginput nilai yang tidak ada pada daftar pilihan
- Tidak dapat menggunakan kombinasi angka dan simbol
- Tidak dapat menggunakan spasi jika memilih lebih dari satu pada kolom dengan tipe data set
Contohnya seperti berikut:
insert into eset values("pilihan1,pilihan2,pilihanN", "pilihan1,pilihan2,pilihanN")
Error Code: 1265. Data truncated for column 'kolom_1' at row 1 0.000 sec
insert into eset values("Pilihan1", "pIlIhAN1,P!lIhAN2,P!LIh4@N")
Error Code: 1265. Data truncated for column 'kolom_2' at row 1 0.000 sec
insert into eset values("pil1h4N1", "p!lih@N1")
Error Code: 1265. Data truncated for column 'kolom_1' at row 1 0.000 sec
Tipe data text pada mysql digunakan untuk menyimpan string dengan jumlah
karakter yang cukup panjang, seperti pada sebuah kolom komentar atau field
biodata diri dan semacamnya serta didefinisikan tanpa menggunakan batas nilai
(M), contohnya seperti berikut:
create table teks (kolom_1 tinytext, kolom_2 text, kolom_3 mediumtext, kolom_4 longtext)
0 row(s) affected 0.265 sec
create table teks (kolom_1 tinytext(25), kolom_2 text(25), kolom_3 mediumtext(25), kolom_4 longtext(25))
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(25), kolom_2 text(25), kolom_3 mediumtext(25), kolom_4 longtext(25))' at line 1 0.000 sec
Dapat dilihat ketika diberi batas nilai (M) justru menampilkan pesan error
code 1046. Data yang di input sama seperti char dan varchar, dapat berupa huruf/angka/simbol dan kombinasi diantara itu tanpa melihat huruf besar-kecil. Itulah sejumlah contoh penggunaan tipe data string yang dimiliki oleh MySQL, jika ada pertanyaan jangan sungkan untuk bertanya melalui kolom komentar.
Untuk mempelajari pembahasan lainnya silahkan lihat halaman daftar isi.