これは本当に初歩的な質問かもしれませんが、これまでテーブルを作成したことがなくTIMESTAMP()
、パラメータとして何を入力すればよいのかわかりません。たとえば、次のようになります。
をランダムに入力したのですTIMESTAMP(20)
が、20
パラメータとしての はここで何を意味するのでしょうか? ここには何を入れればよいのでしょうか?
質問をグーグルで検索したのですが、特に何も出てこなかったので... とにかく私はSQL初心者なので、どんな助けでも大歓迎です、ありがとうございます!!
ベストアンサー1
編集
MySQL 5.6.4 以降では、データ型は小数秒の精度の 10 進数桁数 (0 から 6)TIMESTAMP(n)
を指定します。n
MySQL 5.6 より前のバージョンでは、MySQL はデータ型の一部として保存される小数秒をサポートしていませんでしたTIMESTAMP
。
参照:https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html
に長さ修飾子を指定する必要はありませんTIMESTAMP
。 を単独で指定するだけで済みますTIMESTAMP
。
ただし、テーブルに定義されている最初のTIMESTAMP
列は、自動的に初期化および更新されることに注意してください。例:
create table foo (id int, ts timestamp, val varchar(2));
show create table foo;
CREATE TABLE `foo` (
`id` INT(11) DEFAULT NULL,
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`val` VARCHAR(2) DEFAULT NULL
)
データ型の後の括弧内に入るものはデータ型によって異なりますが、一部のデータ型では長さ修飾子になります。
一部のデータ型では、長さ修飾子は保存できる値の最大長に影響します。たとえば、VARCHAR(20)
最大 20 文字を保存できます。また、DECIMAL(10,6)
小数点の前に 4 桁、小数点の後に 6 桁の数値を許可し、有効範囲は -9999.999999 ~ 9999.999999 です。
その他の型の場合、長さ修飾子は格納できる値の範囲には影響しません。たとえば、INT(4)
と はINT(10)
どちらも整数であり、 はどちらも整数データ型で許可されている の値の全範囲を格納できます。
この場合、長さ修飾子は単なる情報提供に過ぎません。基本的には、推奨される表示幅を指定します。クライアントはこれを利用して、列の値を表示するために行にどれだけのスペースを確保するかを決定できます。クライアントがこれを行う必要はありませんが、その情報は利用可能です。
編集
長さ修飾子は、データ型に対しては受け入れられなくなりました
TIMESTAMP
。(MySQL の非常に古いバージョンを実行していて、長さ修飾子が受け入れられる場合は、無視されます。)