Tipe Data MySQL

Mengenal Tipe Data MySQL
Mengenal Tipe Data MySQL

Di dalam MySQL terdapat empat macam type data, yaitu; Numerik, String, Waktu / Tanggal dan Kelompok Himpunan (set dan enum). Berikut adalah penjelasan dari masing-masing type data tersebut.


TIPE DATA NUMERIC

Pada tipe ini, data yang bisa disimpan hanya berupa angka. Yang mana bisa bernilai positif maupun negatif. Berikut ini adalah beberapa macamnya:

Type
Storage
Minimum Value
Maximum Value
(Bytes)
(Signed/Unsigned)
(Signed/Unsigned)
TINYINT
1
-128
127
0
255
SMALLINT
2
-32768
32767
0
65535
MEDIUMINT
3
-8388608
8388607
0
16777215
INT
4
-2147483648
2147483647
0
4294967295
BIGINT
8
-9223372036854775808
9223372036854775807
0
18446744073709551615

Type
Storage
Description
(Bytes)
FLOAT(M,D)
4
Digunakan untuk menyimpan data berupa bilangan pecahan positif atau negatif presisi tingkat tunggal. (M, ) mewakili panjang bilangan yang ingin ditampilkan, sedangkan ( ,D) mewakili jumlah desimal / angka di belakang koma.

Sejumlah floating-point tidak bisa di-unsigned.

Contoh: Jika Anda menginputkan nilai 999.00009 ke dalam FLOAT(7,4) maka value yang ditampilkan menjadi 999.0001.

DOUBLE(M,D)
8
Digunakan untuk menyimpan data berupa bilangan pecahan positif atau negatif presisi tingkat ganda. (M, ) mewakili pangjang bilangan yang ingin ditampilkan, sedangkan ( ,D) mewakili jumlah decimal yang ingin ditampilkan atau penyederhanaan.

Sejumlah double floating-point tidak bisa di-unsigned. REAL adalah sinonim untuk DOUBLE.

Contoh: s.d.a.

BIT(M)
Approximately (M+7)/8 bytes
Digunakan untuk menyimpan nilai bit-field. Suatu BIT(M) memungkinkan penyimpanan nilai M-bit yang berkisar 1-64.

Untuk menentukan nilai bit dapat menggunakan notasi b'value', sementara itu 'value' adalah nilai biner (ditulis menggunakan angka 1 atau 0).

Contoh:
mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b'11111111';

DECIMAL(M,D)
Simak Penjelasan Dibawah ini !

DECIMAL dan/atau NUMERIC adalah sebuah unpacked floating-point number yang tidak bisa di unsigned.

Tipe ini digunakan untuk menjaga tingkat presisi dan hal-hal penting, misalnya data moneter (terkait dengan keuangan atau valuta).

Di MySQL, NUMERIC diimplementasikan sebagai DECIMAL, sehingga pernyataan tentang DECIMAL berlaku juga untuk NUMERIC.

Kolom nilai DECIMAL dan/atau NUMERIC direpresentasikan menggunakan format biner yang membungkus sembilan angka desimal (radix 10 atau basis 10) menjadi 4 byte. Penyimpanan integer dan bagian fraksi nilai ditentukan secara terpisah. Setiap kelipatan sembilan digit memerlukan empat byte, dan "sisa" Angka memerlukan fraksi empat byte. Penyimpanan yang diperlukan untuk "digit lebihan" atau "sisa angka" ditunjukan oleh tabel berikut;

Leftover Digits
Number of Bytes
0
0
1
1
2
1
3
2
4
2
5
3
6
3
7
4
8
4

Contoh:
salary DECIMAL(5,2)

Standard SQL mengharuskan DECIMAL(5,2) untuk kolom salary, artinya dapat menyimpan nilai apapun dengan ketentuan lima angka dan dua desimal, sehingga nilai-nilai tersebut berada di kisaran -999,99 s/d. 999,99.


TYPE DATA STRING

Pada tipe ini digunakan untuk menyimpan data bernilai string, seperti alphanumeric (campuran angka dan karakter), karakter, dan numeric tanpa operasi, kecuali jika dikonversi.

Pada tabel di bawah ini, M merepresentasikan deklarasi panjang kolom untuk karakter, entah itu tipe binary maupun nonbinary. Sedangkan L merepresentasikan panjang aktual pada byte-nya nilai string.

Data Type
Storage Required
CHAR(M)
M × w bytes, 0 <= M <= 255, di mana w adalah jumlah byte yang diperlukan untuk panjang maksimum karakter di set karakter. Lihat Bagian 15.8.3, "Struktur Fisik Row Tabel InnoDB" untuk informasi tentang kebutuhan penyimpanan tipe data CHAR pada tabel jenis InnoDB.

Digunakan untuk menyimpan data string ukuran tetap.
Jangkauan: 0 s/d 255 karakter

BINARY(M)
M bytes, 0 <= M <= 255

Digunakan untuk menyimpan data string ukuran dinamis.
Jangkauan: 0 s/d 255 karakter (versi 4.1), 0 s/d 65.535 (versi 5.0.3)

VARCHAR(M), VARBINARY(M)
L + 1 bytes jika kolom nilai memerlukan 0-255 byte, L + 2 bytes jika nilai-nilai dimungkinkan perlu lebih dari 255 byte.

