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:
FLOAT
mewakili nilai presisi tunggal yang menggunakan 4 byte dan sertakan hingga 6 atau 7 angka penting.DOUBLE
mewakili 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
,TIMESTAMP
DATE
TIME
YEAR
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:
DATETIME
nilai berkisar dari 1000-01-01 00:00:00 ke 9999-12-31 23:59:59 .TIMESTAMP
nilai 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:
CHAR
danVARCHAR
BINARY
danVARBINARY
BLOB
danTEXT
ENUM
SET
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
.
GEOMETRY
menyimpan semua jenis nilai geometri/spasial.POINT
digunakan untuk satu nilai poin.LINESTRING
menyimpan kumpulan beberapa titik yang membentuk garis.POLYGON
adalah 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
.
GEOMETRYCOLLECTION
menyimpan koleksi nilai geometri/spasial.MULTIPOINT
digunakan untuk menyimpan kumpulan beberapa nilai titik.MULTILINE
menyimpan kumpulan beberapa baris.MULTIPOLYGON
digunakan 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.