Kupas Tuntas Tipe Data String pada MySQL

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.
Bayu Radityo

Seorang lulusan teknik informatika yang senang dalam berbagi ilmu pengetahuan, dan membuat karya digital berupa photomanipulation dan digital drawing. instagram external-link

Posting Komentar

Lebih baru Lebih lama