Tipe-Tipe Data My SQL
MySQL
adalah sebuah sistem manajemen database relasi yang bersifat “terbuka”
(open source). Terbuka maksudnya adalah MySQL boleh didownload oleh
siapa saja, baik versi kode program aslinya (source code program) maupun
versi binernya (executable program) dan bisa digunakan secara gratis
baik untuk dimodifikasi sesuai dengan kebutuhan seseorang maupun sebagai
suatu program aplikasi komputer.
Sejarah MySQL yang merupakan hasil
buah pikiran dari Michael “Monty” Widenius, David Axmark, dan Allan
Larson dimulai tahun 1995. Mereka bertiga kemudian mendirikan perusahaan
bernama MySQL AB di Swedia. MySQL memiliki kinerja, kecepatan proses,
dan ketangguhan yang tidak kalah dibandingkan dengan database-database
besar lainnya yang komersil seperti ORACLE, Sybase, Unify dan
sebagainya. Dengan bersemangatkan Open Source, MySQL berkembang menjadi
salah satu sistem manajemen database relasi terkemuka yang diakui secara
Internasional. MySQL menggunakan bahasa standar SQL (Structure Query
Language) sebagai bahasa interaktif dalam mengelola data. Perintah SQL
sering juga disebut Query.Tipe-Tipe Data My SQL
Secara umum tipe data pada MySQL dibagi menjadi 4 yaitu:
-
Numeric
Values yaitu angka atau bilangan seperti 10; 123; 100.50; -10; 1.2E+17;
2.7e-11; dan sebagainya. Tipe data ini dibagi menjadi dua yaitu
Bilangan Bulat (Integer) dan Bilangan Pecahan (Floating-point). Bilangan
bulat adalah bilangan tanpa tanda desimal sedangkan bilangan pecahan
adalah bilangan dengan tanda desimal. Kedua jenis bilangan ini dapat
bernilai positif (+) dan juga negatif (-). Jika bilangan tersebut
menggunakan tanda positif (+) atau (-), maka disebut SIGNED. Sebaliknya
bila tanpa tanda apapun disebut UNSIGNED. Karena tanda positif (+) dapat
diabaikan penulisannya maka pada bilangan yang bernilai positif disebut
UNSIGNED.
-
String/Character
Values adalah semua karakter (atau teks) yang penulisannya selalu
diapit oleh tanda kutip baik kutip tunggal (‘) maupun kutip ganda (“).
Hal ini tidak hanya berlaku pada huruf alfabet saja tetapi angka yang
ditulis dengan tanda kutip pun akan menjadi karakter atau string.
-
Date
and Time Values yaitu tanggal dan waktu. Untuk jenis data tanggal dan
waktu format standar (default) penulisan tanggalnya adalah
“tahun-bulan-tanggal”, Misalnya untuk 22 Januari 2001 dituliskan
“2002-01-22”. Untuk penulisan waktu, formatnya adalah “jam-menit-detik”.
Contoh, “13:55:07”. Data tanggal dan waktu bisa digabung penulisannya
menjadi “2002-01-22 13:55:07”.
-
NULL.
NULL sebenarnya bukan data, tapi dia mewakili sesuatu yang “tidak
pasti”, “tidak diketahui” atau “belum ada nilainya”. Sebagai contoh
dalam kehidupan sehari-hari Anda melakukan suatu survei berapa jumlah
pengguna sistem operasi LINUX dan Windows di Indonesia. Selama survei
belum tuntas maka data pastinya belum dapat diketahui. Oleh sebab itu,
data tersebut bisa diwakili dengan NULL, alias belum diketahui.
- 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).
1. Tipe data untuk bilangan
No |
Tipe Data |
Bentuk Dasar Penulisan |
Keterangan |
Ukuran |
1. |
TINYINT |
TINYINT [(M)] [UNSIGNED] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan bulat positif dan negatif. Bilangan bulat terkecil, dengan jangkauan untuk bilangan bertanda -128 sampai dengan 127 dan untuk yang tidak bertanda 0 sampai dengan 255. Bilangan tak bertanda ditandai dengan kata UNSIGNED |
1 byte |
2. |
SMALLINT |
SMALLINT [(M)] [UNSIGNED] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan bulat positif dan negatif. Jangkauan untuk bilangan bertanda -32768 sampai dengan 32767 dan untuk yang tidak bertanda (jangkauan unsigned) 0 sampai dengan 65535 |
2 byte |
3. |
MEDIUMNIT |
MEDIUMINT [(M)] [UNSIGNED] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan bulat positif dan negatif. Jangkauan untuk bilangan bertanda -8388608 sampai dengan 8388607 dan untuk yang tidak bertanda (jangkauan unsigned) 0 sampai dengan 16777215 |
3 byte |
4. |
INT |
INT [(M)] [UNSIGNED] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan bulat positif dan negatif . Jangkauan untuk bilangan bertanda -2147483648 sampai dengan 2147483647 dan untuk yang tidak bertandan (jangkauan usigned) 0 sampai dengan 4294967295 |
4 byte |
5. |
INTEGER [(M)] [UNSIGNED] [ZEROFILL] |
Sama dengan INT. |
||
6. |
BIGINT |
BIGINT [(M)] [UNSIGNED] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan bulat positif dan negatif . Jangkauan untuk bilangan bertanda -9223372036854775808 sampai dengan 9223372036854775807 dan untuk yang tidak bertanda 0 sampai dengan 184467440737079551615 |
8 byte. |
7. |
FLOAT |
FLOAT [(M,D)] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan pecahan positif dan negatif presisi tunggal. Jangkauan: -3.402823466E+38 s/d -1.175494351E-38, 0, dan 1.175494351E-38 s/d 3.402823466E+38 |
4 byte |
8. |
DOUBLE |
DOUBLE [(M,D)] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan pecahan positif dan negatif 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. |
8 byte |
9. |
DOUBLE PRECISION [(M,D)] [ZEROFILL] |
Bilangan pecahan berpresisi ganda. |
8 byte. |
|
10. |
REAL [(M,D)] [ZEROFILL] |
Sinonim dari DOUBLE. |
8 byte. |
|
11. |
DECIMAL |
DECIMAL [(M,D)] [ZEROFILL] |
Digunakan untuk menyimpan data bilangan pecahan positif dan negatif. Misalnya DECIMAL(5,2) dapat digunakan untuk menyimpan bilangan -99,99 sampai dengan 99,99 |
M byte |
12. |
NUMERIC [(M,D)] [ZEROFILL] |
Sama dengan Decimal. |
M byte. |
2. Tipe data untuk tanggal dan jam
No |
Tipe Data |
Bentuk Dasar Penulisan |
Keterangan |
Ukuran |
1. |
DATETIME |
Kombinasi tanggal dan waktu dengan jangkauan dari ‘1000-01-01 00:00:00’ sampai dengan ‘9999-12-31 23:59:59’ |
8 byte. |
|
2. |
DATE |
Kombinasi tanggal dan waktu dengan jangkauan dari ‘1000-01-01’ sampai dengan ‘9999-12-31 ’ |
8 byte. |
|
3. |
TIMESTAMP |
TIMESTAMP [(M)] |
Kombinasi tanggal dan waktu dengan jangkauan dari ‘1970-01-01’ sampai dengan ‘2037 ’ |
4 byte. |
4. |
TIME |
Digunakan untukmenyimpan waktu dengan jangkauan dari -838:59:59 sampai dengan 838:59:59 |
3 byte. |
|
5. |
YEAR |
|
Digunakan untuk menyimpan data tahun dari tanggal antara 1901 sampai dengan 2155 |
1 byte |
3. Tipe data untuk karakter dan lain-lain
No |
Tipe Data |
Bentuk Dasar Penulisan |
Keterangan |
Ukuran |
1. |
CHAR |
CHAR(M) [BINARY] |
Data
string dengan panjang yang tetap. CHAR(1) cukup ditulis dengan CHAR.
1<=M<=255, 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. |
M byte. |
2. |
VARCHAR |
VARCHAR (M)
[BINARY]
|
Ukuran L+1 byte dengan L<=M dan 1<=M<=255. Data string dengan panjang bervariasi tergantung datanya. 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. |
L+1 byte |
3. |
TINYBLOB, TINYTEXT |
L+1 byte, dengan L<28 . Tipe TEXT atau BLOB dengan panjang maksimum 255 karakter. |
L+1 byte |
|
4. |
BLOB, TEXT |
L+2 byte, dengan L<216 . Tipe TEXT atau BLOB dengan panjang maksimum 65535 karakter. |
L+2 byte |
|
5. |
MEDIUMBLOB, MEDIUMTEXT |
L+3 byte, dengan L<224. Tipe TEXT atau BLOB dengan panjang maksimum 1677215 karakter. |
L+3 byte |
|
6. |
LONGBLOB, LONGTEXT |
L+4 byte, dengan L<232. Tipe TEXT atau BLOB dengan panjang maksimum 4294967295 karakter. |
L+4 byte |
|
7. |
ENUM |
ENUM(’nilai1’,’nilai2’,..) |
Ukuran 1 atau 2 byte tergantung nilai enumerasinya maks 65535 nilai |
1 atau 2 byte |
8. |
SET |
SET(’nilai1’,’nilai2’,..) |
Ukuran 1,2,3,4 atau 8 byte tergantung jumlah anggota himpunan maks 64 anggota. |
1,2,3,4 atau 8 byte |
Tipe-tipe
yang didukung MySQL di atas dapat menjadi pilihan dalam penyusunan
database. Sebagai contoh, jika kita hendak menyimpan data jumlah suatu
stok barang yang tidak melebihi angka 200 misalnya, maka sebaiknya
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 kita hendak membuat database nomor telpon dari
teman-teman kita. 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 kita 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. |
Daftar pustaka :
Arbie.2004. Manajemen Database dengan MYSQL. Yogyakarta:Penerbit Andi Yogyakarta.
Tubagus. Tipe-Tipe Data yang Didukung MSQL. http://tubagus.dosen.narotama.ac.id/2012/04/13/tipe-tipe-data-yang-didukung-mysql/,
Novhard. Tipe Data MySQL. http://novhard.wordpress.com/2007/07/24/tipe-data-mysql/,
0 komentar:
Posting Komentar