Pada artikel ini, kita akan membahas tipe data termasuk string, numerik, tanggal dan waktu, spasial, dan JSON yang didukung oleh MySQL. Selain itu, kami akan memberikan contoh penggunaannya dan melihat cara mengubah tipe data untuk kolom tabel menggunakan dbForge Studio for MySQL
Isi
Apa itu Tipe Data
Memilih tipe data yang sesuai bisa menjadi sangat penting. Saat membuat tabel, Anda perlu menentukan nama tabel dan tipe data yang tidak hanya menentukan data apa yang dapat disimpan di kolom tabel tetapi juga pengaruhnya terhadap kinerja database. Tipe data juga menunjukkan rentang data yang akan disimpan di setiap kolom tabel. Saat menentukan tipe data, Anda dapat mengatur ukuran bidang
Di MySQL terdapat berbagai macam tipe data yang dikelompokkan secara numerik [integer, float, boolean, dll. ], tanggal dan waktu [DATETIME, DATE, dll. ], string [CHAR, VARCHAR, dll. ], spasial, dan JSON. Misalnya, jika tipe data kolom adalah numerik, artinya hanya data numerik yang dapat disimpan dalam kolom dan Anda dapat menentukan panjang maksimumnya dalam tanda kurung.
Sintaks tipe data adalah sebagai berikut
CREATE TABLE table_name [
column1_name data type[length],
column2_name data type[length],
];
Berikut adalah contoh pernyataan CREATE yang menampilkan tipe data MySQL
CREATE TABLE products [
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_item VARCHAR[255] NOT NULL,
use_by date,
price int,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
];
_Tipe Data di MySQL
MySQL mendukung beberapa tipe data SQL standar. Setiap kolom hanya dapat berisi satu tipe data. Di MySQL, tipe data dikelompokkan dalam berbagai kategori
- Numerik
- Tanggal dan waktu
- Rangkaian
- Spasial
- JSON
Tipe Data String MySQL [Format Teks]
Di MySQL, tipe data string biasanya menyimpan data sebagai string teks yang panjang, misalnya umpan balik atau deskripsi produk. String dapat terdiri dari huruf, angka, atau file media biner seperti gambar, foto, atau file audio
Tipe data string MySQL dibagi menjadi
- TEKS
- GUMPAL
- CHAR dan VARCHAR
- BINER dan VARBINARI
- ENUM
- MENGATUR
Tipe Data TEKS
Tipe data MySQL TEXT digunakan untuk menyimpan string teks panjang untuk menampilkan informasi tentang objek tabel, seperti deskripsi produk, komentar blog, dll. Ukuran penyimpanan tipe data TEXT bervariasi dari 1 byte hingga 4 GB. Berbeda dengan tipe data numerik, Anda tidak perlu menyetel panjang di samping tipe data TEXT di kolom tabel. Selain itu, nilai TEXT tidak disimpan dalam memori server tetapi menggunakan disk sebagai gantinya. Oleh karena itu, tipe data TEXT membutuhkan +1 byte tambahan untuk mengambil data
Di MySQL, ada empat tipe data TEXT yang berbeda. TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT
Tabel menampilkan penyimpanan yang diizinkan dalam byte untuk tipe data TEXT dan kasus saat data tersebut dapat digunakan
JenisPenyimpananJumlah maksimum karakterPenyimpanan overhead [dalam byte]PenggunaanTINYTEXT2552551Untuk menyimpan string teks pendek seperti tautan, deskripsi produk, atau ringkasanTEXT64 kB655352Untuk menyimpan teks seperti artikel yang tidak melebihi panjang karakter yang ditentukanMEDIUMTEXT16 MB167772153Untuk menyimpan teks besar seperti kertas putih atau bukuLONGTEXT4 GB42949672954Untuk menyimpan dalam jumlah besarTipe Data BLOB di MySQL
Berbeda dengan tipe data TEXT, yang merupakan tipe data string non-biner, tipe data BLOB adalah string biner. Di MySQL, tipe data BLOB mewakili objek besar biner dan dapat digunakan untuk menyimpan data media biner, seperti tautan audio atau video, gambar, atau file
Tipe data BLOB, termasuk TINYBLOB, BLOB, MEDIUMBLOB, dan LONGBLOB, memiliki panjang variabel, i. e. byte tambahan [dari 1 hingga 4] diperlukan untuk menyimpan panjang nilai di kolom. Misalnya, ukuran maksimum data yang akan disimpan adalah sebagai berikut
- TINYBLOB => 255 byte + 1 byte
- Gumpalan => 65535 + 2 byte
- MEDIUMBLOB => 16777215 + 3 byte
- LONGBLOB => 4294967295 + 4 byte
Saat membandingkan tipe data BLOB dan TEXT, perlu dicatat bahwa BLOB didefinisikan sebagai nilai numerik, sedangkan TEXT – sebagai string karakter yang memiliki kumpulan karakter. Ini harus diperhitungkan saat membandingkan dan menyortir informasi
Tipe data CHAR dan VARCHAR
Pada MySQL, tipe data CHAR menyimpan string non-biner dengan panjang tetap mencapai 255 karakter, sedangkan tipe data VARCHAR menyimpan string non-biner dengan panjang variabel yang memiliki ukuran maksimal hingga 65535 karakter.
Untuk kedua tipe data, Anda perlu mengatur parameter ukuran dalam karakter [dalam tanda kurung] saat membuat kolom. Parameter ukuran mewakili panjang kolom untuk tipe data CHAR dan panjang kolom maksimum untuk tipe data VARCHAR. Misalnya, CHAR[3] merujuk hingga 3 karakter untuk nilai kolom
Perbedaan utama antara tipe data CHAR dan VARCHAR adalah cara menyimpan data. CHAR menambahkan spasi ke nilai di sebelah kanan dengan panjang yang ditentukan, misalnya CHAR[3] akan ditampilkan sebagai berikut 'tabel'. VARCHAR menampilkan nilai apa adanya, tanpa spasi tambahan – VARCHAR[3] akan ditampilkan sebagai 'tabel'
Perlu dicatat bahwa ketika menentukan tipe data untuk nomor telepon di MySQL, VARCHAR lebih disukai daripada bilangan bulat karena terkadang mungkin ada simbol atau karakter khusus. Selain itu, VARCHAR menyederhanakan validasi
Jenis BINARY dan VARBINARY
Meskipun CHAR dan VARCHAR mirip dengan tipe data BINARY dan VARBINARY, keduanya memiliki beberapa perbedaan. BINARY dan VARBINARY menyimpan string biner, dan panjangnya diukur dalam byte
Tipe Data ENUM di MySQL
Tipe data MySQL ENUM adalah string dengan nilai pencacahan. ENUM memungkinkan Anda menyetel daftar nilai yang telah ditentukan sebelumnya dan kemudian memilih salah satunya. Jika Anda menambahkan nilai yang tidak valid yang tidak termasuk dalam daftar, Anda akan mendapatkan string kosong
Misalnya kita ingin membuat tabel yang akan menyimpan informasi tentang ukuran baju wanita. kecil, sedang, dan besar. Pada tabel, kita akan menyisipkan kolom size dengan tipe ENUM. Artinya kolom ini hanya akan mengambil nilai yang ditentukan
-- create a table with the CREATE TABLE statement
CREATE TABLE clothes [
product_ID int PRIMARY KEY AUTO_INCREMENT,
name varchar[255] NOT NULL,
fabric text NOT NULL,
size enum ['small', 'medium', 'large'] NOT NULL
];
-- insert into the table a new row with a valid value
INSERT INTO clothes [product_ID, name, fabric, size]
VALUES [1, 'dresses', 'cotton', 'small'];
Setelah itu, ambil data dan lihat hasilnya
Sekarang, sisipkan baris lain dengan nilai ['ekstra besar'] yang tidak ditentukan dalam daftar dan ambil data
-- add 'extra large' to the size column that is not included in the permitted values
INSERT INTO clothes [product_ID, name, fabric, size]
VALUES [2, 'dresses', 'silk', 'extra large'];
Seperti yang Anda lihat, output menampilkan string kosong untuk nilai yang tidak valid dari kolom tipe data ENUM
SET Tipe Data
Tipe data MySQL SET memungkinkan Anda untuk menyimpan nilai nol atau banyak [dipisahkan dengan koma] yang Anda tentukan dalam daftar nilai yang telah ditentukan saat membuat tabel. Misalnya, pelanggan dapat mengenakan beberapa gaun di musim gugur dan musim dingin. Dalam hal ini, kita dapat memasukkan musim baris baru ke pakaian meja yang disebutkan di atas dan menetapkan tipe data SET ['musim gugur', 'musim dingin'] ke kolom. Dalam output, kita dapat melihat opsi berikut
''
'autumn'
'winter'
'autumn,winter'
_Tipe Data Numerik MySQL [Format Angka]
MySQL mendukung tipe data numerik seperti integer, desimal, dan tipe data floating-point
- Bilangan bulat mewakili angka tanpa pecahan dan dapat memiliki atribut SIGNED dan UNSIGNED. Biasanya, mereka dapat digunakan untuk ID atau menghitung angka
- Desimal mewakili angka dengan pecahan dan menyimpan nilai numerik yang tepat di kolom. Mereka dapat ditandatangani dan tidak ditandatangani dan biasanya digunakan untuk kolom yang menyimpan nilai uang. Dibandingkan dengan angka floating-point, desimal lebih akurat
- Floating-point mewakili angka dengan pecahan tetapi tidak menyimpan nilai numerik yang tepat. Mereka dapat ditandatangani dan tidak ditandatangani. Nilai numerik floating-point menggunakan format 64-bit presisi ganda atau format 32-bit presisi tunggal untuk menyimpan data. Mereka dapat menyebabkan hilangnya presisi selama operasi aritmatika
Tipe Data Bilangan Bulat
Tipe data integer adalah nilai numerik tanpa pecahan. MySQL mendukung tipe data integer berikut
- TINYINT
- KECIL
- INT
- MENENGAH
- BESAR
Mereka bisa UNSIGNED, yang hanya mengizinkan angka nol dan positif dalam kolom, dan SIGNED, yang menyimpan angka nol, positif, dan negatif. Untuk informasi selengkapnya tentang tipe data bilangan bulat, lihat
Tipe Data Boolean
Tipe data boolean hanya dapat menerima nilai benar atau salah. Dalam format biner, true merujuk ke 1 dan false – ke 0. Sebagai aturan, mereka digunakan untuk operasi logis
MySQL tidak memiliki tipe data boolean [atau bool]. Sebaliknya, itu mengubah nilai boolean menjadi tipe data integer [TINYINT]. Saat Anda membuat tabel dengan tipe data boolean, MySQL menghasilkan data sebagai 0, jika salah, dan 1, jika benar
Tipe Data Terapung
Tipe data Float mewakili nilai numerik perkiraan presisi tunggal yang membutuhkan 4 byte untuk penyimpanan. Mereka dapat memiliki atribut SIGNED dan UNSIGNED
AtributUkuran penyimpanan minimumUkuran penyimpanan maksimumSIGNED-3. 402823466E+38-1. 175494351E-38UNSIGNED0 dan 1. 175494351E-383. 402823466E+38Catatan. Mulai dari MySQL versi 8. 0. 17, UNSIGNED tidak digunakan lagi untuk tipe data FLOAT dan DOUBLE
Saat menambahkan kolom, Anda perlu menetapkan nilai untuk tipe data float dalam tanda kurung – FLOAT[m,d] di mana 'm' adalah jumlah total digit dan 'd' adalah jumlah digit setelah titik desimal
Tipe Data Ganda
Tipe data Double mengacu pada tipe data numerik floating-point dan menggunakan 8 byte untuk menyimpan nilai presisi ganda. Sintaks untuk tipe data ganda adalah DOUBLE PRECISION[m,d] di mana 'm' adalah jumlah digit dan 'd' adalah jumlah digit setelah titik desimal. Misalnya, DOUBLE[7,5] berarti akan menyimpan nilai dengan tujuh digit dan lima desimal
AtributUkuran penyimpanan minimumUkuran penyimpanan maksimumSIGNED-1. 7976931348623157E+308-2. 2250738585072014E-308UNSIGNED0 dan 2. 2250738585072014E-3081. 7976931348623157E+308Tipe Data Desimal
Tipe data DECIMAL dapat digunakan untuk menyimpan nilai numerik yang tepat dan tetap. Saat membuat kolom tabel, sintaks untuk tipe datanya adalah DECIMAL[p,s] di mana 'p' adalah presisi, jumlah digit maksimum, dan 's' adalah skala, jumlah digit setelah desimal
Akibatnya, perbedaan utama antara tipe data float dan double adalah presisi [dari 0 hingga 23 untuk FLOAT, dan dari 24 hingga 53 untuk DOUBLE] dan akurasi [hingga sekitar 7 desimal untuk FLOAT, dan hingga sekitar 15 desimal untuk DOUBLE
Singkatnya, desimal lebih baik digunakan untuk jumlah tetap, seperti informasi moneter dan keuangan [harga, gaji, dll.], sedangkan float dan double – untuk perhitungan perkiraan di mana nilai pembulatan mungkin berdampak negatif
Tipe Data BIT
Tipe data BIT digunakan untuk menyimpan nilai biner di kolom dan menerima 0 atau 1. Kisaran nilai bit untuk kolom berkisar dari 1 hingga 64. Jika rentang tidak disetel, nilai defaultnya adalah 1
Misalnya, buat tabel working_hours dengan kolom hari sebagai BIT[7]. Di kolom hari, 1 berfungsi sebagai hari kerja dan 0 – sebagai hari libur
CREATE TABLE working_hours [
employee_id int NOT NULL AUTO_INCREMENT,
first_name varchar[45] NOT NULL,
last_name varchar[45] NOT NULL,
month varchar[8],
week int,
days bit[7],
PRIMARY KEY [employee_id]
];
Misalkan pada bulan April, karyawan dapat memiliki dua hari libur tambahan. Jadi, sisipkan baris baru dalam tabel menggunakan pernyataan INSERT INTO
INSERT INTO working_hours [employee_id, first_name, last_name, month, week, days]
VALUES [1, 'Jordan', 'Sanders', 'April', 2, B'1111100'];
_Ambil data dengan mengeksekusi pernyataan SELECT
SELECT * FROM working_hours wh;
Pada output, kita dapat melihat bahwa hasilnya tidak ditampilkan sebagai biner, dan MySQL memperlakukan tipe data BIT sebagai bilangan bulat – 124
Jadi, untuk mengambil data yang dikonversi ke biner, kita perlu menggunakan fungsi BIT[] dan melihat hasilnya
SELECT employee_id, first_name, last_name, month, week, BIN[days] FROM working_hours wh
Tipe Data Tanggal & Waktu MySQL
Untuk mengelola informasi tanggal dan waktu dalam database, digunakan tipe tanggal MySQL yang dibagi menjadi DATE, TIME, DATETIME, TIMESTAMP, dan YEAR
TypeUsageData type formatRangeDATESimpan hanya informasi tanggal di kolom tabel formatYYYY-MM-DD [tahun, bulan, dan tanggal]dari '1000-01-01' hingga '9999-12-31'TIMEMenampilkan waktu sajaHH. MM. Format SS [jam, menit, dan detik] dari '-838. 59. 59’ hingga ‘838. 59. 59’DATETIMEMenyimpan tanggal dan waktu di kolom YYYY-MM-DD HH. MM. SS [ tahun, bulan, dan tanggal, serta jam, menit, dan detik]dari '1000-01-01 00. 00. 00’ hingga ‘9999-12-31 23. 59. 59'DATETIMESimpan nilai tanggal dan waktu di kolom YYYY-MM-DD HH. MM. SS [ tahun, bulan, dan tanggal, serta jam, menit, dan detik]dari '1000-01-01 00. 00. 00’ hingga ‘9999-12-31 23. 59. 59’TIMESTAMPSimpan nilai tanggal dan waktu di kolom. Konversi nilai dari zona server koneksi ke UTC terjadi. YYYY-MM-DD HH. MM. SS [ tahun, bulan, dan tanggal, dan jam, menit, dan detik]dari '1970-01-01 00. 00. 01’ UTC sampai ‘2038-01-19 03. 14. 07’ UTCYEARMenyimpan hanya nilai tahun di kolomYYYY [tahun]dari ‘1901’ hingga ‘2155’Tipe Data Tanggal
Mari kita lihat pada contoh khusus cara membuat tabel karyawan dengan informasi tentang karyawan, termasuk tanggal lahir yang kami nyatakan dengan tipe DATE. Kemudian, sisipkan baris baru ke dalam tabel dan ambil data
-- create the employees table
CREATE TABLE employees[
employee_id INT AUTO_INCREMENT,
first_name varchar[45] NOT NULL,
last_name varchar[45] NOT NULL,
date_of_birth date,
PRIMARY KEY [employee_id]
];
-- insert data into the table
INSERT INTO employees [employee_id, first_name, last_name, date_of_birth]
VALUES [1, 'John', 'Sanders', '2000-01-19'];
-- retrieve data
SELECT * FROM employees e;
_Outputnya adalah sebagai berikut
DATETIME dan TIMESTAMP
DATETIME dan TIMESTAMP tampaknya serupa, meskipun memiliki beberapa perbedaan. Tipe data DATETIME membutuhkan 4 byte untuk menyimpan data, sedangkan tipe data TIMESTAMP membutuhkan 8 byte. Selain itu, DATETIME adalah tipe data konstan, dan TIMESTAMP bersifat temporal karena bergantung pada zona UTC
Mari tambahkan tanggal dan waktu hari pertama bekerja. Dalam hal ini, kita akan menggunakan tipe data DATETIME untuk kolom baru first_day_at_work
CREATE TABLE products [
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_item VARCHAR[255] NOT NULL,
use_by date,
price int,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
];
_0Outputnya adalah sebagai berikut
Tipe Data Waktu
Sekarang, mari kita tambahkan informasi tentang waktu karyawan tersebut harus mulai bekerja setiap hari. Untuk ini, perbarui tabel karyawan dengan menambahkan kolom start_to_work dengan tipe data MySQL TIME untuk nilainya
CREATE TABLE products [
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_item VARCHAR[255] NOT NULL,
use_by date,
price int,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
];
_1Hasilnya harus sebagai berikut
Tipe Data Tahun
Terakhir, kami akan menambahkan tahun ketika seorang karyawan disertifikasi ke tabel dan menyatakan tipe data TAHUN untuk kolom tersebut
CREATE TABLE products [
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_item VARCHAR[255] NOT NULL,
use_by date,
price int,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
];
2Tipe Data Spasial MySQL
Tipe data spasial menyimpan nilai geometri dan geografi di kolom tabel. MySQL mendukung nilai geometri tunggal [GEOMETRY, POINT, LINESTRING, POLYGON] dan beberapa nilai yang dikelompokkan dalam satu set [MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, dan GEOMETRYCOLLECTION]
Tabel tersebut memberikan deskripsi per tipe data spasial
TipeDeskripsiGEOMETRYMenyimpan semua jenis nilai geometriPOINTMenyimpan nilai koordinat X dan Y tunggal MySQLLINESTRINGMenyimpan sekumpulan titik yang membentuk kurvaPOLYGONSMenyimpan sekumpulan titik dalam geometri multisisiMULTIPOLYGONMenyimpan sekumpulan nilai beberapa titikTipe Data JSON
Dimulai dengan versi 5. 7. 8, MySQL mendukung tipe data JSON yang menyimpan dokumen JSON di kolom JSON dan memberikan akses ke elemen dokumen dengan mudah dan cepat. Format JSON memungkinkan pencarian cepat nilai-nilai di dalam dokumen menggunakan kunci atau indeks larik, yang pada gilirannya akan meningkatkan kinerja keseluruhan dan mengoptimalkan penyimpanan. Selain itu, JSON membantu memvalidasi dokumen dan jika ada nilai yang tidak valid, Anda akan mendapatkan error. Ukuran maksimumnya adalah 1 GB
Cara Mengubah Tipe Data di MySQL
Mempertimbangkan daftar tipe data MySQL yang dibahas dalam artikel, penting untuk mengubah tipe data default agar sesuai dengan kebutuhan kita.
Mari kita lihat contoh yang menjelaskan cara mengubah tipe data default di kolom MySQL menggunakan dbForge Studio for MySQL yang merupakan alternatif mutakhir untuk Workbench. Alat GUI MySQL dbForge menyediakan sejumlah besar fitur canggih untuk pengembangan, pengelolaan, dan penerapan basis data yang ditujukan untuk memaksimalkan produktivitas pengembang dan meningkatkan kinerja secara keseluruhan
Untuk mengubah tipe data untuk kolom tertentu, gunakan pernyataan ALTER. Sintaksnya adalah sebagai berikut
CREATE TABLE products [
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_item VARCHAR[255] NOT NULL,
use_by date,
price int,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
];
_3Sebagai contoh kita, kita akan menggunakan tabel karyawan. Untuk membuka skrip CREATE tabel, di Database Explorer, klik kanan tabel dan pilih Generate Script As > CREATE > To New SQL Window
Dalam dokumen SQL yang terbuka, ubah tipe data kolom first_day_at_work menggunakan pernyataan ALTER. Kemudian, jalankan kueri dengan mengklik Jalankan pada bilah alat SQL
Sekarang, ambil datanya. Di Database Explorer, klik kanan tabel dan pilih Retrieve Data
Alternatifnya, Anda bisa me-refresh daftar tabel di Database Explorer dan melihat tipe data yang diubah
Kesimpulan
Dalam artikel ini, kami telah meninjau tipe data MySQL dengan contoh, seperti string, numerik, tanggal dan waktu, spasial, dan JSON, serta mengeksplorasi tipe data yang disertakan di setiap grup. Selain itu kami mencontohkan cara mengubah tipe data pada kolom tabel MySQL dengan bantuan dbForge Studio for MySQL
Anda juga dapat menggunakan artikel berikut untuk mempelajari cara mempercepat dan mempermudah proses pengembangan dengan dbForge Studio for MySQL
- Migrasikan data dari MySQL ke PostgreSQL
- Buat database di MySQL
- Gunakan pernyataan SELECT di MySQL
- Gunakan tipe data integer MySQL
Unduh versi uji coba gratis selama 30 hari untuk menilai fitur dbForge Studio untuk MySQL agar yakin bahwa membeli lisensi penuh alat ini layak dilakukan untuk meningkatkan produktivitas serta pengembangan dan pengelolaan basis data dengan cara yang paling efisien