Mengenal Tipedata pada MySQL
Berikut sebelum kita membangun database alangkah lebih baiknya kita coba belajar terlebih dahulu macam-macam tipedata yang digunakan atau yang tersedia di MySQL Database, berikut listnya:
- Tipedata Numerik
- Tipedata String
- Tipedata Tanggal & Waktu
Berikut adalah pembahasan masing-masing dari tipe data yang ada di list.
A. Tipedata Numerik
Tipe data yang ada dalam MySQL itu ada beragam, berikut pembahasannya
Integer Types (Exact Value)
- INTEGER
- INT
- SMALLINT
- TINYINT
- MEDIUMINT
- BIGINT
MySQL mendukung tipe integer standar SQL INTEGER (atau INT) dan SMALLINT. Sebagai perpanjangan standar, MySQL juga mendukung tipe integer TINYINT, MEDIUMINT, dan BIGINT. Tabel berikut menunjukkan penyimpanan dan jangkauan yang diperlukan untuk setiap jenis bilangan bulat.
Fixed-Point Types (Exact Value)
- DECIMAL
- NUMERIC
Jenis DECIMAL dan NUMERIC menyimpan nilai data numerik yang tepat. Jenis ini digunakan bila penting untuk menjaga presisi yang tepat, misalnya dengan data moneter. Di MySQL, NUMERIC diimplementasikan sebagai DECIMAL, jadi berikut ucapan DECOHAL berlaku sama untuk NUMERIC.
Floating-Point Types (Approximate Value)
- FLOAT
- DOUBLE
Tipe FLOAT dan DOUBLE mewakili perkiraan nilai data numerik. MySQL menggunakan empat byte untuk nilai presisi tunggal dan delapan byte untuk nilai presisi ganda.
Untuk FLOAT, standar SQL memungkinkan spesifikasi opsional dari ketepatan (tapi bukan kisaran eksponen) dalam bit yang mengikuti kata kunci FLOAT dalam tanda kurung. MySQL juga mendukung spesifikasi presisi opsional ini, namun nilai presisi hanya digunakan untuk menentukan ukuran penyimpanan. Sebuah presisi dari 0 sampai 23 menghasilkan kolom FLOAT presisi tunggal 4 byte. Sebuah presisi dari 24 sampai 53 menghasilkan kolom DOUBLE double-precision 8-byte.
B. Tipedata Date & Time
Jenis DATE, DATETIME, dan TIMESTAMP terkait. Bagian ini menjelaskan karakteristik mereka, bagaimana keduanya serupa, dan bagaimana perbedaannya. MySQL mengenali nilai DATE, DATETIME, dan TIMESTAMP dalam beberapa format, yang dijelaskan pada Bagian 9.1.3, "Date and Time Literals". Untuk deskripsi rentang DATE dan DATETIME, "didukung" berarti bahwa walaupun nilai sebelumnya mungkin berhasil, tidak ada jaminan.
Jenis DATE digunakan untuk nilai dengan bagian tanggal tapi tidak ada bagian waktu. MySQL mengambil dan menampilkan nilai DATE dalam format YYYY-MM-DD
. Rentang yang didukung adalah '1000-01-01' sampai '9999-12-31'.
Jenis DATETIME digunakan untuk nilai yang berisi bagian tanggal dan waktu. MySQL mengambil dan menampilkan nilai DATETIME dalam format YYYY-MM-DD HH: MM: SS
. Rentang yang didukung adalah '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
Tipe data TIMESTAMP digunakan untuk nilai yang berisi bagian tanggal dan waktu. TIMESTAMP memiliki rentang '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
C. Tipedata String
Tipedata Char & Varchar
Jenis CHAR dan VARCHAR serupa, namun berbeda cara mereka disimpan dan diambil. Mereka juga berbeda dalam panjang maksimum dan apakah spasi tambahan dipertahankan.
Jenis CHAR dan VARCHAR dideklarasikan dengan panjang yang menunjukkan jumlah maksimum karakter yang ingin Anda simpan. Misalnya, CHAR (30) bisa menampung hingga 30 karakter.
Panjang kolom CHAR ditetapkan sedemikian rupa sehingga Anda menyatakan kapan Anda membuat tabel. Panjangnya bisa berupa nilai dari 0 sampai 255. Bila nilai CHAR disimpan, mereka diberi bantalan dengan spasi dengan panjang yang ditentukan. Bila nilai CHAR diambil, spasi tambahan akan dihapus kecuali mode SQL PAD_CHAR_TO_FULL_LENGTH diaktifkan.
Nilai dalam kolom VARCHAR adalah string variabel-panjang. Panjangnya bisa ditentukan sebagai nilai dari 0 sampai 65.535. Panjang maksimum efektif VARCHAR tunduk pada ukuran baris maksimum (65.535 byte, yang dibagi di antara semua kolom) dan kumpulan karakter yang digunakan. Lihat Bagian C.10.4, "Batas pada Kolom Meja dan Ukuran Baris".
Berbeda dengan CHAR, nilai VARCHAR disimpan sebagai awalan 1 byte atau 2 byte plus data. Awalan panjang menunjukkan jumlah byte dalam nilai. Kolom menggunakan satu byte panjang jika nilai tidak lebih dari 255 byte, dua byte panjang jika nilainya mungkin memerlukan lebih dari 255 byte.
Tabel berikut menggambarkan perbedaan antara CHAR dan VARCHAR dengan menunjukkan hasil menyimpan berbagai nilai string ke dalam kolom CHAR (4) dan VARCHAR (4) (dengan asumsi kolom tersebut menggunakan satu karakter byte tunggal seperti latin1).
Nilai yang ditunjukkan seperti yang disimpan di baris terakhir tabel hanya berlaku bila tidak menggunakan mode ketat; Jika MySQL berjalan dalam mode ketat, nilai yang melebihi panjang kolom tidak tersimpan, dan hasil kesalahan.
InnoDB mengkodekan bidang fixed-length lebih besar dari atau sama dengan 768 byte panjangnya sebagai bidang variabel-panjang, yang dapat disimpan di luar halaman. Misalnya, kolom CHAR (255) dapat melebihi 768 byte jika panjang byte maksimum dari himpunan karakter lebih besar dari 3, seperti pada utf8mb4.
Jika nilai tertentu disimpan ke dalam kolom CHAR (4) dan VARCHAR (4), nilai yang diambil dari kolom tidak selalu sama karena spasi tambahan dihapus dari kolom CHAR saat pengambilan. Contoh berikut menggambarkan perbedaan ini: