0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

テーブル設計におけるデータ型と制約の基本

Posted at

データベースのデータ型と制約

本記事は Progate の動画講義「データベース」を参考にしています。


データ型

  • エンティティの属性ごとに決める
  • 値がとりうる範囲のこと

注意点
後から変更することもできるが ALTER TABLE 処理は重くなりがちなので、あらかじめきちんと設計しておく。


データ型の種類

数値データ型

型名 範囲 サイズ 備考
TINYINT -128 ~ 127 / 0 ~ 255 1 byte
INT TINYINTより大きな数値 4 byte IDに使うには足りないこともある
BIGINT INTよりも大きな数値 8 byte

※ この他にも少数やビット値を扱う型がある。

日付データ型

型名 内容 範囲
DATE 日付のみ '1000-01-01' ~ '9999-12-31'
DATETIME 日付+時間 '1000-01-01 00:00:00' ~ '9999-12-31'
TIMESTAMP タイムゾーンを扱える型 -

文字列データ型

型名 特徴 長さ 備考
VARCHAR 可変長:文字列の長さに応じて容量を確保 0 ~ 65535文字
CHAR 固定長:長さに関係なく容量を確保 0 ~ 255文字 郵便番号などに適している
TEXT系 長文データ用(MEDIUMTEXT / LONGTEXTなど) - VARCHARで収まらない長さにも対応

制約

  • データの整合性を保つための仕組み
  • 制約に違反したクエリを実行すると、DBがエラーを返す

制約の種類

主キー(PRIMARY KEY)制約

  • 一意であることを保証
  • NULL を禁止
  • 1テーブルに1つだけ設定可能

NOT NULL(NOT NULL) 制約

  • NULL でないことを保証

ユニークキー(UNIQUE KEY)制約

  • 一意であることを保証
  • 主キーと異なり、複数のカラムに設定可能

外部キー(FOREIGN KEY)制約

  • 参照先のレコードが存在することを保証

データ型・制約を定義する方法(SQL)

CREATE TABLE Users (
    id INT PRIMARY KEY,             -- 整数型、主キー
    username VARCHAR(50),          -- 最大50文字の文字列
    email VARCHAR(100) UNIQUE,     -- 一意の文字列
    birth_date DATE,               -- 日付型
    is_active BOOLEAN,             -- 真偽値型
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- タイムスタンプ型、デフォルト値
);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?