Seperti posting saya sebelumnya tentang Syntak Dasar MySQL (seri 3), kita akan lanjutkan ke tahap selanjutnya Syntak Dasar MySQL (seri 4), Didalam seri sebelumnya saya sudah menjelaskan tentang tipe data "Numeric" dan "Date and Time", maka materi selanjutnya akan kita bahas tentang tipe data "String", yang terdiri dari beberapa jenis sebagai berikut :
# Jenis Char dan Varchar.
Jenis Char dan Varchar merupakan jenis yang sama / serupa, namun ada perbedaan dalam proses penyimpanan data dan pengambilan data, perbedaan juga terdapat dalam panjang maksimum dan penggunaan spasi, kedua jenis tipe data tersebut dideklarasikan dengan panjang yan menunjukkan jumlah maksimum karakter yang ingin di simpan, misalnya Char(20) bisa menampung hingga 20 karakter dan Char(10) hanya mampu menampung 10 karakter saja, di sesuaikan dengan kebutuhan penggunaan dan penyimpanan data. Panjang kolom Char ditetapkan sedemikian rupa sehingga bisa berupa nilai dari 0 - 255, bila disimpan diberi bantalan spasi dengan panjang yang sudah ditentukan, bila nilai Char diambil dan terdapat spasi tambahan akan dihapus kecuali mode PAD_CHAR_TO_FULL_LENGTH diaktifkan.
Jenis Varchar merupakan nilai string dengan panjang variabel yang ditentukan dari 0 sampai 65.535, panjang maksimum yang efektif untuk jenis Varchar dibatasi sampai nilai maksimumnya yaitu 65.535 sehingga dapat disimpulkan jenis Varchar merupakan jenis data yang dapat di optimalkan sampai panjang variabel terakhir. Berbeda dari jenis Char, nilai Varchar disimpan sebagai awalan 1 byte atau 2 byte plus data. Jika mode ketat di SQL tidak diaktifkan maka akan memberikan nilai melebihi panjang maksimum dari jenis data tersebut sehingga nilai yang inputkan akan terpotong agar sesuai dengan panjang karakter yang sudah ditentukan. Spasi tambahan dalam tipe Varchar melebihi panjang kolom akan otomatis dipotong , terlepas dari mode SQL yang digunakan, nilai varchar akan tersimpan sesuai dengan standar SQL, dibawah ini akan saya tampilkan tabel perbedaan antara tipe data Char dan Varchar disertai dengan hasil penyimpanan nilai - nilai string (dengan asumsi nilai tersebut menggunakan satu karakter byte tunggal).
Sumber Gambar (MySQL)
mysql> CREATE TABLE names (myname CHAR(10)); Query OK, 0 rows affected (0.03 sec) mysql> INSERT INTO names VALUES ('Monty'); Query OK, 1 row affected (0.00 sec) mysql> SELECT myname = 'Monty', myname = 'Monty ' FROM names; +------------------+--------------------+ | myname = 'Monty' | myname = 'Monty ' | +------------------+--------------------+ | 1 | 1 | +------------------+--------------------+ 1 row in set (0.00 sec) mysql> SELECT myname LIKE 'Monty', myname LIKE 'Monty ' FROM names; +---------------------+-----------------------+ | myname LIKE 'Monty' | myname LIKE 'Monty ' | +---------------------+-----------------------+ | 1 | 0 | +---------------------+-----------------------+ 1 row in set (0.00 sec)
Nilai dalam kolom Char dan Varchar diurutkan dan dibandingkan dengan kumpulan karakter yang ditetapkan dalam kolom, semua MySQL Collations bertipe PAD SPACE, yang berarti bahwa semua nilai Char, Varchar dan juga Text dibandingkan tanpa memperhatikan spasi tambahan, perbandingan seperti ini tidak termasuk dalam sintaks operator pencocokan pola LIKE dimana ruang tambahan sangat penting untuk diperhatikan, contoh :
mysql> CREATE TABLE names (myname CHAR(10)); Query OK, 0 rows affected (0.03 sec) mysql> INSERT INTO names VALUES ('Monty'); Query OK, 1 row affected (0.00 sec) mysql> SELECT myname = 'Monty', myname = 'Monty ' FROM names; +------------------+--------------------+ | myname = 'Monty' | myname = 'Monty ' | +------------------+--------------------+ | 1 | 1 | +------------------+--------------------+ 1 row in set (0.00 sec) mysql> SELECT myname LIKE 'Monty', myname LIKE 'Monty ' FROM names; +---------------------+-----------------------+ | myname LIKE 'Monty' | myname LIKE 'Monty ' | +---------------------+-----------------------+ | 1 | 0 | +---------------------+-----------------------+ 1 row in set (0.00 sec)
Untuk beberapa kasus dimana karakter trailing pad dihilangkan atau perbandingan diabaikan, dan itupun jika kolom memiliki indeks yang memerlukan nilai unik akan menghasilkan pesan duplikat key, contoh : jika sebuah tabel berisi nilai 'a', maka proses penyimpanan nilai 'a ' (nilai a dengan spasi) akan menghasilkan pesan duplikat key.
Semoga materi Seri 4 dapat bermanfaat. (sumber materi).
Best Regards
0 komentar:
Posting Komentar