2

私は登録フォームのテーブルに取り組んでいます。そのフィールド/列には次のものがあります。

student_no (主キー) と年齢

student_no には、8 つの数字とダッシュを含む 9 文字の固定長の値が保持されます (例: 11-423685、12-537859、12-974156)。

char と varchar のどちらを使用すればよいかわかりません。使用する前に 2 つの型について詳しく知りたかったからです。具体的には:

  1. これらのタイプのいずれかまたは両方が、キーボード上のさまざまな記号 (-、@、_、$、# など) を含む値を保持できますか? たとえば、学生番号にダッシュを含める必要がある場合などです。

  2. char に長さ 9 を指定すると、長さ 8 以下の値を指定するのは無効になります

  3. その他の注意すべき重要な違いがある場合

年齢に関しては、tinyint を使用する場合、長さを指定する必要がありますか? または、phpMyAdmin の長さフィールドを空白のままにしておく必要がありますか?

注 : これは実際には学校の演習であり、14 のフィールドを使用して作業登録フォームを作成するように指示されているため、日付を使用する必要がないように、今のところ誕生日を使用しないことにしました。

4

2 に答える 2

2

INT では、数値以外の書式設定は許可されていません。VARCHAR です。

ただし、INT を使用すると検索が高速になるため、学生番号を表すには INT を使用することをお勧めします。

フォーマットを使用して、学生番号をハイフン付きで出力できます。データベースは、最も効率的な形式 (形式化されていない数値) で格納する必要があります。

また、数値の年齢ではなく、日付を使用して生年月日を保存することをお勧めします。これにより、時間が経つにつれて年齢が変化する問題を防ぐことができます。繰り返しますが、プレゼンテーションの出力で年齢を計算できます。

于 2012-12-02T01:59:35.827 に答える
2

CHAR()変だ。これは固定長の文字列であり、短い値に設定しようとするとスペースが埋め込まれます。使用するのに適切であることはほとんどありません。存在していたことを忘れてしまっても、見逃すことはないでしょう。

VARCHAR()ほとんどの場合、期待どおりに機能します。最大長までの任意の文字列 (任意の文字を含む) を含めることができます。

年齢を保存しないでください。生年月日を保存します ( のような型を使用DATE)。しかし、年齢を格納する必要がある場合、数値型 ( などTINYINT) の長さはほとんど意味がないため、空白のままにしておく必要があります。

于 2012-12-02T02:00:26.180 に答える