MySQLでのデータ型の違い

4164 ワード

DATETIME、DATE、TIMESTAMP
TIMESTAMP
  • 表示形式:YYYY-MM-DD HH:MM:SS
  • 時間範囲:['1970-01-01 00:00:00]から'2037-12-31 23:59:59']
  • IMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP:このデータ列は、新規レコードの作成や既存レコードの変更時にリフレッシュされます.
  • TIMESTAMP DEFAULT CURRENT_TIMESTAMP:新規レコードの作成時にこのフィールドを現在時刻に設定しますが、後で変更すると更新されません.
  • TIMESTAMP ON UPDATE CURRENT_TIMESTAMP:新規レコード作成時にこのフィールドを0に設定し、以降の変更時にリフレッシュします.
  • TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP:新規レコード作成時にこのフィールドを所定値に設定し、以降の変更時にリフレッシュします.
  • TIMESTAMP列が空でない場合、デフォルト値は「000-00-00 00 00:00」ですがnullではありません.
  • テーブルには複数のTIMESTAMP列が存在してもよいが、1つのテーブルには1つのTIMESTAMPタイプのフィールドのみがデフォルト値またはUPDATEセクションでCURRENT_TIMESTAMP(TIMESTAMP)は、データ更新に設定してデータベースシステムの現在値に変更します.
  • TIMESTAMP列のデフォルト値はCURRENT_です.TIMESTAMP定数値.記録データが変化すると、TIMESTAMP列は自動的にCURRENT_に設定されますTIMESTAMP.
  • TIMESTAMP列作成後のフォーマットは:
  • ALTER TABLE course 
    ADD COLUMN birthday timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
    
    ALTER TABLE course
    ADD COLUMN birthday timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP ;
    
    ALTER TABLE course
    ADD COLUMN birthday timestamp NULL AFTER cname;
    

    DATETIME
  • 表示形式:YYYY-MM-DD HH:MM:SS
  • 時間範囲:['1000-01-01 00:00:00'から'9999-12-31 23:59:59']
  • DATE
  • 表示形式:YYY-MM-DD
  • 時間範囲:['1000-01-01'から'9999-12-31']
  • 日付書式変換
  • 文字列の日付:
  • select STR_TO_DATE('2013-01-29 13:49:18', '%Y-%m-%d %H:%i:%s')
    
  • 日付回転文字列
  • select DATE_FORMAT('2013-01-29 13:49:18', '%Y-%m-%d %H:%i:%s')
    

    日付の中でよく使われる年月日時分秒月などの取得方法
  • select TIMESTAMP('2013-01-29 13:50:27');
  • select DATE('2013-01-29 13:50:27');
  • select YEAR('2013-01-29 13:50:27');
  • select MONTH(('2013-01-29 13:50:27');
  • select WEEK('2013-01-29 13:50:27');
  • select DAY('2013-01-29 13:50:27');
  • select TIME('2013-01-29 13:50:27');
  • select CURTIME();
  • select CURDATE();
  • select CURRENT_DATE;
  • select CURRENT_TIME;
  • select CURRENT_TIMESTAMP;
  • select NOW()

  • 日付の演算
  • SELECT DATE_ADD('2013-01-29 13:50:27', INTERVAL 1 DAY); -> '2013-01-30 13:50:27'
  • SELECT DATE_ADD('2013-01-29 13:50:27', INTERVAL 1 HOUR); -> '2013-01-29 14:50:27'
  • SELECT DATE_ADD('2013-01-29 13:50:27', INTERVAL 1 MONTH); -> '2013-02-28 13:50:27'

  • int、bigint、smallintとtinyintの違い
    [画像のアップロードに失敗しました...(image-db 971-153189017547)]
  • 参照
  • char,varchar,text,tinytext,mediumtext,longtextの違い
  • char:定長データを格納するのは便利です.CHARフィールドのインデックス効率は極めて高く、char(10)を定義するなどのデフォルト値があります.保存したデータが10バイトに達したかどうかにかかわらず、10バイトの空間(自動的にスペースで埋め込まれます)を占め、検索時に後ろのスペースが隠されます.検索したデータはstrip()などの関数でスペースをフィルタリングすることを覚えておく必要があります.
  • varchar:長くなったデータを格納しますが、格納効率はCHARほど高くありません.データを保存するときは、スペースの自動入力は行われず、データにスペースがある場合は、値の保存と取得時に末尾のスペースが保持されます.さらにvarcharタイプの実際の長さは、実際に使用された長さを保存するために使用される値の実際の長さ+1です.
  • text:可変長の非Unicodeデータを格納し、最大長は2^31-1文字である.ストレージまたは取得中に大文字と小文字の変換は存在しません.
  • まとめ:できるだけvarcharを使い、varcharが使える場所はtextを使わない.charは最大255文字です.varcharは最大65535バイト(したがって、異なる文字セットで格納できる文字数は異なる).text最大65535文字
  • 参照
  • mysqlでkey、primary key、unique keyとindexの違い
  • Keyはインデックス制約であり、表中のフィールドにインデックスを制約するものは、primary foreign unique等によって作成される(プライマリ・キーPRIMARY KEY、外部キーFOREIGN KEY、一意インデックスUNIQUE KEY).
  • マスタキー(PRIMARY KEY)は、本表の一意の識別子
  • である.
  • 外部キー(FOREGN KEY)は、別のテーブルに関連付けられた
  • である
  • ユニークインデックス(UNIQUE KEY)は、主にデータ挿入時に重複することを防止するために使用される.
  • KEY:keyはデータベースの論理構造であり、2つの意味を含みます.1つは制約(制約と仕様データベースの構造整合性に偏っている)、2つはインデックス(クエリーを支援するための)です.primary key,unique key,foreign keyなどが含まれています.
  • INDEX:indexはデータベースの物理構造であり、クエリーを支援するだけで、作成時に別のテーブルスペース(mysqlのinnodbテーブルスペース)に類似したディレクトリの構造で格納されます.インデックスを分類すると、接頭辞インデックス、全文本インデックスなどに分けられます.したがって、インデックスはインデックスにすぎず、インデックスのフィールドの動作を制約しません.
  • 参照1
  • 参照2