Jika kita membuat tabel, seperti yang telah kita pelajari pada Tutorial Belajar MySQL: Membuat dan Menghapus Tabel, untuk mendefiniskan kolom kita harus mendefenisikan tipe data untuk kolom tersebut.
Dalam tutorial ini, kita akan mempelajari tentang tipe-tipe data numerik (angka), yang meliputi Integer, Fixed Point, dan Floating Point dalam MySQL.
Tipe Data Integer MySQL: Tinyint , Smallint, Mediumint, Integer (Int), dan Bigint
Integer adalah tipe data untuk angka bulat (misalnya: 1,6, 59, -533, 1449). MySQL menyediakan beberapa tipe data untuk integer, perbedaannya lebih kepada jangkauan yang juga berpengaruh terhadap ukuran tipe data tersebut.
Jangkauan serta ukuran penyimpanan tipe data integer dalam MySQL dapat dilihat dari tabel dibawah ini:
Tipe Data | Jangkauan SIGNED | Jangkauan UNSIGNED | Ukuran |
---|---|---|---|
TINYINT | -128 to 127 | 0 to 255 | 1 byte |
SMALLINT | -32,768 to 32,767 | 0 to 65,535 | 2 bytes |
MEDIUMINT | -8,388,608 to 8,388,607 | 0 to 16,777,215 | 3 bytes |
INT | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 | 4 bytes |
BIGINT | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 | 8 bytes |
Pemilihan tipe data ini tergantung akan kebutuhan data kita. Misalkan untuk nomor urut absensi pada suatu kelas yang memiliki maksimal 30 orang, tipe data TINYINT sudah mencukupi. Namun jika kita bermaksud membuat absensi seluruh rakyat indonesia, tipe data TINYINT sampai dengan MEDIUMINT tidak akan mencukupi. Kita harus memilih INT atau BIGINT.
Cara Penulisan Tipe Data Integer MySQL
Format query untuk tipe data integer adalah:
INT[(M)] [UNSIGNED] [ZEROFILL]
Setiap tipe data integer dapat di definisikan sebagai UNSIGNED, dimana kita mengorbankan nilai negatif, untuk mendapatkan jangkauan nilai positif yang lebih tinggi.
Dalam deklarasi tipe data integer, nilai M adalah jumlah digit yang disediakan untuk menampilkan data. Misalnya kita mendefiniskan suatu kolom dengan INT(5), jika kita input angka 102, maka MySQL akan menambahkan spasi sebanyak 2 buah di depan angka, agar tampilan data menjadi 5 digit (istilah pemogramannya : padding left).
Nilai M tidak mempengaruhi nilai maksimal dari integer. Jika angka yang diinputkan melebihi digit M, MySQL akan tetap menampilkan hasilnya (selama masih dalam jangkauan tipe data tersebut). Jika kita deklarasikan INT(4), nilai maksimal tetap 2,147,483,647 bukan 9999.
Selain opsional query UNSIGNED, pendeklarasian integer juga terdapat opsional atribut ZEROFILL. ZEROFILL ini berhubungan dengan nilai M, yang akan mengisi angka 0 pada bagian kiri nilai yang diinput alih-alih spasi.
Contoh query pembuatan tabel dengan deklarasi integer :
mysql> CREATE TABLE contoh_int (mini TINYINT, kecil SMALLINT UNSIGNED, sedang MEDIUMINT(4) ZEROFILL, biasa INT(4) UNSIGNED, besar BIGINT(6) UNSIGNED ZEROFILL); Query OK, 0 rows affected (0.06 sec) mysql> DESC contoh_int; +--------+--------------------------------+------+-----+---------+-------+ | Field | Type                          | Null | Key | Default | Extra | +--------+--------------------------------+------+-----+---------+-------+ | mini  | tinyint(4)                    | YES |    | NULL   |      | | kecil | smallint(5) unsigned          | YES |    | NULL   |      | | sedang | mediumint(4) unsigned zerofill | YES |    | NULL   |      | | biasa | int(4) unsigned               | YES |    | NULL   |      | | besar | bigint(6) unsigned zerofill   | YES |    | NULL   |      | +--------+--------------------------------+------+-----+---------+-------+ 5 rows in set (0.21 sec)
Dari query DESC kita dapat melihat kolom mini dan kecil, secara otomatis akan bersisi nilai M, walaupun dalam deklarasi pembuatan tabel kita tidak menyatakannya secara langsung. Nilai ini didapat dari jangkauan terbesar tipe data tersebut
Jika kita inputkan angka 122 kedalam seluruh kolom, hasilnya adalah sebagai berikut:
mysql> INSERT INTO contoh_int values ((122), (122), (122), (122), (122)); Query OK, 1 row affected (0.07 sec) mysql> SELECT * FROM contoh_int; +------+-------+--------+-------+--------+ | mini | kecil | sedang | biasa | besar | +------+-------+--------+-------+--------+ | 122 |  122 |  0122 |  122 | 000122 | +------+-------+--------+-------+--------+ 1 row in set (0.00 sec)
Untuk perintah INSERT dan SELECT, kita akan mempelajarinya lebih jauh pada tutorial berikutnya, query INSERT digunakan untuk input data ke dalam tabel, dan SELECT digunakan untuk menampilkan nilai dari tabel. Dari contoh diatas kita setidaknya mendapat gambaran bagaimana cara deklarasi tipe data integer. Perhatikan untuk kolom sedang dan besar, terdapat angka nol di depan angka. Hal ini karena kedua kolom tersebut kita deklarasikan sebagai ZEROFILL.
Tipe Fixed Point MySQL: DECIMAL
Tipe data fixed point adalah tipe data angka pecahan (desimal), dimana jumlah angka pecahan (angka di belakang koma) sudah di tentukan dari awal. Format penulisan query fixed point adalah:
DECIMAL [(M[,D])] [UNSIGNED] [ZEROFILL]
DECIMAL merupakan kata kunci untuk mendefiniskan suatu kolom sebagai fixed point.
Besar dari tipe data fixed point ini tergantung dari opsional query [M,D] dimana M adalah total jumlah digit keseluruhan, dan D adalah jumlah digit dibekang koma (pecahan). Contohnya DEC [6,2] akan mendefiniskan suatu kolom agar memuat 6 digit angka, dengan 4 angka di depan koma, dan 2 digit angka di belakang koma.
Deklarasi | Jangkauan |
---|---|
DECIMAL (4,1) | -999,9 to 999,9 |
DECIMAL (6,2) | -9999,99 to 9999,99 |
DECIMAL (3,2) | -9,99 to 9,99 |
DECIMAL (8,2) | -999999,99 to 999999,99 |
Maksimal nilai untuk M adalah 65, dan maksimal nilai D adalah 30. Dengan syarat, nilai D tidak boleh lebih besar dari nilai M. Jika kita tidak menyertakan M dan D dalam mendefinisikan suatu kolom DECIMAL, maka secara sistem M akan di set 10. Dan D default 0. Tipe data DECIMAL ini cocok digunakan untuk kolom yang difungsikan untuk menampung nilai uang.
Opsional query UNSIGNED jika disertakan hanya semata-mata membuang nilai negatif dari DECIMAL, tanpa memperbesar jangkauannya. Opsional query ZEROFILL sama seperti integer, akan mengisi angka 0 pada bagian kiri angka.
Contoh pendefinisian tabel dengan kolom DECIMAL:
mysql> CREATE TABLE contoh_dec (satuan DECIMAL(3,2), puluhan DECIMAL(4,2), ribuan DECIMAL(5,2), normal DECIMAL, cantik DECIMAL(8,2) ZEROFILL); Query OK, 0 rows affected (0.13 sec) mysql> DESCRIBE contoh_dec; +---------+--------------------------------+------+-----+---------+-------+ | Field  | Type                          | Null | Key | Default | Extra | +---------+--------------------------------+------+-----+---------+-------+ | satuan | decimal(3,2)                  | YES |    | NULL   |      | | puluhan | decimal(4,2)                  | YES |    | NULL   |      | | ribuan | decimal(5,2)                  | YES |    | NULL   |      | | normal | decimal(10,0)                 | YES |    | NULL   |      | | cantik | decimal(8,2) unsigned zerofill | YES |    | NULL   |      | +---------+--------------------------------+------+-----+---------+-------+ 5 rows in set (0.08 sec)
Perhatikan kolom normal, bahwa nilai DECIMAL di deklarasikan sebagai DECIMAL(10,0), ini adalah default MySQL jika kita tidak menuliskan jumlah digit.
mysql> INSERT INTO contoh_dec values ((1.3), (55.32), (523.77), (7832.3), (150000.45)); Query OK, 1 row affected, 1 warning (0.07 sec) mysql> SELECT * FROM contoh_dec; +--------+---------+--------+--------+-----------+ | satuan | puluhan | ribuan | normal | cantik   | +--------+---------+--------+--------+-----------+ |  1.30 |  55.32 | 523.77 |  7832 | 150000.45 | +--------+---------+--------+--------+-----------+ 1 row in set (0.00 sec)
Khusus untuk kolom normal, kita perhatikan karena deklarasinya adalah DECIMAL (10,0), maka seluruh digit dibelakang koma dari inputan kita akan dihilangkan.
Tipe Floating Point : FLOAT dan DOUBLE
Jika pada tipe fixed point kita mendefiniskan suatu kolom dengan nilai pecahan yang tetap, untuk tipe floating point, nilai pecahan yang dapat diinput bisa berbeda-beda. Untuk tipe floating point, MySQL menyediakan 2 jenis tipe data, yaitu FLOAT dan DOUBLE. Perbedaan keduanya terletak pada presisi (ketelitian) pembulatan. FLOAT menggunakan single-precision, sedangkan DOUBLE menggunakan double-precision.
Tipe Data | Jangkauan | Ukuran |
---|---|---|
FLOAT | -3.402823466E+38 to 3.402823466E+38 | 4 bytes |
DOUBLE | -1.7976931348623157E+308 to 1.7976931348623157E+308 | 8 bytes |
Untuk tipe data FLOAT dan DOUBLE, format querynya adalah:
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
Sama seperti pada tipe data DECIMAL, nilai opsional query [M, D] dimana M adalah total jumlah digit keseluruhan, dan D adalah jumlah digit dibekang koma (pecahan). Maksimal nilai M dan D akan berbeda pada tiap komputer, tergantung kemampuan prosesor mengolah tipe data floating point. FLOAT biasanya akan akurat untuk penyimpanan sekitar 7 angka desimal, sedangkan DOUBLE mencapai 15 angka desimal.
Opsional query UNSIGNED jika di nyatakan, akan menghilangkan kemampuan tipe data untuk meyimpan angka negatif (tidak menambah jangkauan sebagaimana tipe data integer)
Opsional query ZEROFILL sama seperti integer, akan mengisi angka 0 pada bagian kiri angka.
Contoh pendefinisan tipe data floating point:
mysql> CREATE TABLE contoh_float (satuan FLOAT(3,2), puluhan FLOAT(4,2), ribuan FLOAT(5,2), positif DOUBLE ZEROFILL UNSIGNED, cantik DOUBLE(8,2) ZEROFILL); Query OK, 0 rows affected (1.21 sec) mysql> DESCRIBE contoh_float; +---------+-------------------------------+------+-----+---------+-------+ | Field  | Type                         | Null | Key | Default | Extra | +---------+-------------------------------+------+-----+---------+-------+ | satuan | float(3,2)                   | YES |    | NULL   |      | | puluhan | float(4,2)                   | YES |    | NULL   |      | | ribuan | float(5,2)                   | YES |    | NULL   |      | | positif | double unsigned zerofill     | YES |    | NULL   |      | | cantik | double(8,2) unsigned zerofill | YES |    | NULL   |      | +---------+-------------------------------+------+-----+---------+-------+ 5 rows in set (0.04 sec) mysql> INSERT INTO contoh_float values ((1.3), (55.32), (523.77), (7832.3), (150000.45)); Query OK, 1 row affected (0.15 sec) mysql> SELECT * FROM contoh_float; +--------+---------+--------+------------------------+-----------+ | satuan | puluhan | ribuan | positif               | cantik   | +--------+---------+--------+------------------------+-----------+ |  1.30 |  55.32 | 523.77 | 00000000000000007832.3 | 150000.45 | +--------+---------+--------+------------------------+-----------+ 1 row in set (0.00 sec)
Dalam tutorial belajar MySQL kali ini kita telah mempelajari tipe-tipe data numerik dalam MySQL, yakni meliputi Tipe data Integer, Decimal, dan Float. Dalam tutorial selanjutnya, kita akan membahas tentang tipe data huruf (string) dalam MySQL.
semangat
Terimakasih atas semangatnya..
makasih ya informasinya
Terimakasih juga untuk komentarnya, mudah-mudahan bisa bermanfaat..
Mau nanya nih, apa perbedaan dari penulisan tinyint(4) dan tinyint tanpa (4) ? apakah itu akan mengurangi ukuran dari tinyint yang nilai 1 bytes menjadi 0.1 bytes (artinya lebih kecil dari 1bytes), seperti yang ada pada varchar(50) dan varchar tanpa (50) ? dan bagaimana kalau ternyata varchar/tipe data yang di input lebih dari (50) ? makasih duniailkom.com :-)
Ternyata sudah ada jawabannya di atas :-) , bacanya kurang teliti sih he he, bagaimana dengan varchar(50) dan varchar tanpa(50) ? Makasih
Terimakasih atas kunjungannya agan nasir… untuk perbedaan tipedata varchar, bisa dilihat di artikel selanjutnya, Tutorial Belajar MySQL: Tipe Data Huruf (String), mudah-mudahan dapat membantu…
Saya membuat tipe data integer tidak pernah dikasih attribute unsigned zerofill, unsigned, atau signed (kosong), itu jangkauannya jadi seperti apa?
Kemudian ada juga attribut binary dan current_timestamp itu apaya?
halaman demi halaman saya baca, bahasa penyampaiannya mudah dimengerti, saya ingin belajar lebih dalam lagi apakah ada eboknya yg berbentuk pdf untuk seluruh isi blog ini. salam semangat…!!!
Terimakasih untuk kunjungannya mas, tapi mohon maaf untuk saat ini saya belum membuat ebook-nya. Tapi mungkin nanti bisa direalisasikan. Mudah2an berkenan menunggu.
Kalau Untuk Nisn Tipe datanya apa gan ?
NISN itu Nomor Induk Siswa Nasional y gan?
Saya lihat untuk NISN membutuhkan 10 digit angka, tetapi karena ini adalah nomor identitas yang tidak memerlukan perhitungan, saya lebih memilih menggunakan char(10) atau varchar(10). Terlebih karena NISN bisa dimulai dengan angka 0 diawalnya.
Semoga jadi ilmu yang bermanfaat :)
Amiin.. terimakasih mas :)
Saya terbantu dengan posting ini, makasih sudah sharing
Mas, kalo nyimpan data yg nilainya 0,0005 pake tipe data double bisa?
Iya, bisa. Tapi penulisannya harus menggunakan tanda 'titik' untuk desimal, sehingga 0,0005 ditulis sebagai 0.0005. Jika data yang disimpan butuh perhitungan yang pasti (seperti mata uang), bisa diganti menggunakan Decimal.
Mau nanya dong kalo misal data nilai 2.67 itu pakai tipe data apa ya?
Bisa menggunakan float, double, atau decimal.
Tapi jika butuh ketelitian yang 'pasti' sebaiknya gunakan decimal.
Maaf kok ga bisa ya tetep yg kesimpan angkanya 267 bukan 2.67 ketika disimpan, padahal di formnya angkanya 2.67 ketika disave data di my sql jadinya 267
Menggunakan PHP MySQL y mas? kesalahan tersebut bisa jadi ada di kode PHP nya. mungkin bisa dipastikan apakah hasil inputan form memang 2.67 (menggunakan perintah echo PHP).
Setelah itu pastikan juga tipe data di PHP dan tabel MySQL memang untuk menampung angka float.
Menggunakan PHP MySQL y mas? kesalahan tersebut bisa jadi ada di kode PHP nya. mungkin bisa dipastikan apakah hasil inputan form memang 2.67 (menggunakan perintah echo PHP).
Setelah itu pastikan juga tipe data di PHP dan tabel MySQL memang untuk menampung angka float.
Vb.net 2008 mas pake sql front saya udh coba pake tipe apa aja tetep yg kesimpan angka 267, bisa dibantu ga mas?
kakak..itu mysql version 5.6 26…..mengikuti cara instal di duniailkom.com kenapa ngk bisa mysql server manual di hidupkan dengan manual padahal saya sudah mengikuti prosedur secara benar…cari msqld.bin kenapa tak ada di versi itu…jadi susah belajar tanpa praktek langsung…tolong petunjuknya kakak..biar bisa mengikuti artikel selanjutnya…….?
Sabar y gan… berhubung saya sedang ada kesibukan, jadi belum sempat memeriksa apa yang berbeda di installan MySQL terbaru. Soalnya saya juga harus download ulang MySQL 5.6.26-nya.
Untuk solusi sementara, mungkin bisa pakai versi MySQL 5.6.21 sebagaimana yang ada dalam tutorial ini :)
dimana bisa dowload version mysql 5.6 21 kakak…ada biar saya dowload kakak kalau ada….thank..
Bisa kesini gan: http://downloads.mysql.com/archives/installer/. Nanti tinggal pilih mau MySQL versi berapa.
Tapi kalau melihat salahnya karena MySQL terinstall di 'easy-webprintEX', berarti sewaktu proses instalasi MySQL, agan tidak menukar lokasi instalasi. Di dalam tutorial Cara Menginstall MySQL saya sudah menjelaskan cara menukar alamat folder instalasi. Silahkan ikuti sesuai petunjuk :)
Bos mau nanya kenapa d TINYINT itu (4) bukan (3) kan maksimal 127 ..trus ane pernah bikin pake int tapi (11) bukan (10) yah??mohon penjelasan
Tanda kurung untuk tipe data numerik (integer dan float) bukan untuk pembatasan seberapa banyak nilai yang didukung gan, tetapi hanya untuk memformat tampilannya saja. Di dalam manual MySQL dijelaskan bahwa nilai display ini bisa mendukung hingga 255.
Sebagai contoh, saya bisa membuat tabel dengan spesifikasi kolom berikut:
CREATE TABLE contoh_mini (mini TINYINT (200) ZEROFILL);
Kolom mini tetap hanya mendukung range nilai 0 – 255, tetapi sekarang ada 200 angka nol sebelumnya.. hehe
mau nanya nih mas, kalo input nilai uang di text box nya varchar tp biar kesimpen di database mysql bentuk int dgn tetap menyertakan angka di belakang koma gmn caranya mas? terima kasih maaf masih newbie hehe
Maksudnya textbox bertipe string y (di PHP)? Untuk hal ini kita harus konversi dulu di dalam PHPnya menjadi float, baru kemudian disimpan kedalam tipe data decimal atau float di tabel MySQL.
Di dalam PHPnya sendiri kita juga harus tambahkan beberapa aturan, misalnya apakah angka ini menggunakan karakter 'titik' atau 'koma' sebagai penanda desimal, karena sehari2 kita menggunakan tanda koma sebagai karakter penanda desimal, sedangkan di PHP dan MySQL, menggunakan tanda titik. Ini bisa jadi pertimbangan juga :)
masih belum paham untuk madsud "legth/value" pada tipe data integer. tolong penjelasanya
ada dua pertanyaan :
1. karena tidak membatasi panjang karakter, jadi sama saja int(3) dan int(9) karena digit 9 masih dibawah 2milyar. tolong penjelasanya.
2. maksud tampil seragam itu seperti apa?
pertanyaan ini muncul dari penjelasan di web sebelah.
"Perlu cermati, bahwa tipe data integer tidak sama dengan tipe data varchar, yang mana nilai length membatasi panjang karakter. Pada VARCHAR(3), bila di-insert nilai "EMPU" akan tersimpan sebagai "EMP". Tidak demikian pada INT(3), bila di-insert nilai 1986 maka akan tersimpan 1986. Ini dikarenakan nilai 1986 masih dapat ditampung dalam rentang 2 miliar."
Length 3 pada INT(3) adalah panjang tampilan. Ki Sanak dapat menggunakan opsi length ini jika menginginkan nilai integer "tampil" seragam. Opsi length ini digunakan bersama ZEROFILL.
Kalau dibahas di web sebelah, lebih pas jika ditanya ke admin web tersebut mas, hehe… :)
Saya rasa kedua jawabannya sudah ada di dalam tutorial ini, mungkin bisa dibaca2 lagi + praktekkan langsung.
1. Jika kita set sebagai int(3) atau int(9), angka 3 dan 9 ini hanya untuk mengatur spasi di depan angka dan bukan mengatur batas maksimal kolom (pembahasannya sudah dijelaskan dalam tutorial ini)
2. Seragam disini mungkin maksudnya ditampilkan rata kanan mas. seperti menulis angka di microsoft excel.
Assalamualaikum, permisi mau tanya.. kalau tgl_lahir, bulan sma tahun type datanya apa ya?
terimakasih.
Paling pas pakai tipe data "date" MySQL. Tp perlu di konversi dari PHP karena susunannya berbeda.
Kalau g mau repot bisa simpan sebagai string saja (tipe data varchar).
Assalamualaikum, kk mau nanya dong.. kalau misalnya saya ingin buat tipe data int, terus kan tipe datanya pertama saya input sebuah nilia didata int tersebut,terus data int tersebut saya mau input lagi tapi nilainya bertambah misal nilai saat ini 1 terus saya insert sebuah angka 1 tapi dia jadi 2 gimana ya caranya?
Terima kasih sebelumnya
Di dalam MySQL sebuah kolom bisa didefeniskian sebagai AUTO_INCREMENT. Nilai untuk kolom ini akan naik 1 angka jika ditulis maupun tidak (selama ada data baru di kolom lain). Lengkapnya bisa lanjut kesini: https://www.duniailkom.com/tutorial-mysql-atribut-tipe-data/
Kalau Auto Increament kan pasti bertambah, adakah yang bertambahnya sesuai inputan manual,jika tidak diinput tidak bertambah dan diinputnya put tidak pasti bertambahnya jadi tidak mungkin menggunakan auto increament
Kalau seperti itu perhitungannya lebih cocok di lakukan di bahasa pemrograman gan. Misalnya kalau untuk website logika perhitungannya dibuat di PHP. Nanti hasilnya saja yang di input ke database.
cara mendeklarasikan field dari tabel gmn? contoh select kdtk from toko; sya butuh kdtk
Maksudnya gimana gan? pengen mengubah kolom tabel y? bisa menggunakan query ALTER: https://www.duniailkom.com/tutorial-mysql-merubah-tabel-alter-table/
Terimakasih ilmunya, ijin copas ke powerpoint, dengan sumber tercantum…
Siip, silahkan… :)
kalo cara mw nambahin data type int menjadi ++ secara manual tanpa menggunakan auto increment itu bagaimana ?
Bismillah..
Postingan yang sangat membantu.. terimakasih..
Siip, sama2..
Gan Ane Mau Nanya DI Mysql Kok Kita Tidak Bisa Mengganti Tipe Data Menjadi Boolean Malah Terubah menjadi Tinyint Ketika Sudah Di Simpan!!
Dalam MySQL tipe data boolean memang akan disimpan ke dalam tinyint (1 untuk true). Jika pengen menyimpan nilai "true" dan "false", pakai varchar saja…
Gan kok punya saya error 1046 (3D000) : No database selected
itu maksudnya apa gan ?
Databasenya mesti dipilih dulu menggunakan query "USE nama_database;". Cara pembuatan dan memilih database bisa kesini: https://www.duniailkom.com/tutorial-mysql-membuat-menggunakan-dan-menghapus-database-mysql/
Postiingannya sangat bermanfaat mas andre, Thx buat sharing ilmunya.
Tapi saya masih bingung mengenai ukuran pada setiap tipe data. Misal saya punya kolom id int(5) dan id int(11). Jika kedua kolom di isi data yang sama dg nilai 10000 apakah ukuran memory yg digunakan sama yaitu 4byte atau berapa memory yg digunakan.
Jika dibandingkan tipe data int dan varchar itu lebih besar mana penggunaan ukuran memory nya. Misal saya punya kolom int(11) dan varchar (11), kedua kolom saya isi data pertama yang sama yaitu 12345678910 berapa ukuran memory yg digunakan pada masing-masing kolom.
Kemudian pada kedua kolom tadi saya isi data lagi yg kedua dengan nilai yg sama yaitu 12 berapa ukuran memory yg digunakan pada masing-masing kolom dengan data 12 tadi.
Mohon pencerahannya mas andre..
Untuk tipe data number seperti INT, ukuran memorynya sudah fix. Baik INT(5) maupun INT(11) sama2 menggunakan 4 byte. Nilai maksimum kedua kolom juga sama. Angka di dalam tanda kurung hanya untuk menformat tampilan, bukan membatasi nilai maksimum.
Untuk tipe VARCHAR, ukuran memory tergantung jumlah karakter. Secara umum, 1 karakter butuh 1 byte memory. VARCHAR(11) akan butuh 12 byte jika kolom tersebut diisi dengan angka "12345678910". Tambahan 1 byte untuk menyimpan keterangan mengenai jumlah karakter. Penjelasannya saya bahas di tutorial tentang tipe data string MySQL: https://www.duniailkom.com/tutorial-mysql-tipe-data-huruf-char-varchar-text/
Jika sebuah kolom ditulis sebagai VARCHAR(11), namun yang diinput hanya 2 karakter "12", maka jumlah memory yang dibutuhkan hanya 3 byte.
Thx mas andre buat pencerahannya. Penjelasannya clear, mudah dimengerti. Terus semangat berbagi ilmunya mas, Semoga tuhan memberikan balasan yg berlipat ganda atas kebaikan mas andre. Aamiin…
Amiin… terimakasih untuk doanya :)
kak tanya kalau misalnya kita membuat kode kan ada angka 0 di depanya.. itu bisa menggunakan char apa tidak ya? soalnya kodenya untuk primery key
Kalau kode 0 itu termasuk bagian dari ID, NIK, NIM, atau kode2 khusus, sebaiknya memang pakai CHAR saja.
Kak, bagusnya untuk menyimpan nilai harga itu memakai apa ya? agar format ketika di panggil nya nanti misalnya 4000, ketika di panggil atau dimasukkan jadi 4.000, mungkin kurang lebih seperti itu
Untuk menyimpan angka yang suatu saat ada hitung2nya, bisa pakai INT (untuk angka bulat) atau DECIMAL (untuk pecahan).
Mengenai format tampilan nanti bisa di program pakai fungsi khusus MySQL atau dari PHP (jika akan ditampilkan dengan web based). Misalnya di MySQL ada fungsi FORMAT(). Contoh penggunaannya seperti ini:
SELECT FORMAT(1553000.156123, 2,'id_ID');
— 1.553.000,16
Untuk saat ini penjelasan fungsi2 bawaan MySQL tersedia di buku MySQL Uncover duniailkom :)
satu lagi kak, apabila kita menggunakan scanner barcode di aplikasi kita, apakah harus membuat kan kolom untuk menyimpan hasil barcode lagi di database sql atau, satukan saja di kolom id?
Ini tergantung logika programnya mau seperti apa. Tapi menurut saya bisa ditempatkan di kolom terpisah saja.
Mendingan di kolom terpisah saja gan
Terima kasih banyak kak, informasi. nya sangat bermanfaat buat saya,,.. :-) :-) :-) :-) :-) (y) (y) (y) (y) (y)
18.Buat alias dengan nama "bonus" dan merupakan hasil perkalian antara field sks
dengan "100000
", kemudian tampilkan isi record hanya field
"nama", "sks",
"bonus".
19. Buat alias dengan nama "gaji_terbesar" untuk mencari nilai gaji terbesar pengajar.
20. Buat alias dengan nama "tunjangan" dan merupakan hasil perkalian antara field sks
dengan "250000", kemudian tampilkan isi record dan urutkan secara descending
berdasarkan tunjangan.
Itu solusinya gimana mas Andre.
Mohon maaf banget nih, untuk tugasnya saya belum bisa bantu. Tapi khusus mengenai alias bisa kesini: https://www.duniailkom.com/tutorial-belajar-mysql-menggunakan-alias-sebagai-ganti-nama-tabel-query-as/
varchar per karakter
tinyint = 1 byte
smallint = 2 byte
mediaint = 3 byte
int = 4 byte
bigint = 8 byte
begitu mas?
Dalam tutorial ini membahas tipe data numerik (integer), sedangkan VARCHAR adalah untuk tipe data karakter, jadi sudah beda materi.
Ukuran yang dicantumkan adalah total memory yang dipakai untuk menyimpan angka. Misal, ada kolom yang didefinisikan sebagai INT, maka berapun angka yang diinput, tetap butuh 4 byte memory.
Kalau VARCHAR, itu biasanya 1 karakter = 1 byte. Lebih lanjut tentang VACHAR saya bahas di tutorial berikutnya: https://www.duniailkom.com/tutorial-mysql-tipe-data-huruf-char-varchar-text/
mau tanya dong bisakah kita buat table dengan menggunakan dua tipe secara langsung ?
Kalau maksudnya satu kolom di-set dengan 2 buah tipe data, itu tidak bisa.
Tapi jika maksudnya 1 tabel memiliki beberapa kolom dengan tipe data yang berbeda-beda untuk setiap kolom, g ada masalah.
Mau tanya mas, kan format tipe data desimal itu decimal (M,D) dimana M merupakan total digit kesuluruhan sedangkan D nilai dibelakang koma, seandainya kita buat query decimal(4,2) artinya hanya ada 4 digit angka dengan 2 didepan dan 2 di belakang koma kan ya dengan nilai maksimal 99.99
Lalu mengapa kalau dibuat query decimal(2,2) hanya bisa -0.99 s/d 0.99 begitu dijadikan -1.99 atau 1.99 sudah dianggap melampaui, padahal seharusnya kan -9.99 s/d 9.99 juga bisa bukan? Karena M disini hanya sebagai jumlah digit bukan batasan nilai desimal, ini juga berlaku kalau dibuat dec(4,4), (8,8) dst.
Alasannya karena jika di set sebagai decimal(2,2), maka total angka yang bisa ditampung hanya bisa 2 digit, dan itu sudah diambil semua untuk angka di belakang koma.
Untuk angka 1.99, itu sudah ada 3 digit, yakni: <digit1>,<digit2><digit3>.
Tannya mas kan kalau char(12) artinya 12 byte kan ya data yang akan tersimpan. Jika digunakan sebagai primary key tipe data char atau varchar yang lebih dari 8 deret contoh 'XX013015001P' = 12 deret = 13 byte sementara jika menggunakan bigint(20) ber isikan nilai numerik 1 = 8 byte. Jadi apakah lebih baik menggunakan tipe data int?
eh ralat 13 byte jd 12 byte kan tipe datanya char.
mau bertanya dong mas untuk yang numerik,
cara buat supaya bisa komanya ada dua seperti 1.000.00 rupiah gitu gmna?
Bisa pakai fungsi FORMAT. Lebih lanjut bisa ke sini: https://www.duniailkom.com/tutorial-belajar-mysql-cara-memformat-tampilan-angka-mysql-format-function/
Makasihh bang ilmunya, semoga jadi amal jariyahh???
semangattt
Mau nanya bang…
mengenai insert data ke tabel yg ini:
mysql> CREATE TABLE contoh_dec (satuan DECIMAL(3,2), puluhan DECIMAL(4,2),
ribuan DECIMAL(5,2), normal DECIMAL, cantik DECIMAL(8,2) ZEROFILL);
Query OK, 0 rows affected (0.13 sec)
mysql> DESCRIBE contoh_dec;
+———+——————————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+——————————–+——+—–+———+——-+
| satuan | decimal(3,2) | YES | | NULL | |
| puluhan | decimal(4,2) | YES | | NULL | |
| ribuan | decimal(5,2) | YES | | NULL | |
| normal | decimal(10,0) | YES | | NULL | |
| cantik | decimal(8,2) unsigned zerofill | YES | | NULL | |
+———+——————————–+——+—–+———+——-+
5 rows in set (0.08 sec)
Bukankah kolom "ribuan" itu seharusnya ditulis dengan "ratusan" ya?
Karena saat pendefinisian tabel pada kolom "ribuan" adalah decimal (5,2) yang berarti angka yang ditampung hanya sebanyak 3 digit, sedangkan untuk "ribuan" butuh 4 digit yang seharusnya ditulis DECIMAL (6,2)
Mungkin saya yang belum paham, atau bisa jadi bang Andre salah tulis yang seharusnya ditulis "ratusan" malah ditulis "ribuan".
Terima kasih banyak atas ilmunya bang :)
assalamu'alaikum, bng mau nanya aku pake mysql nah pake type data int, tapi untuk no_tlp itu angka nol awal ga bisa terinput.. terima kasih
Waalaikumsalam. Untuk nomor telp, nik, atau id karyawan lebih baik di set sebagai varchar saja, bukan int. Soalnya kolom-kolom ini murni sebagai teks dan tidak butuh operasi matematika.