TINYBLOB, TINYTEXT
L + 1 bytes, Dimana L < 28
Digunakan untuk menyimpan data text.
Jangkauan: 0 s/d 255 karakter (versi 4.1), 0 s/d 65.535 (versi 5.0.3)

BLOB, TEXT

L + 2 bytes, Dimana L < 216
Digunakan untuk menyimpan data text.
Jangkauan : 0 s/d 65.535 (216 - 1) karakter

MEDIUMBLOB, MEDIUMTEXT

L + 3 bytes, Dimana L < 224
Digunakan untuk menyimpan data text.
LONGBLOB, LONGTEXT

L + 4 bytes, Dimana L < 232
Digunakan untuk menyimpan data text.


BLOB (Biner)
Tipe data blob digunakan untuk menyimpan data biner. Tipe ini biasanya digunakan untuk menyimpan kode-kode biner dari suatu file atau object. BLOB merupakan singkatan dari Binary Large Object.

Kesimpulan
Data Type
Max Size
Char
255 Byte
Varchar
255 Byte
Tinytext
255 Byte
Tinyblob
255 Byte
Text
65535 Byte
Blob
65535 Byte
Mediumtext
1.6 MB
Mediumblob
1.6 MB
Longtext
4.2 GB
Longblob
4.2 GB



TYPE DATA WAKTU / TANGGAL

Type data ini menyimpan informasi waktu, baik berupa jam maupun tanggal. Meskipun data yang disimpan adalah numerik tapi pembacaan yang dilakukan adalah string, jadi perlu peng-konversi-an bila ingin melakukan perhitungan. Berikut adalah type data waktu di MySQL.

Data Type
“Zero” Value
Format
DATE
'0000-00-00'
YYYY-MM-DD HH:MM:SS
TIME
'00:00:00'
YYYY-MM-DD
DATETIME
'0000-00-00 00:00:00'
HH:MM:SS
TIMESTAMP
'0000-00-00 00:00:00'
YYYY
YEAR
0000
YYYYMMDDHHMMSS

Untuk kolom TIME, DATETIME, dan TIMESTAMP, yang dibuat dengan mySQL versi sebelum 5.6.4 berbeda dengan mySQL versi 5.6.4. Hal ini dikarenakan keunggulan versi terbaru yang memungkinkan kita menggunakan pecahan detik. Berikut perbandingannya:

Data Type
Storage Required Before MySQL 5.6.4
Storage Required as of MySQL 5.6.4
DATE
1 byte
1 byte
TIME
3 bytes
3 bytes
DATETIME
3 bytes
3 bytes + fractional seconds storage
TIMESTAMP
8 bytes
5 bytes + fractional seconds storage
YEAR
4 bytes
4 bytes + fractional seconds storage

Pada MySQL 5.6.4, penyimpanan untuk YEAR dan DATE tidak berubah. Namun, TIME, DATETIME, dan TIMESTAMP sudah berbeda. DATETIME dikemas lebih efisien, membutuhkan 5 - 8 byte untuk nonfractional part, namun ketiganya memiliki fractional part (bagian pecahan) dengan kebutuhan 0 - 3 byte, tergantung pada ketepatan nilai pecahan detik yang disimpan.

Fractional Seconds Precision
Storage Required
0
0 bytes
1, 2
1 byte
3, 4
2 bytes
5, 6
3 bytes


TYPE DATA Himpunan (set dan enum)

Selain tipe data di atas, MySQL juga menyediakan tipe data yang lain. Tipe data di MySQL mungkin akan terus bertambah seiring dengan perkembangan versi MySQL.

ENUM adalah tipe data yang menyimpan daftar pilihan tetapi hanya satu saja yang boleh dipilih / disimpan. Sedangkan SET adalah tipe data yang mirip dengan ENUM, tapi boleh memilih lebih dari satu.

Data Type
Description
ENUM('value1','value2',...)

1 atau 2 byte, tergantung pada jumlah nilai enumerasi (65.535 nilai maksimum).

Enumerasi adalah pencacahan satu per satu, atau sebuah tipe data yang nilainya hanya terbatas dari pilihan nilai-nilai yang telah didefinisikan terlebih dahulu.

Enumerasi merupakan istilah keren untuk daftar, jadi ketika Anda ingin mendefinisikan sebuah ENUM, itu artinya Anda ingin membuat daftar item yang nilainya harus dipilih (atau bisa juga NULL sebagai defaultnya). Misalnya, jika Anda menghendaki bidang inputan berupa "A" atau "B" atau "C", maka Anda perlu mendefinisikan ENUM sebagai ENUM('A','B','C') default NULL (jika perlu).

SET('value1','value2',...)

1, 2, 3, 4, atau 8 byte, tergantung pada jumlah anggota set(himpunan) (64 anggota maksimum).



Referensi:
  • http://www.tutorialspoint.com/mysql/mysql-data-types.htm
  • http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
  • http://dev.mysql.com/doc/refman/5.7/en/bit-type.html
  • http://dev.mysql.com/doc/refman/5.7/en/bit-field-literals.html
  • http://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html
  • http://kbbi.web.id/enumerasi
  • http://jagocoding.com/tutorial/248/Enumeration_di_Java
  • Ebook: MySQL_Dari_Pemula_Hingga_Mahir_-Achmad_Solichin,_Achmatim.Net
  • http://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html

Posting Komentar

Lebih baru Lebih lama

نموذج الاتصال