私は最近、SQLのエキサイティングな世界を掘り下げました。私はまだ概念に頭を悩ませようとしています。私はオンラインでチュートリアルをフォローしています。これらのチュートリアルの多くには、このようなテーブルを作成するためのSQLが含まれています。
CREATE TABLE `users` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`username` varchar(10) NOT NULL,
`password` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
のような行を見た後id tinyint(4)
、パラメータがデータ型に渡されるのか疑問に思いました。「つまり、idは-128から127までの任意の整数(4文字以内)にすることができますか?」と思いました。
だから私はドキュメントを調べました。これは、MySQLドキュメントが数値タイプ属性について言わなければならないことです。
表示幅は、列に格納できる値の範囲を制限しません。また、列の表示幅よりも広い値が正しく表示されるのを妨げることもありません。たとえば、SMALLINT(3)として指定された列の通常のSMALLINT範囲は-32768〜32767であり、3桁で許可されている範囲外の値は、3桁を超える値を使用して完全に表示されます。
オプションの(非標準)属性ZEROFILLと組み合わせて使用すると、スペースのデフォルトのパディングはゼロに置き換えられます。たとえば、INT(4)ZEROFILLとして宣言された列の場合、値5は0005として取得されます。
したがって、私がこの権利を読んでいる場合、INT(255)
ゼロフィルを使用していない限り、のようなことを宣言することは無意味です。データベースがそのデータベースに十分なスペースを割り当てるデータ型を宣言するのは理にかなっています。
では、なぜ人々はこのようなコードを書くのでしょうか?それは目的を果たしますか?私は完全に誤解していますか?