Tipe-Tipe Data My SQL
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:
1.
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.
2.
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.
3.
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”.
4.
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.
Pada tipe-tipe
data MySQL 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).
Berikut tipe-tipe data yang
didukung oleh MySQL, antara lain:
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
|
DOUBLE
PRECISION [(M,D)] [ZEROFILL]
|
Bilangan
pecahan berpresisi ganda.
|
8
byte.
|
10.
|
REAL
|
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
|
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 untuk
menyimpan waktu dengan jangkauan mulai 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.
|
Demikian
penjelasan singkat mengenai MYSQL serta Tipe-Tipe Data yang Didukung oleh MySQL.
Semoga bermanfaat dan dapat menambah wawasan bagi kita semua.
Terima kasih.
Komentar
Posting Komentar