Apabila mereka bentuk medan jadual mysql, adakah int(5) bermakna panjang medan ialah 5?
Jika anda fikir begitu, sila teruskan membaca, saya percaya anda akan mendapat sesuatu yang baru.
Kami mencipta jadual baharu dengan hanya satu id kunci utama dan satu medan panjang, dengan medan panjang ditetapkan kepada int(5).
#新建test表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `length` int(5) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Adakah benar medan panjang hanya boleh menyimpan nombor dengan panjang tidak lebih daripada 5. Mari cuba masukkan sekeping data.
Kami memasukkan sekeping data yang lebih besar 123456789. Data ini mempunyai sejumlah 9 digit untuk melihat sama ada ia boleh dimasukkan seperti biasa.
#插入一条大数据 insert into test (length) values (123456789);
Ternyata int(5) boleh memasukkan data dengan panjang lebih daripada 5, jadi kini sudah pasti int(5) tidak mewakili lebar data.
#查看插入数据 mysql> select * from test; +------------+-----------+ | id | length | +------------+-----------+ | 1 | 123456789 | +------------+-----------+
Dalam mysql, panjang medan int sebenarnya ditetapkan, iaitu 4 bait Sama ada anda menggunakan int(11) atau int(5), panjang medan ditetapkan pada 4 bait.
int(5) sebenarnya digunakan bersama dengan atribut zerofill yang lain, yang bermaksud bahawa jika lebar nilai medan kurang daripada 5, 0 akan ditambah secara automatik di hadapan Jika lebarnya lebih besar daripada atau sama dengan 5, maka Tidak perlu menambah 0.
#int(5) length 字段添加了 zerofill 属性 mysql> select * from test; +----+--------+ | id | length | +----+--------+ | 1 | 00888 | | 2 | 00012 | | 3 | 12345 | | 4 | 123456 | +----+--------+
Perhatikan bahawa atribut zerofill mesti ditambahkan pada medan, jika tidak int(5) tidak akan berfungsi.
#int(5) length 字段没有 zerofill 属性 mysql> select * from test; +----+--------+ | id | length | +----+--------+ | 1 | 888 | | 2 | 12 | | 3 | 12345 | | 4 | 123456 | +----+--------+
Untuk menetapkan panjang medan integer, anda harus memilih jenis tinyint, smallint, mediumint, int, bigint Jenis integer ini mewakili panjang tetap.
Perhatikan bahawa jika anda ingin menyimpan integer yang ditandatangani, atribut zerofill tidak disokong dan akan ditukar secara automatik kepada 0. Ini perlu dipertimbangkan dalam sesetengah perniagaan yang melibatkan pengurangan.
Atas ialah kandungan terperinci Berapakah panjang int(5) dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!