質問: ``` create table table_name(id int auto_increment, email varchar(255),password char(30)); ``` のようなテーブルを作成しようと思っているのですが(数字)はないとまずいのでしょうか?必要な場合idのintやpasswordのcharの数字はいくつにするのがいいのでしょうか?
回答: `(数字)`は、データの長さを表すもので、型自体で長さの決まらない`varchar`などでは必須です。 `password`はパスワード欄になりますが、基本的にハッシュ化して保存するでしょうし、ハッシュ関数の結果に合わせてセットするのが適切です(たとえば、PHPのpassword_hashを使う場合、「60文字以上、255文字程度」用意しておいた方がいい、とのことです)。足りなければ、当然動作はおかしくなります。 一方、`int`はデータ型自体でサイズが決まっていて、後のカッコは、`ZEROFILL`する時の長さです。通常はデフォルトの`(11)`のまま使います。