Berapa ukuran kolom int(11)
dalam mysql dalam byte?
Dan Nilai maksimum yang dapat disimpan di kolom ini?
mysql
sebelum kedatangan saya. Thx
Berapa ukuran kolom int(11)
dalam mysql dalam byte?
Dan Nilai maksimum yang dapat disimpan di kolom ini?
mysql
sebelum kedatangan saya. Thx
Jawaban:
Suatu INT
akan selalu menjadi 4 byte tidak peduli berapa panjang yang ditentukan.
TINYINT
= 1 byte (8 bit)SMALLINT
= 2 byte (16 bit)MEDIUMINT
= 3 byte (24 bit)INT
= 4 byte (32 bit)BIGINT
= 8 byte (64 bit).Panjangnya hanya menentukan berapa banyak karakter yang akan pad ketika memilih data dengan klien baris perintah mysql. 12345 yang disimpan sebagai int(3)
masih akan ditampilkan sebagai 12345, tetapi jika disimpan karena int(10)
masih akan ditampilkan sebagai 12345, tetapi Anda memiliki opsi untuk memasukkan lima digit pertama. Misalnya, jika Anda menambahkannya ZEROFILL
akan ditampilkan sebagai 0000012345.
... dan nilai maksimumnya adalah 2147483647 (Ditandatangani) atau 4294967295 (Tidak Ditandatangani)
INT ( x ) akan membuat perbedaan hanya dalam hal tampilan , yaitu untuk menunjukkan angka dalam x digit, dan tidak terbatas pada 11. Anda memasangkannya menggunakan ZEROFILL
, yang akan menambahkan nol sampai cocok dengan panjang Anda.
Jadi, untuk sejumlah x inINT(x)
jika nilai yang disimpan memiliki angka kurang dari x , ZEROFILL
akan menambah nol.
INT (5) ZEROFILL dengan nilai tersimpan 32 akan menampilkan 00032
INT (5) dengan nilai tersimpan 32 akan menunjukkan 32
INT dengan nilai tersimpan 32 akan menunjukkan 32
jika nilai yang disimpan memiliki lebih banyak digit daripada x , itu akan ditampilkan apa adanya.
INT (3) ZEROFILL dengan nilai tersimpan 250000 akan menampilkan 2.500
INT (3) dengan nilai tersimpan 250000
INT akan menunjukkan 250000 INT dengan nilai tersimpan 250000 akan menunjukkan 2.500
Nilai aktual yang disimpan dalam database tidak terpengaruh, ukurannya masih sama, dan setiap perhitungan akan berperilaku normal.
Ini juga berlaku untuk BIGINT, MEDIUMINT, SMALLINT, dan TINYINT.
ZEROFILL
.
Menurut di sini , int(11)
akan mengambil 4 byte ruang yaitu 32 bit ruang dengan 2^(31) = 2147483648
nilai maks dan -2147483648
nilai min. Satu bit untuk tanda.
Seperti yang dikatakan orang lain, nilai minumum / maksimum yang dapat disimpan oleh kolom dan berapa banyak penyimpanan yang diperlukan dalam byte hanya ditentukan oleh jenisnya, bukan panjangnya.
Banyak jawaban ini mengatakan bahwa (11)
bagian tersebut hanya mempengaruhi lebar tampilan yang tidak sepenuhnya benar, tetapi kebanyakan.
Definisi int(2)
dengan tidak ada ZEROFILL ditentukan akan:
100
100
saat output (tidak 0
atau 00
)Satu-satunya hal yang (2)
akan dilakukan adalah jika zerofill juga ditentukan :
1
akan ditampilkan 01
.Cara terbaik untuk melihat semua nuansa adalah menjalankan:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`int1` int(10) NOT NULL,
`int2` int(3) NOT NULL,
`zf1` int(10) ZEROFILL NOT NULL,
`zf2` int(3) ZEROFILL NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `mytable`
(`int1`, `int2`, `zf1`, `zf2`)
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);
select * from mytable;
yang akan menghasilkan:
+----+-------+-------+------------+-------+
| id | int1 | int2 | zf1 | zf2 |
+----+-------+-------+------------+-------+
| 1 | 10000 | 10000 | 0000010000 | 10000 |
| 2 | 100 | 100 | 0000000100 | 100 |
+----+-------+-------+------------+-------+
Jawaban ini diuji terhadap MySQL 5.7.12 untuk Linux dan mungkin atau mungkin tidak bervariasi untuk implementasi lainnya.
Berapa ukuran kolom int (11) di mysql dalam byte?
(11)
- atribut int
tipe data ini tidak ada hubungannya dengan ukuran kolom. Ini hanya lebar layar dari tipe data integer. Dari 11.1.4.5. Atribut Tipe Numerik :
MySQL mendukung ekstensi untuk secara spesifik menentukan lebar tampilan tipe data integer dalam tanda kurung mengikuti kata kunci dasar untuk tipe tersebut. Misalnya, INT (4) menetapkan INT dengan lebar tampilan empat digit.
Penjelasan yang baik untuk ini dapat ditemukan di sini
Untuk meringkas: Angka N dalam int (N) sering bingung dengan ukuran maksimum yang diperbolehkan untuk kolom, seperti halnya dalam kasus varchar (N).
Tapi ini tidak terjadi dengan tipe data Integer - angka N dalam tanda kurung bukan ukuran maksimum untuk kolom, tetapi hanya parameter untuk memberitahu MySQL berapa lebar untuk menampilkan kolom pada saat data tabel dilihat melalui MySQL konsol (saat Anda menggunakan atribut ZEROFILL).
Angka dalam tanda kurung akan memberi tahu MySQL berapa banyak nol untuk pad integer masuk. Misalnya: Jika Anda menggunakan ZEROFILL pada kolom yang diatur ke INT (5) dan angka 78 dimasukkan, MySQL akan memasukkan nilainya dengan nol sampai angka tersebut memenuhi angka dalam tanda kurung. yaitu 78 akan menjadi 00078 dan 127 akan menjadi 00127. Singkatnya: Jumlah dalam tanda kurung digunakan untuk tujuan tampilan.
Di satu sisi, angka dalam kurung agak tidak berguna kecuali Anda menggunakan atribut ZEROFILL.
Jadi ukuran untuk int akan tetap sama yaitu, -2147483648 hingga 2147483648 untuk ditandatangani dan 0 hingga 4294967295 untuk yang tidak ditandatangani(~ 2,15 miliar dan 4,2 miliar, yang merupakan salah satu alasan mengapa pengembang tetap tidak mengetahui cerita di balik Angka N dalam tanda kurung, karena hampir tidak mempengaruhi database kecuali jika berisi lebih dari 2 miliar baris), dan dalam hal byte akan menjadi 4 byte .
Untuk informasi lebih lanjut tentang ukuran / rentang Jenis Integer, lihat Manual MySQL
Meskipun jawaban ini tidak mungkin terlihat, saya pikir klarifikasi berikut layak dibuat:
SEBUAH RINCIAN Detail
lebar layar, tampaknya, dimaksudkan untuk memberikan beberapa metadata tentang berapa banyak nol untuk ditampilkan dalam angka yang diisi nol.
Ini TIDAK benar-benar membatasi panjang angka yang dikembalikan dari kueri jika angka itu melampaui lebar tampilan yang ditentukan.
Untuk mengetahui panjang / lebar sebenarnya yang diizinkan untuk tipe data integer di MySQL, lihat daftar & tautan: ( jenis: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT );
Jadi dengan mengatakan hal di atas, Anda dapat mengharapkan lebar tampilan tidak mempengaruhi hasil dari kueri standar, kecuali kolom ditentukan sebagai kolom ZEROFILL
ATAU
dalam hal data ditarik ke dalam suatu aplikasi & aplikasi tersebut sedang mengumpulkan lebar tampilan untuk digunakan untuk beberapa jenis padding lainnya.
Referensi Utama: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean
n
, jadi ... ya, itu omong kosong. Itu hanya melakukan apa saja dengan zerofill.
Dalam MySQL integer int(11)
memiliki ukuran 4 byte yang sama dengan 32 bit.
Nilai yang ditandatangani adalah: - 2^(32-1) to 0 to 2^(32-1)-1
= -2147483648 to 0 to 2147483647
Nilai yang tidak ditandatangani adalah: 0 to 2^32-1
= 0 to 4294967295
menurut buku ini :
MySQL memungkinkan Anda menentukan "lebar" untuk tipe integer, seperti INT (11). Ini tidak berarti untuk sebagian besar aplikasi: ini tidak membatasi rentang nilai hukum, tetapi hanya menentukan jumlah karakter yang akan disediakan oleh alat interaktif MySQL untuk tujuan tampilan. Untuk tujuan penyimpanan dan komputasi, INT (1) identik dengan INT (20).