MySQL |
Membahas tipe - tipe data yang
didukung oleh MySQL. Pemilihan tipe data merupakan suatu hal yang cukup penting
dalam mengelola server. Salah satu sebabnya adalah berkaitan dengan ruang di
harddisk dan memori yang akan “digunakan” oleh data-data tersebut.
Berikut ini akan diberikan tipe-tipe data yang
didukung oleh MySQL yang terambil dari dokumentasi MySQL. Tipe - tipe data ini
diberikan dalam bentuk yang siap dituliskan pada sintaks-sintaks MySQL,
misalnya Create Table. Pada tipe-tipe data tersebut terdapat beberapa atribut
yang memiliki arti sebagai berikut:
- M, menunjukkan lebar karakter maksimum. Nilai M maksimum adalah 255.
- D, menunjukkan jumlah angka di belakang koma. Nilai maksimum D adalah 30 tetapi dibatasi oleh nilai M, yaitu tidak boleh lebih besar daripada M-2.
- Atribut yang diberi tanda [ dan ] berarti pemakaiannya adalah optional.
- Jika atribut ZEROFILL disertakan, MySQL akan otomatis menambahkan atribut UNSIGNED.
- UNSIGNED adalah bilangan tanpa tanda di depannya (misalnya tanda negatif).
Inilah tipe-tipe data tersebut:
- TINYINT[(M)] [UNSIGNED] [ZEROFILL]
Integer yang
sangat kecil jangkauan nilainya, yaitu -128 hingga 127. Jangkauan unsigned
adalah 0 hingga 255.
- SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
Integer yang
kecil jangkauan nilainya, yaitu -32768 hingga 32767. Jangkauan unsigned adalah
0 hinga 65535.
- MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Integer
tingkat menengah. Jangkauan nilainya adalah -8388608 hingga 8388607. Jangkauan
unsigned adalah 0 hingga 16777215.
- INT[(M)] [UNSIGNED] [ZEROFILL]
Integer yang
berukuran normal. Jangkauan nilainya adalah -2147483648 hingga 2147483647.
Jangkauan unsigned adalah 0 hingga 4294967295.
- INTEGER[(M)] [UNSIGNED] [ZEROFILL]
Sama dengan
INT.
- BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Integer
berukuran besar. Jangkauan nilainya adalah -9223372036854775808 hingga
9223372036854775807. Jangkauan unsigned adalah 0 hingga 18446744073709551615.
- FLOAT(precision) [ZEROFILL]
Bilangan
floating-point. Tidak dapat bersifat unsigned. Nilai atribut precision adalah
<=24 untuk bilangan floating-point presisi tunggal dan di antara 25 dan 53
untuk bilangan floating-point presisi ganda.
- FLOAT[(M,D)] [ZEROFILL]
Bilangan
floating-point presisi tunggal. Tidak dapat bersifat unsigned. Nilai yang
diijinkan adalah -3.402823466E+38 hingga -1.175494351E-38 untuk nilai negatif,
0, and 1.175494351E-38 hingga 3.402823466E+38 untuk nilai positif.
- DOUBLE[(M,D)] [ZEROFILL]
Bilangan
floating-point presisi ganda. Tidak dapat bersifat unsigned. Nilai yang
diijinkan adalah -1.7976931348623157E+308 hingga -2.2250738585072014E-308 untuk
nilai negatif, 0, dan 2.2250738585072014E-308 hingga 1.7976931348623157E+308
untuk nilai positif.
- DOUBLE PRECISION[(M,D)] [ZEROFILL] dan REAL[(M,D)] [ZEROFILL]
Keduanya
sama dengan DOUBLE.
- DECIMAL[(M[,D])] [ZEROFILL]
Bilangan
floating-point yang “unpacked”. Tidak dapat bersifat unsigned. Memiliki sifat
mirit dengan CHAR. Kata “unpacked'' berarti bilangan disimpan sebagai string,
menggunakan satu karakter untuk setiap digitnya. Jangkauan nilai dari DECIMAL
sama dengan DOUBLE, tetapi juga tergantung dai nilai atribut M dan D yang
disertakan. Jika D tidak diisi akan dianggap 0. Jika M tidak diisi maka akan
dianggap 10. Sejak MySQL 3.22 nilai M harus termasuk ruang yang ditempati oleh
angka di belakang koma dan tanda + atau -.
- NUMERIC(M,D) [ZEROFILL]
Sama dengan
DECIMAL.
- DATE
Sebuah
tanggal. MySQL menampilkan tanggal dalam format 'YYYY-MM-DD'. Jangkauan
nilainya adalah '1000-01-01' hingga '9999-12-31'.
- DATETIME
Sebuah
kombinasi dari waktu (jam) dan tanggal. MySQL menampilkan waktu dan tanggal
dalam format 'YYYY-MM-DD HH:MM:SS'. Jangkauan nilainya adalah '1000-01-01
00:00:00' hingga '9999-12-31 23:59:59'.
- TIMESTAMP[(M)]
Sebuah
timestamp. Jangkauannya adalah dari '1970-01-01 00:00:00' hingga suatu waktu di
tahun 2037. MySQL menampilkan tipe data TIMESTAMP dalam format YYYYMMDDHHMMSS,
YYMMDDHHMMSS, YYYYMMDD, atau YYMMDD, tergantung dari nilai M, apakah 14 (atau
tidak ditulis), 12, 8, atau 6.
- TIME
Tipe data
waktu. Jangkauannya adalah '-838:59:59' hingga '838:59:59'. MySQL menampilkan
TIME dalam format 'HH:MM:SS'.
- YEAR[(2|4)]
Angka tahun,
dalam format 2- atau 4-digit (default adalah 4-digit). Nilai yang mungkin
adalah 1901 hingga 2155, 0000 pada format 4-digit, dan 1970-2069 pada format
2-digit (70-69).
- CHAR(M) [BINARY]
String yang
memiliki lebar tetap. Nilai M adalah dari 1 hingga 255 karakter. Jika ada sisa,
maka sisa tersebut diisi dengan spasi (misalnya nilai M adalah 10, tapi data
yang disimpan hanya memiliki 7 karakter, maka 3 karakter sisanya diisi dengan
spasi). Spasi ini akan dihilangkan apabila data dipanggil. Nilai dari CHAR akan
disortir dan diperbandingkan secara case-insensitive menurut default character
set yang tersedia, kecuali bila atribut BINARY disertakan.
- VARCHAR(M) [BINARY]
String
dengan lebar bervariasi. Nilai M adalah dari 1 hingga 255 karakter. Jika nilai
M adalah 10 sedangkan data yang disimpan hanya terdiri dari 5 karakter, maka
lebar data tersebut hanya 5 karakter saja, tidak ada tambahan spasi.
- TINYBLOB dan TINYTEXT
Sebuah BLOB
(semacam catatan) atau TEXT dengan lebar maksimum 255 (2^8 - 1) karakter.
- BLOB dan TEXT
Sebuah BLOB
atau TEXT dengan lebar maksimum 65535 (2^16 - 1) karakter.
- MEDIUMBLOB dan MEDIUMTEXT
Sebuah BLOB
atau TEXT dengan lebar maksimum 16777215 (2^24 - 1) karakter.
- LONGBLOB dan LONGTEXT
Sebuah BLOB
atau TEXT dengan lebar maksimum 4294967295 (2^32 - 1) karakter.
- ENUM('value1','value2',...)
Sebuah
enumerasi, yaitu objek string yang hanya dapat memiliki sebuah nilai, dipilih
dari daftar nilai 'value1', 'value2', ..., NULL atau nilai special ""
error. Sebuah ENUM maksimum dapat memiliki 65535 jenis nilai.
- SET('value1','value2',...)
Sebuah set,
yaitu objek string yang dapat memiliki 0 nilai atau lebih, yang harus dipilih
dari daftar nilai 'value1', 'value2', .... Sebuah SET maksimum dapat memiliki
64 anggota.
Nah, dengan mengenal tipe-tipe data yang didukung oleh MySQL, Anda dapat dengan tepat memilih tipe data yang Anda butuhkan dalam menyusun sebuah database.
Misalnya Anda hendak menyimpan data jumlah suatu stok
barang yang tidak melebihi angka 200 misalnya, maka sebaiknya Anda memilih tipe
data TINYINT yang diberi atribut UNSIGNED. Alasannya adalah jumlah stok tidak
melebihi 200 dan tidak mungkin lebih kecil dari 0, dan tipe data TINYINT
memiliki jangkauan 0 hingga 255, jadi memenuhi syarat untuk digunakan.
Contoh yang lain, misalnya Anda hendak membuat
database nomor telpon dari teman-teman Anda. Memang nomor telpon seluruhnya
terdiri dari angka, namun nampaknya tidak tepat bila disimpan dalam tipe data
INT (atau bahkan BIGINT bila hendak menyimpan nomor handphone). Lebih baik
dimasukkan ke dalam CHAR atau VARCHAR dengan M adalah 12. Mengapa 12? Karena
nomor handphone terpanjang terdiri dari 12 digit. Sedangkan nomor telpon rumah
terpanjang adalah 8 digit ditambah kode area terpanjang 4 digit, jadi angka 12
sangat pas.
Lalu bagaimana penerapannya dalam operasi MySQL? Misalnya
Anda hendak membuat tabel stok barang dengan masing-masing field adalah kode
barang, nama barang, harga barang, supplier, dan tanggal beli, maka kemungkinan
perintah yang harus ditulis adalah sebagai berikut:
MYSQL> create
table stok
-> kode char(5),
-> nama varchar(20),
-> harga mediumint unsigned,
-> supplier char(5),
-> tanggal date);
-> kode char(5),
-> nama varchar(20),
-> harga mediumint unsigned,
-> supplier char(5),
-> tanggal date);
Perintah
tersebut di atas akan membuat tabel bernama stok dengan field-field sebagai
berikut:
Nama field
|
Tipe data
|
Keterangan
|
Kode
|
Char(5)
|
Kode
barang biasanya memiliki jumlah karakter tetap, dalam contoh ini adalah 5.
|
Nama
|
Varchar(20)
|
Nama
barang kemungkinan besar memiliki jumlah karakter yang berbeda-beda, sehingga
cocok menggunakan varchar.
|
Harga
|
Mediumint
Unsigned
|
Harga
tergantung dari jenis barangnya, pada contoh ini dianggap harga barang
tertinggi di bawah 100 jutaan.
|
Supplier
|
Char(5)
|
Supplier
biasanya juga dituliskan dalam kode tertentu yang jumlah karakternya tetap.
|
Tanggal
|
Date
|
Tanggal
pembelian. Umumnya waktu pembelian tidak perlu disertakan, hanya tanggalnya
saja.
|
No comments:
Post a Comment
Komentar Diperlukan Untuk Bila Kurang Paham Atau Ingin Bertanya Seputar Artikel Yang Dibaca...