solusi harus dipilih, bahkan jika itu berarti beberapa adaptasi manual
dalam kode klien. Di sisi lain, saya tidak yakin tentang yang terbaik
larutan
1. Pemetaan ke tipe berikutnya yang lebih tinggi menyebabkan ketidakcocokan, seperti
yang Anda khawatirkan. Selain itu, akan mungkin untuk mencoba
masukkan (pendek) 300 ke dalam kolom unsigned tinyint, yang akan mengarah ke
masalah waktu proses. Meskipun ini adalah solusi yang bagus untuk mengambil data, itu adalah
yang buruk untuk dimasukkan
2. Tidak memetakan sama sekali menyebabkan kebingungan, karena Java tidak
secara eksplisit mendukung tipe yang tidak ditandatangani. Padahal ini yang paling benar
solusi, itu juga yang paling tidak ramah pengguna
Mungkin, opsi No. 2 lebih baik dan kemudian saya dapat menambahkan metode utilitas ke
Rekam, Simpan, dan Hasil, untuk mengambil nomor yang tidak ditandatangani
menurut operasi seperti yang didokumentasikan di sini
http. //mindprod. com/jgloss/unsigned. html
Hal serupa dapat dilakukan untuk memasukkan data, seperti yang Anda jelaskan
Perhatikan bahwa dengan UNSIGNED, Anda pada dasarnya memberi diri Anda dua kali lebih banyak ruang untuk bilangan bulat karena Anda secara eksplisit menentukan bahwa Anda tidak memerlukan angka negatif
Saat memutuskan apakah akan menggunakan SIGNED_ atau UNSIGNED untuk bidang, tanyakan pada diri sendiri apakah bidang ini akan pernah berisi nilai negatif. Jika jawabannya tidak, maka Anda menginginkan tipe data UNSIGNED. Kasus penggunaan umum untuk UNSIGNED_ adalah untuk bidang id kenaikan otomatis dalam tabel
Untuk menentukan kolom id peningkatan otomatis UNSIGNED
SIGNED_3Untuk menentukan kolom SIGNED SIGNED5 untuk mewakili laba atas investasi
SIGNED6Karena kolom SIGNED_5 harus dapat mengambil nilai negatif untuk mewakili kerugian atas investasi, kami telah menetapkan kolom sebagai SIGNED
Pada artikel ini, Anda akan belajar tentang tipe data integer SIGNED dan UNSIGNED di MySQL. Artikel ini memberikan informasi tentang tipe integer dengan atribut ZEROFILL, AUTO_INCREMENT, dan display_width, serta menjelaskan contoh kapan dan bagaimana menggunakan tipe data integer
Isi
Apa itu MySQL INTEGER
Di MySQL, INTEGER (INT) adalah nilai numerik tanpa desimal. Ini mendefinisikan bilangan bulat yang dapat disimpan dalam bidang atau kolom. Selain itu, MySQL mendukung atribut display_width (misalnya, INT(1)) dan atribut ZEROFILL, yang secara otomatis menambahkan nol ke nilai tergantung pada lebar tampilan
Kecuali untuk tipe data standar INT dan SMALLINT, MySQL mendukung tipe data numerik TINYINT, MEDIUMINT, dan BIGINT yang dapat DITANDA dan DITANDATANGANI
Tabel menampilkan penyimpanan yang diizinkan dalam byte, nilai maksimum dan minimum dari tipe data integer SIGNED dan UNSIGNED
Lapeng (byte) Nilai minimum menandatangani nilai minimum unsignedmaMaxiMium valueMaxiMum nilai unsignedTinyInt1-1280127255.838608888888607167777726462860808388888607167777777726262628628826Biasanya, tipe data INTEGER digunakan untuk merepresentasikan ID, tanggal dan waktu (misalnya, DATETIME, DATE, YEAR, TIMESTAMP), atribut lebar dan tinggi, dll.
DITANDATANGANI vs TIDAK DITANDATANGANI
Seperti yang disebutkan sebelumnya, tipe data INTEGER dapat UNSIGNED dan SIGNED. UNSIGNED hanya dapat menyimpan nol dan angka positif dalam kolom. Jika nilai dalam kolom tidak pernah menggunakan angka negatif atau jika perlu menggunakan rentang angka atas yang lebih besar untuk kolom, Anda dapat menyetel UNSIGNED, yang pada gilirannya dapat menghasilkan indeks yang lebih cepat
SIGNED dapat mengizinkan angka nol, positif, dan negatif. Dengan nilai MySQL sebagai SIGNED, satu bit diambil untuk simbol tanda dibandingkan dengan yang tidak ditandatangani, ketika mereka tidak memiliki tanda sebelum nilai
Di MySQL, INT biasanya dipilih sebagai kunci utama dan dapat memiliki atribut AUTO_INCREMENT di kolom. Misalnya, saat Anda menambahkan NULL atau 0 ke atribut INT AUTO_INCREMENT, nilai kolom secara otomatis bertambah dan diubah ke nilai berurutan berikutnya yang dihasilkan dalam urutan menaik. Saat Anda menambahkan nilai bukan nol ke atribut INT AUTO_INCREMENT, nilai diterima dan urutannya disetel ulang yang berarti bahwa nilai yang dimasukkan mendahului nilai berurutan yang dihasilkan secara otomatis (i. e. nilai+1). Perlu diingat bahwa kolom dengan AUTO_INCREMENT tidak menyimpan nilai negatif, yang berarti kolom dengan AUTO_INCREMENT tidak ditandatangani secara default
Apa itu Tipe Data UNSIGNED INT?
Ketika kita mengatur kolom MySQL INT UNSIGNED, itu berarti nilai negatif tidak dapat dimasukkan ke dalam kolom ini. Nilai rentang maksimum dengan tipe data UNSIGNED adalah 4294967295, sedangkan minimumnya adalah 0. Jadi, jika Anda memasukkan nilai negatif atau yang melebihi nilai maksimum, Anda akan mendapatkan kesalahan karena itu akan menjadi nilai di luar jangkauan. Mari kita lihat contoh cara membuat tabel dengan kolom INT UNSIGNED. Karena ID biasanya merupakan tipe data numerik, kami akan menggunakannya sebagai kunci primer INT UNSIGNED
Buat tabel dengan contoh data UNSIGNED
Sebagai contoh demo, kami akan menggunakan dbForge Studio untuk MySQL
Untuk memulainya, buat tabel produk dengan total_amount sebagai tipe data INT UNSIGNED. Untuk ini, pada bilah alat standar, klik New SQL, ketik kueri, dan klik Jalankan atau tekan F5
Kemudian, sisipkan baris baru – VALUES – di tabel MySQL dan jalankan kueri
Untuk memeriksa hasilnya, ambil data. Untuk ini, di Database Explorer, klik kanan tabel produk dan pilih Retrieve Data. Seperti yang Anda lihat, nilainya ditambahkan
Dan sekarang, masukkan baris baru tetapi dengan angka negatif untuk kolom INT UNSIGNED dan jalankan kueri
INSERT INTO products (product_id, product_item, category, total_amount) VALUES (2, 'apples', 'fruits', -5);Seperti yang Anda lihat, saat menjalankan kueri, kami mendapat kesalahan karena UNSIGNED tidak mendukung nilai negatif
Lebar Tampilan INTEGER. INT()
Di MySQL, Anda dapat mengatur lebar tampilan untuk tipe data INT. Lebar tampilan adalah angka dalam tanda kurung yang mewakili panjang keluaran, i. e. berapa banyak karakter yang harus ditampilkan di kolom saat mengambil data untuk kolom. Jadi, itu penting hanya saat menampilkan output
Pertimbangkan yang berikut ini. Jika Anda menetapkan 5 sebagai nilai untuk kolom int(1), int(6), int(10), dan int(11), semuanya akan menampilkan nilai yang sama – 5. Sebenarnya, lebar tampilan membuat perbedaan saat Anda menyetel atribut ZEROFILL. Dalam hal ini, hasilnya akan menampilkan masing-masing 5, 000005, 0000000005, dan 00000000005
Perhatikan bahwa lebar tampilan tidak memengaruhi rentang nilai maksimum dan minimum. Nilai minimum dan maksimum kolom dan ukuran penyimpanan (dalam byte) hanya bergantung pada tipe bilangan bulat yang Anda gunakan tetapi tidak pada panjangnya. Nilai int(1), int(6), int(10), dan int(11) akan memiliki nilai maksimum dalam rentang yang sama dengan 2147483647 (untuk INT yang ditandatangani) dan 4294967295 (untuk INT yang tidak ditandatangani)
MySQL INT dengan atribut ZEROFILL
Jika Anda perlu mengganti spasi dengan nol, Anda dapat menggunakan atribut ZEROFILL untuk kolom MySQL INT UNSIGNED. Misalnya, untuk kolom INT(3) ZEROFILL dengan nilai 1, hasil yang Anda ambil adalah 001
Catatan. Ingatlah bahwa UNSIGNED ditambahkan secara otomatis ke kolom numerik
Lihat contohnya. Kami membuat tabel MySQL ProductsNew yang memiliki kolom dengan atribut ZEROFILL
Dalam dokumen SQL baru, jalankan pernyataan CREATE berikut
Kemudian, sisipkan baris baru di tabel ProductsNew menggunakan pernyataan INSERT INTO dan jalankan
INSERT INTO ProductsNew (product_id, product_item, category, weight, review) VALUES (3, 'tomatoes', 'vegetables', 5, 7);Ambil data dan periksa hasilnya
Perlu diingat bahwa untuk MySQL 8. 0. 17, atribut ZEROFILL telah ditinggalkan untuk tipe data numerik
Jenis INT MySQL
Seperti yang disebutkan sebelumnya, MySQL mendukung tipe data standar SQL INT dan SMALLINT. Selain itu, MySQL mendukung TINYINT, MEDIUMINT, dan BIGINT. Jenis data bilangan bulat apa yang dipilih tergantung pada data yang akan Anda simpan di kolom. Misalnya, jika Anda yakin bahwa nilai di kolom tidak akan melebihi nilai maksimum dalam rentang INT – 255, maka Anda dapat menggunakan tipe data TINYINT, yang pada gilirannya akan meningkatkan kinerja database. Namun, jika Anda perlu menyimpan data yang sangat besar seperti basis klien yang akan terus bertambah, akan lebih baik menggunakan INT atau BIGINT. Selain itu, jika data yang disimpan di kolom tidak akan pernah menggunakan nilai negatif, UNSIGNED harus disetel. Rentang INT akan sama, misalnya untuk INT(5), INT(1), INT(100)
Mari kita lihat masing-masing tipe data integer dan contoh penggunaannya
Contoh TINYINT
TINYINT adalah bilangan bulat yang sangat kecil. Nilai SIGNED minimum dan maksimum masing-masing adalah -128 dan 127, sedangkan untuk nilai UNSIGNED rentang TINYINT adalah dari 0 hingga 255. TINYINT menggunakan 1 byte per baris. Ini adalah pilihan terbaik bila Anda ingin menghemat ruang pada disk Anda dan meningkatkan kinerja
Perhatikan contoh cara menggunakan bilangan bulat TINYINT. Buat tabel StudentGroup dengan pernyataan CREATE
CREATE TABLE StudentGroup( id tinyint AUTO_INCREMENT, Name varchar(255) NOT NULL, Surname varchar(255) NOT NULL, Grade tinyint(4) UNSIGNED, PRIMARY KEY (id) );Kemudian, masukkan data ke dalam kolom menggunakan pernyataan INSERT
INSERT INTO StudentGroup (id, Name, Surname, Grade) VALUES (1, 'John', 'Smith', 5); _Setelah mengambil data, kami melihat bahwa kueri berhasil diselesaikan
Namun jika kita memasukkan nilai yang tidak termasuk dalam rentang dan mencoba mengambil data,
INSERT INTO StudentGroup (id, Name, Surname, Grade) VALUES (1, 'John', 'Smith', -5);kita akan mendapatkan error 'Out of range value for column' Grade' at row 12′
Perhatikan bahwa dimulai dengan MySQL 8. 0, lebar tampilan tidak digunakan lagi untuk TINYINT dan Anda harus memperhitungkannya saat bermigrasi ke versi baru. Namun, penghentian ini tidak memengaruhi TINYINT(1), tetapi penting bagi TINYINT(4)
Contoh KECIL
SMALLINT adalah bilangan bulat kecil. Kisaran SMALLINT untuk nilai SIGNED adalah dari -32768 hingga 32767. Nilai minimum dan maksimum untuk SMALLINT UNSIGNED masing-masing adalah 0 dan 65535. Ukurannya 2 byte per baris
Contoh cara menggunakan SMALLINT adalah sebagai berikut. Buat tabel SmallintTable menggunakan pernyataan CREATE
CREATE TABLE SmallintTable( ID smallint AUTO_INCREMENT, value_1 smallint SIGNED, value_2 smallint(6) UNSIGNED, PRIMARY KEY (id) );_Sisipkan nilai kolom yang sesuai dengan rentang SMALLINT dan jalankan kueri
INSERT INTO SmallintTable (ID, value_1, value_2) VALUES (1, -768, 0);Setelah mengambil data, kueri diselesaikan tanpa kesalahan
Sekarang, ubah nilainya dengan memasukkan data yang tidak termasuk dalam rentang SMALLINT
INSERT INTO SmallintTable (ID, value_1, value_2) VALUES (1, 0, 65536);_Akibatnya, Anda akan melihat pesan kesalahan bahwa nilainya di luar kisaran
Perhatikan bahwa dimulai dengan MySQL 8. 0, lebar tampilan tidak digunakan lagi untuk SMALLINT dan Anda harus memperhitungkannya saat bermigrasi ke versi baru. Namun, penghentian ini tidak memengaruhi SMALLINT(1)
Contoh SEDANG
MEDIUMINT adalah bilangan bulat berukuran sedang. Nilai minimum dan maksimum untuk MEDIUMINT SIGNED masing-masing adalah -8388608 dan 8388607. Kisaran untuk nilai UNSIGNED minimum dan maksimum masing-masing sama dengan 0 dan 16777215. Ukurannya 3 byte per baris
Contoh cara menggunakan MEDIUMINT adalah sebagai berikut. Pertama, buat tabel MediumIntTable dengan pernyataan CREATE
CREATE TABLE MediumIntTable( ID mediumint AUTO_INCREMENT, value_1 mediumint, value_2 mediumint(6) UNSIGNED, PRIMARY KEY (ID) );_Kemudian, tambahkan nilai yang benar ke kueri, ambil data untuk melihat apakah semuanya berfungsi dengan benar
CREATE TABLE ProductsNew( product_id INT AUTO_INCREMENT, product_item varchar(255) NOT NULL, category varchar(255) NOT NULL, weight int(2) ZEROFILL, review int(3) ZEROFILL, PRIMARY KEY (product_id) );0Setelah itu, ubah nilainya menjadi nilai yang melebihi rentang yang diperbolehkan.
CREATE TABLE ProductsNew( product_id INT AUTO_INCREMENT, product_item varchar(255) NOT NULL, category varchar(255) NOT NULL, weight int(2) ZEROFILL, review int(3) ZEROFILL, PRIMARY KEY (product_id) );_1Akibatnya, muncul pesan kesalahan yang menginformasikan bahwa nilai_2 berada di luar rentang
Perhatikan bahwa dimulai dengan MySQL 8. 0, lebar tampilan tidak digunakan lagi untuk MEDIUMINT dan Anda harus memperhitungkannya saat bermigrasi ke versi baru. Namun, penghentian ini tidak memengaruhi MEDIUMINT(1)
Contoh BESAR
BIGINT adalah bilangan bulat besar. Nilai minimum dan maksimum untuk SIGNED masing-masing adalah – -263 dan 263-1. Kisaran nilai minimum dan maksimum untuk UNSIGNED masing-masing sama dengan 0 dan 264-1. Ukurannya 8 byte per baris
Contoh cara menggunakan BIGINT adalah sebagai berikut. Mari buat tabel BigIntTable dengan tipe data BIGINT dan atribut AUTO_INCREMENT untuk kolom ID. Kemudian, tambahkan ke kueri angka negatif sebagai nilai_1 dan angka positif sebagai nilai_2 yang termasuk dalam rentang
CREATE TABLE ProductsNew( product_id INT AUTO_INCREMENT, product_item varchar(255) NOT NULL, category varchar(255) NOT NULL, weight int(2) ZEROFILL, review int(3) ZEROFILL, PRIMARY KEY (product_id) );_2Setelah itu, ambil data untuk memastikannya berfungsi dengan benar
Setelah selesai, ubah nilainya menjadi nilai yang melebihi rentang yang diizinkan
CREATE TABLE ProductsNew( product_id INT AUTO_INCREMENT, product_item varchar(255) NOT NULL, category varchar(255) NOT NULL, weight int(2) ZEROFILL, review int(3) ZEROFILL, PRIMARY KEY (product_id) );_3Akibatnya, muncul pesan kesalahan yang menginformasikan bahwa nilai_2 berada di luar rentang
Kami ingin menyebutkan bahwa menggunakan INT sebagai kunci primer, kunci asing, atau indeks sebagai ganti BIGINT dapat menjadi poin penting dalam meningkatkan kinerja, menghemat ruang disk, dan mengurangi ukuran indeks
Perhatikan bahwa dimulai dengan MySQL 8. 0, lebar tampilan tidak digunakan lagi untuk BIGINT dan Anda harus mempertimbangkannya saat bermigrasi ke versi baru. Namun, penghentian ini tidak memengaruhi BIGINT(1)
Kesimpulan
Pada artikel ini, kami telah meninjau tipe data MySQL INTEGER, nilai SIGNED dan UNSIGNED, atribut AUTO_INCREMENT, ZEROFILL, dan display_width. Bergantung pada proyek Anda, Anda harus memilih tipe data INTEGER mana yang paling cocok untuk Anda. Juga, artikel ini memberikan contoh bagaimana dan kapan tipe data INTEGER di MySQL
Unduh versi uji coba gratis selama 30 hari untuk mencoba dan menilai semua fitur berharga dan canggih dari dbForge Studio untuk MySQL dan alat dbForge MySQL lainnya yang secara drastis meningkatkan kinerja Anda, memaksimalkan produktivitas, dan memungkinkan Anda mengatasi tugas pengembangan dan pengelolaan database dengan cepat dan mudah