INT (10) ve INT arasındaki fark (benim kod uygulanırken) (12) Nedir?

3 Cevap php

I (12) INT (10) veya INT vs INT kullanırsanız (8) bu aslında kodu kullanarak bana açısından ne yapacak?

(Bu, kapalı bir spin bir previous question) Ben kılavuzları aracılığıyla okumak ve ben dediklerini anlıyorum, ama ben aslında kodlama benim php / mysql için geçerli olacağını bilmiyorum.

Birisi bu aslında önemli nerede olacağını bir örnek verebilir misiniz?

3 Cevap

Kısa cevap: hiçbir fark yoktur.

Ekran genişliği "meta data" geri geçirilir. Bu o faydalanmak için uygulama kalmış. Normalde sadece göz ardı ediyor. Ben mysql fonksiyonlarını kullanarak alabilirsiniz sanmıyorum, ama mysqli_fetch_field_direct kullanarak mysqli'nin ile mümkün olabilir.

MySQL türlerini tamsayı argüman veri depolama ya da her veri türü tarafından desteklenen değerler aralığında üzerinde hiçbir etkisi yoktur.

Argümanı sadece Jonathan Fingland bahseder gibi uygulamalar tarafından kullanılıyor olabilir ekran genişliği için de geçerlidir. ZEROFILL seçeneği ile kombinasyon halinde kullanıldığında da gelir:

CREATE TABLE foo (
  i INT(3) ZEROFILL, 
  j INT(6) ZEROFILL, 
  k INT(11) ZEROFILL
);
INSERT INTO foo (i, j, k) VALUES (123, 456, 789);
SELECT * FROM foo;

+------+--------+-------------+
| i    | j      | k           |
+------+--------+-------------+
|  123 | 000456 | 00000000789 |
+------+--------+-------------+

ZEROFILL emin veri tamsayı türü argüman eşit basamak en az sayıya sıfır dolgulu yapar görün.

Olmadan ZEROFILL, veri uzay-yastıklı, ama alanlarda genellikle zaten kesilmiş olduğundan, bu farkı görmek zor.

Bu PHP kodu üzerinde ne etkisi var? Yoktur. Eğer çıkış sütunlu veri, ya da uzay-pad ya da sıfır-pad değerlerine gerekiyorsa, kullanımı daha esnek sprintf() ,

Bunu iade veriler üzerinde hiçbir etkiye sahip olmadığı bir şey değiştirmek zorunda olmamalıdır. Bilgi kullanmak isteyen uygulamalar tarafından kullanılabilir.

Bkz http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Başka bir uzantısı isteğe bağlı olarak (örneğin, INT (4)) tipi için temel anahtar kelime aşağıdaki display width, parantez içinde tamsayı veri tiplerinin belirlenmesi için MySQL ile desteklenir. Bu isteğe bağlı ekran genişliği ile sütun için belirtilen genişliğinden daha küçük bir genişliğe sahip tamsayı değerlerini görüntülemek için uygulamalar tarafından kullanılıyor olabilir sol doldurma bunları boşluklarla. (İşte bu genişlik sonuç kümeleri ile döndü meta mevcut olduğunu. Whether it is used or not is up to the application.)

Ekran genişliği does not constrain the range of values sütunda saklanabilir, ne de sütun için belirtilen aşan bir genişliğe sahip olan değerler için görüntülenen basamak sayısı. Örneğin, SMALLINT olarak belirtilen sütun (3) -32.768-32.767 her zamanki SMALLINT menzile sahip ve üç karakter tarafından izin verilen aralığın dışında değerler fazla üç karakter kullanılarak görüntülenir.

(Vurgu benim)