TIPE DATA DALAM Oracle dan MySQL
v Tipe-tipe data Oracle 10g
Datatype (tipe data) adalah klasifikasi atau jenis dari suatu
informasi atau data tertentu. Setiap nilai yang dimanipulasi oleh Oracle
memiliki sebuah tipe data masing-masing. Tipe data dari sebuah nilai tersebut
diasosiasikan dengan nilai properti yang diset tetap. Properti ini menyebabkan
nilai-nilai dari satu tipe data diperlakukan berbeda dengan nilai-nilai lain
oleh Oracle.
Misalnya, Kita dapat menambahkan besaran nilai pada tipe data
NUMBER, tetapi tidak dapat melakukan hal yang sama pada tipe data RAW. Bila Kita
membuat sebuah tabel atau cluster, Kita harus menentukan tipe data untuk
masing-masing kolom tersebut. Bila Kita membuat sebuah procedure atau function
yang kemudian akan disimpan, Kita harus menentukan tipe data untuk setiap
argumennya. Tipe data ini akan menentukan domain nilai disetiap kolom yang
berisi argumen masing-masing yang dapat dimiliki procedure atau function
tersebut. Sebagai contoh, kolom DATE tidak dapat menerima nilai 29 Feb (kecuali
untuk tahun kabisat) atau nilai 2 atau ‘sepatu’. Setiap nilai akan ditempatkan
dalam kolom dengan mengasumsikan
tipedata dari kolom tersebut. Misalnya, jika Kita memasukkan
’01-JAN-98 ‘ ke dalam kolom DATE, maka Oracle memperlakukan karakter string
’01-JAN-98′ sebagai nilai DATE setelah memverifikasi karakter string tersebut
telah diterjemahkan dalam format tanggal yang valid.
Oracle Database menyediakan sejumlah built-in tipe data serta
beberapa kategori untuk jenis yang ditentukan oleh pengguna, yang dapat
digunakan sebagai tipe data. Penjelasan dari tipe data Oracle tiap-tiap tipe
data akan dijelaskan pada bagian berikut:
Tipe Data Karakter Tipe data karakter terdiri atas tipe-tipe
data CHAR, NCHAR, NVARCHAR2, VARCHAR2, VARCHAR, LONG, RAW dan LONG RAW.
Penjelasan dari masing-masing tipe data dijelaskan sebagai berikut :
CHAR
Tipe data CHAR dispesifikasikan dalam karakter string yang memiliki panjang tetap. Oracle memastikan bahwa semua nilai disimpan dalam sebuah kolom CHAR memiliki panjang yang ditentukan oleh ukuran (size). Jika Kita memasukkan nilai yang lebih pendek dari panjang kolom, Oracle akan mengisikan nilai kosong untuk panjang kolom yang tidak terisi nilai. Jika Kita mencoba untuk memasukkan nilai yang terlalu panjang untuk kolom, Oracle akan menampilkan pesan error.
Tipe data CHAR dispesifikasikan dalam karakter string yang memiliki panjang tetap. Oracle memastikan bahwa semua nilai disimpan dalam sebuah kolom CHAR memiliki panjang yang ditentukan oleh ukuran (size). Jika Kita memasukkan nilai yang lebih pendek dari panjang kolom, Oracle akan mengisikan nilai kosong untuk panjang kolom yang tidak terisi nilai. Jika Kita mencoba untuk memasukkan nilai yang terlalu panjang untuk kolom, Oracle akan menampilkan pesan error.
NCHAR
Tipe data NCHAR adalah tipe data Unicode-only. Bila Kita membuat sebuah tabel dengan kolom NCHAR, Kita akan diminta menentukan panjang kolom dalam karakter. Kita mendefinisikan karakter nasional saat Kita membuat (create) database Kita.
Tipe data NCHAR adalah tipe data Unicode-only. Bila Kita membuat sebuah tabel dengan kolom NCHAR, Kita akan diminta menentukan panjang kolom dalam karakter. Kita mendefinisikan karakter nasional saat Kita membuat (create) database Kita.
NVARCHAR2
Tipe data NVARCHAR2 adalah tipe data Unicode-only. Bila Kita membuat sebuah tabel dengan kolom NVARCHAR2, Kita akan diminta menyertakan jumlah maksimal karakter yang dapat diisikan kedalamnya. Oracle kemudian menyimpan setiap nilai dalam kolom persis seperti yang Kita tentukan itu, asalkan nilai tidak melebihi panjang maksimum kolom.
Tipe data NVARCHAR2 adalah tipe data Unicode-only. Bila Kita membuat sebuah tabel dengan kolom NVARCHAR2, Kita akan diminta menyertakan jumlah maksimal karakter yang dapat diisikan kedalamnya. Oracle kemudian menyimpan setiap nilai dalam kolom persis seperti yang Kita tentukan itu, asalkan nilai tidak melebihi panjang maksimum kolom.
VARCHAR2
Tipe data VARCHAR2 menetapkan string karakter variabel-panjang. Ketika Kita membuat kolom VARCHAR2, Kita akan diminta menyertakan jumlah maksimal byte atau karakter data yang dapat diisikan kedalamnya. Oracle kemudian menyimpan setiap nilai dalam kolom persis seperti yang Kita tentukan itu, asalkan nilai tidak melebihi panjang maksimum kolom tentang kolom. Jika Kita mencoba untuk memasukkan nilai yang melebihi panjang yang ditentukan, maka Oracle akan menampilkan pesan error.
Tipe data VARCHAR2 menetapkan string karakter variabel-panjang. Ketika Kita membuat kolom VARCHAR2, Kita akan diminta menyertakan jumlah maksimal byte atau karakter data yang dapat diisikan kedalamnya. Oracle kemudian menyimpan setiap nilai dalam kolom persis seperti yang Kita tentukan itu, asalkan nilai tidak melebihi panjang maksimum kolom tentang kolom. Jika Kita mencoba untuk memasukkan nilai yang melebihi panjang yang ditentukan, maka Oracle akan menampilkan pesan error.
VARCHAR
Jangan menggunakan tipe data VARCHAR. Gunakan VARCHAR2 sebagai gantinya. Meskipun tipe data VARCHAR saat ini identik dengan VARCHAR2, tipe data VARCHAR dijadwalkan akan didefinisikan ulang sebagai tipe data terpisah yang digunakan untuk string karakter variabel-panjang dibandingkan dengan perbandingan semantik yang berbeda.
Jangan menggunakan tipe data VARCHAR. Gunakan VARCHAR2 sebagai gantinya. Meskipun tipe data VARCHAR saat ini identik dengan VARCHAR2, tipe data VARCHAR dijadwalkan akan didefinisikan ulang sebagai tipe data terpisah yang digunakan untuk string karakter variabel-panjang dibandingkan dengan perbandingan semantik yang berbeda.
LONG
Jangan membuat tabel dengan menggunakan kolom LONG. Gunakan kolom LOB (CLOB, NCLOB, BLOB) sebagai gantinya. kolom LONG didukung hanya untuk kompatibilitas. kolom LONG menyimpan string karakter yang mengandung variabel-panjang sampai dengan 2
gigabyte -1 atau 231-1 byte. Kolom LONG memiliki banyak karakteristik kolom VARCHAR2. Kita dapat menggunakan kolom LONG untuk menyimpan string teks panjang. Panjang nilai LONG mungkin dibatasi oleh memori yang tersedia pada komputer Kita.
Jangan membuat tabel dengan menggunakan kolom LONG. Gunakan kolom LOB (CLOB, NCLOB, BLOB) sebagai gantinya. kolom LONG didukung hanya untuk kompatibilitas. kolom LONG menyimpan string karakter yang mengandung variabel-panjang sampai dengan 2
gigabyte -1 atau 231-1 byte. Kolom LONG memiliki banyak karakteristik kolom VARCHAR2. Kita dapat menggunakan kolom LONG untuk menyimpan string teks panjang. Panjang nilai LONG mungkin dibatasi oleh memori yang tersedia pada komputer Kita.
RAW dan LONG RAW Tipe data RAW dan LONG RAW menyimpan data yang
tidak secara eksplisit dikonversi oleh Oracle Database ketika memindahkan data
antara sistem yang berbeda. Tipe data ini dimaksudkan untuk data biner atau
string byte. Sebagai contoh, Kita dapat menggunakan
LONG RAW untuk menyimpan grafik, sound, dokumen, atau array data biner, yang
penafsirannya tergantung pada penggunaan masing-masing.
LONG RAW untuk menyimpan grafik, sound, dokumen, atau array data biner, yang
penafsirannya tergantung pada penggunaan masing-masing.
v Tipe data MySQL
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 Kita [ dan ] berarti pemakaiannya adalah optional.
·
Jika
atribut ZEROFILL disertakan, MySQL akan otomatis menambahkan atribut UNSIGNED.
·
UNSIGNED
adalah bilangan tanpa tKita di depannya (misalnya tKita 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 gKita.
·
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 gKita. 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 tKita +
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.
Dengan mengenal tipe-tipe data yang didukung oleh MySQL, Kita dapat dengan tepat memilih tipe data yang Kita butuhkan dalam menyusun sebuah database.
Misalnya Kita hendak menyimpan data jumlah suatu stok barang
yang tidak melebihi angka 200 misalnya, maka sebaiknya Kita 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),
No comments:
Post a Comment