Pendahuluan
Tipe data MySQL penting untuk dipahami sebelum Anda mulai membuat dan bekerja dengan database MySQL. Jika Anda menetapkan setiap kolom dengan benar, Anda memastikan bahwa database dioptimalkan dan data disimpan dengan aman.
Dalam tutorial ini Anda akan belajar tentang berbagai tipe data MySQL.
Apa itu Tipe Data di MySQL?
Nama dan tipe data mendefinisikan setiap kolom dalam tabel database. Tipe data yang ditentukan memberi tahu MySQL jenis nilai apa yang akan disimpan, berapa banyak ruang yang dibutuhkan, dan jenis operasi apa yang dapat dilakukan dengan jenis data ini.
Tipe Data MySQL
Ada banyak tipe data berbeda yang dapat Anda simpan dalam tabel MySQL.
Mereka dikelompokkan ke dalam lima kategori utama:
- Tipe data numerik
- Jenis data tanggal dan waktu
- Tipe data string
- Tipe data spasial
- Tipe data JSON
Baca terus untuk mempelajari lebih lanjut tentang setiap grup dan lihat tipe data mana yang mereka sertakan.
Tipe Data Numerik
Saat menyimpan angka dalam kolom database, gunakan salah satu tipe data numerik. MySQL mendukung tipe data numerik yang tepat dan perkiraan.
Kategori numerik dibagi lagi menjadi kelompok-kelompok berikut:
- Tipe data bilangan bulat
- Tipe data titik-mengambang
- Tipe data titik tetap
- Tipe data nilai bit
Jenis Bilangan Bulat
Jenis data bilangan bulat digunakan untuk bilangan bulat (bilangan bulat). Mereka termasuk nilai positif dan negatif. Namun, mereka tidak menangani bilangan pecahan.
Oleh karena itu, angka seperti 30 dan -5435 dapat disimpan sebagai tipe data integer, sedangkan 5,3 atau 1/5 tidak dapat.
Jenis bilangan bulat ditandatangani atau tidak ditandatangani. Mereka dibagi lagi berdasarkan ukurannya, berbeda berdasarkan panjang dan jangkauannya.
| Byte | Rentang (tidak ditandatangani) | Rentang (ditandatangani) | |
|---|---|---|---|
| TINYINT | 1 | dari 0 hingga 255 | dari -128 hingga 127 |
| KECIL | 2 | dari 0 hingga 65535 | dari -32768 hingga 32767 |
| MEDIUMINT | 3 | dari 0 hingga 16777215 | dari -8388608 hingga 8388607 |
| INT | 4 | dari 0 hingga 4294967295 | dari -2147483648 hingga 2147483647 |
| BESAR | 8 | dari 0 hingga 18446744073709551615 | dari -9223372036854775808 hingga 9223372036854775807 |
TINYINT adalah bilangan bulat yang sangat kecil yang menggunakan 1 byte penyimpanan. Terdiri dari hingga 4 digit . Rentang unsigned-nya adalah dari 0 ke 255 . Jika ditandatangani, ia memiliki rentang dari -128 ke 127 .
SMALLINT adalah bilangan bulat kecil yang menggunakan 2 byte penyimpanan. Terdiri dari hingga 5 digit . Rentang unsigned-nya adalah dari 0 ke 65535 . Saat ditandatangani, ia memiliki rentang dari -32768 ke 32767 .
MEDIUMINT adalah bilangan bulat berukuran sedang yang menggunakan 3 byte penyimpanan. Ini memiliki hingga 9 digit . Jika tidak ditandatangani, ia memiliki rentang dari 0 ke 16777215 . Ditandatangani, nilai minimumnya adalah -8388608 , sedangkan nilai maksimumnya adalah 8388607 .
INT adalah bilangan bulat yang menggunakan 4 byte penyimpanan. Ini menggunakan hingga 11 digit . Saat tidak ditandatangani, rentangnya dari 0 ke 4294967295 . Jika ditandatangani, ia memiliki rentang dari -2147483648 ke 2147483647 .
BIGINT adalah bilangan bulat besar yang menggunakan 8 byte penyimpanan. Ini memiliki hingga 20 digit . Nilai minimum yang ditandatangani adalah 0 , sedangkan nilai maksimum yang ditandatangani adalah 18446744073709551615 . Jika ditandatangani, ia memiliki rentang dari -9223372036854775808 ke 922337203685475807 .
Tipe Titik Mengambang
Tipe data numerik floating-point adalah bilangan rasional yang digunakan untuk mewakili nilai perkiraan. Gunakan tipe data floating-point untuk penghitungan presisi tinggi.
Jenis floating-point meliputi:
FLOATmewakili nilai presisi tunggal yang menggunakan 4 byte dan sertakan hingga 6 atau 7 angka penting.DOUBLEmewakili nilai presisi ganda yang menggunakan 8 byte dan sertakan hingga 15 atau 16 angka penting.
Sintaks dasar untuk mendefinisikan FLOAT /DOUBLE tipe datanya adalah FLOAT(M,D) /DOUBLE(M,D) .
M mewakili jumlah total digit, sedangkan D adalah jumlah desimal. Misalnya, nilai 5143,234 akan didefinisikan sebagai 7,3 karena memiliki total 7 digit dan 3 digit setelah koma.
Anda juga dapat menggunakan FLOAT(P) sintaks untuk menentukan tipe data titik-mengambang, di mana P menentukan presisi. Jika P memiliki nilai dari 0 hingga 23 , ini adalah kolom presisi tunggal. Jika presisi antara 24 dan 53 , ini adalah kolom presisi ganda.
| Byte | Rentang (tidak ditandatangani) | Rentang (ditandatangani) | |
|---|---|---|---|
| FLOAT | 4 | dari 1.175494351E-38 hingga 3.402823466E+38 | dari -3.402823466E+38 hingga -1.175494351E-38 |
| GANDA | 8 | dari 0 dan 2.22507385850720 14E- 308 hingga 1.797693134862315 7E+ 308 | dari -1.7976931348623 157E+ 308 hingga -2.22507385850720 14E- 308 |
Jenis Titik Tetap
Untuk menyimpan nilai numerik yang tepat, gunakan tipe data titik tetap – DECIMAL . Karena mewakili angka pasti, tipe data ini sebagian besar digunakan untuk data yang bergantung pada nilai presisi (seperti data moneter).
Sintaks dasarnya adalah DECIMAL(P,D) , di mana P singkatan dari presisi (jumlah digit signifikan) dan D singkatan dari skala (jumlah digit setelah titik desimal).
Jumlah digit maksimum untuk presisi adalah 65 , sedangkan nilai maksimum untuk skala adalah 30 .
Jika Anda tidak menentukan presisi dan skala, kolom akan menggunakan nilai default. Secara default, nilai untuk P,D adalah 10,0 .
Jenis Nilai Bit
BIT tipe data menyimpan nilai biner. Saat membuat kolom yang akan menyimpan nilai tersebut, Anda menentukan jumlah nilai bit yang berkisar dari 1 hingga 64 .
Sintaks untuk tipe data MySQL ini adalah BIT(N) . Jika Anda tidak menentukan N , nilai defaultnya adalah 1 .
Jenis Data Tanggal dan Waktu
Tanggal dan waktu adalah tipe data yang umum digunakan. Baik Anda menyimpan waktu entri data, tanggal lahir, atau stempel waktu saat ini, Anda menggunakan salah satu kolom berikut.
Jenis data tanggal dan waktu meliputi:
DATETIME,TIMESTAMPDATETIMEYEAR
DATETIME, TIMESTAMP
Untuk menyimpan nilai tanggal dan waktu, gunakan DATETIME atau TIMESTAMP . Kedua tipe data menyimpan informasi di YYYY-MM-DD HH:MM:SS format. Ini mencakup y telinga, m seterusnya, d ay, h kami, m inutes, dan s detik.
Perbedaan utama antara keduanya adalah jangkauannya:
DATETIMEnilai berkisar dari 1000-01-01 00:00:00 ke 9999-12-31 23:59:59 .TIMESTAMPnilai berkisar dari 1970-01-01 00:00:01 ke 2038-01-19 03:14:07 .
Anda dapat memasukkan pecahan detik untuk kedua opsi. Untuk melakukannya, tentukan presisi dengan mengikuti sintaks DATETIME(p) /TIMESTAMP(p) .
Misalnya, untuk menyimpan stempel waktu 22:53 pada 1 Maret 2021 , dengan tiga pecahan detik, tentukan tipe data TIMESTAMP(3) . Entri disimpan sebagai:2020-03-01 22:53:35.346 .
TANGGAL
DATE digunakan untuk menyimpan nilai tanggal dalam format YYYY-MM-DD (tahun, bulan, tanggal).
Jenis data mendukung rentang 1000-01-01 hingga 9999-12-31 .
WAKTU
TIME digunakan untuk menyimpan nilai waktu sebagai HH-MM-SS (jam, menit, detik) atau HHH-MM-SS . Entri yang menunjukkan waktu berlalu atau perbedaan waktu disimpan dan diambil dalam format yang lebih panjang (jika memerlukan lebih banyak digit untuk jam).
Jenis data mendukung rentang 1000-01-01 hingga 9999-12-31 .
TAHUN
YEAR menyimpan nilai tahun dalam format YYYY . Ini mendukung nilai dalam rentang 1901-2155 .
Sementara versi yang lebih lama dari MySQL 5.7.5 mendukung entri 2 dan 4 digit untuk YEAR , tidak ada dukungan 2 digit sejak rilis 5.7.5.
Tipe Data String
Saat menyimpan string data, gunakan salah satu tipe data string. Mereka dapat berisi huruf, angka, gambar, atau file.
Dengan demikian, ada beberapa tipe data string yang berbeda:
CHARdanVARCHARBINARYdanVARBINARYBLOBdanTEXTENUMSET
CHAR dan VARCHAR
CHAR dan VARCHAR adalah tipe data yang digunakan untuk menyimpan string non-biner. Perbedaan utama antara keduanya adalah cara mereka menyimpan data.
CHAR menyimpan string dengan panjang tetap (hingga 255 karakter). Saat membuat CHAR kolom, Anda menentukan panjangnya menggunakan CHAR(N) sintaksis. N adalah jumlah karakter yang ingin Anda ambil. Jika Anda tidak menentukan panjangnya, ini menggunakan nilai default 1 .
Nilai-nilai ini disimpan dengan bantalan kanan dengan panjang yang ditentukan. Oleh karena itu, jika Anda menyiapkan CHAR(5) kolom dan menyimpan entri tiga karakter ke dalamnya, masih membutuhkan lima karakter.
VARCHAR menyimpan string dengan panjang variabel. Meskipun panjangnya harus ditentukan saat membuat kolom, nilainya tidak diisi dengan benar. Mereka memiliki batas maksimum, tetapi panjangnya tidak tetap dan bervariasi tergantung pada data.
Sebelumnya, rentang entri adalah dari 0 hingga 255 . Setelah rilis MySQL 5.0.3 , VARCHAR rentang hingga 65.535 karakter .
BINARY dan VARBINARY
BINARY dan VARBINARY tipe data mirip dengan CHAR yang disebutkan sebelumnya dan VARCHAR . Perbedaan utama antara kedua grup ini adalah BINARY dan VARBINARY digunakan untuk string biner.
BINARY digunakan untuk string biner dengan panjang tetap, hingga 255 byte . Sintaks utama untuk mendefinisikan kolom seperti itu adalah BINARY(N) , di mana N adalah jumlah byte.
VARBINARY menyimpan string biner dengan panjang variabel. MySQL versi 5.0.3 dan yang lebih baru menyimpan hingga 65 535 byte .
BLOB dan TEKS
Keduanya BLOB dan TEXT digunakan untuk menyimpan data dalam jumlah besar.
BLOB menangani B inary L arge O objek (yaitu, kumpulan besar data biner seperti gambar, audio, atau file PDF).
Ada 4 jenis tipe data BLOB untuk digunakan, tergantung pada ukuran yang dibutuhkan data Anda:
TINYBLOB(0 – 255; 255 byte)BLOB(0 – 65.535; 16 KB)MEDIUMBLOB(0 – 16.777.215; 16 MB)LONGBLOB(0 – 4.294.967.295; 4 GB)
TEXT tipe data untuk menyimpan string teks yang lebih panjang. Menurut jumlah data yang dibutuhkan, ada:
TINYTEXT(0 – 255; 255 byte)TEXT(0 – 65.535; 16 KB)MEDIUMTEXT(0 – 16.777.215; 16 MB)LONGTEXT(0 – 4.294.967.295; 4 GB)
ENUM
ENUM tipe data digunakan untuk menyimpan salah satu nilai yang mungkin telah ditentukan sebelumnya dalam kolom. Kolom dapat memiliki hingga 65535 nilai yang berbeda.
Saat membuat ENUM kolom tabel di MySQL, Anda menentukan daftar semua nilai yang diizinkan.
SETEL
Seperti ENUM , SET tipe data memiliki daftar nilai yang mungkin disimpan di kolom.
Perbedaan utama antara keduanya adalah SET memungkinkan entri memiliki lebih dari satu nilai.
Misalnya, jika kolom didefinisikan sebagai SET('Red','Orange','Yellow','Green') dan memiliki empat kemungkinan nilai dalam daftar, satu entri dapat memiliki nilai 'Merah' , sementara yang lain dapat memiliki nilai 'Merah','Kuning' .
Jumlah maksimum nilai yang diizinkan adalah 64 .
Tipe Data Spasial
Saat menyimpan data spasial, Anda dapat menggunakan salah satu dari banyak tipe data spasial berbeda yang didukung MySQL. Mereka digunakan untuk mewakili informasi tentang bentuk geometris dan lokasi fisik.
Kita dapat membaginya menjadi dua kelompok:
- Nilai geometri tunggal
- Koleksi nilai
Nilai Geometri Tunggal
Tipe data geometri tunggal mencakup GEOMETRY , POINT , LINESTRING , dan POLYGON .
GEOMETRYmenyimpan semua jenis nilai geometri/spasial.POINTdigunakan untuk satu nilai poin.LINESTRINGmenyimpan kumpulan beberapa titik yang membentuk garis.POLYGONadalah tipe data yang digunakan untuk menyimpan kumpulan beberapa titik yang membentuk permukaan poligonal.
Koleksi Nilai
Kumpulan tipe data nilai termasuk GEOMETRYCOLLECTION , MULTIPOINT , MULTILINE , dan MULTIPOLYGON .
GEOMETRYCOLLECTIONmenyimpan koleksi nilai geometri/spasial.MULTIPOINTdigunakan untuk menyimpan kumpulan beberapa nilai titik.MULTILINEmenyimpan kumpulan beberapa baris.MULTIPOLYGONdigunakan untuk kumpulan beberapa poligon.
Jenis Data JSON
Sejak versi 5.7.8, MySQL menyertakan dukungan untuk JSON native asli tipe data, memungkinkan pengguna untuk menyimpan dan mengelola dokumen JSON melalui database.
MySQL memastikan bahwa dokumen JSON valid dan menyimpannya ke dalam kolom JSON.