データベースとか、テーブルとかそこらへんの知識が結構あいまいで困っています。まとまった情報を探しています
そのお悩み、私が解決します!!

- プログラミング技術ブログ【SUGAWAYA BLOG】管理人
- 工場勤務からWEB業界への転職を経験
- 現役WEBエンジニア
- 普段からPHPやSQLを使用している
この記事では、データベースとは何なのかついてまとめていまして、テーブル、カラム、レーコード、データ型など、よく見聞きする用語についての解説をしています。
データベースとは?
データベースとは、データの集合体を管理・保守する仕組みが備わっているシステムの事を言います。
データの集合体を管理・保守する仕組みとは
例えば、データを複数人が同時に更新しても矛盾が生じないようにしたりする仕組みです。
データベースにはさまざまな種類があり、SQLはその中でリレーショナル・データベースという種類のデータベースのために開発された言語になります。

リレーショナルデータベースはデータを2次元で表すのが特徴で、エクセルやスプレットシートのように表でデータを管理します。

テーブルとは
先ほど、リレーショナル・データベースではデータを表で表すと解説しました。
この表のことをテーブルと呼びます。データベースにテーブルが何個も入っていいて
種類ごとにデータを管理しています。以下の図のようになっています。

カラムとレコードとは
以下の図を見ていただければ一目瞭然です。

行のことをレコードと呼び、列の事をカラムと呼びます。
また、カラムが1つかつ、レコードが1つ決まれば一つの値を求める事ができます。
上の図で解説すると、カラムとレコードが交わった所、つまり「豚バラ肉」を求める事ができます。
データ型についての知識
データ型とは
テーブルにはどんなデータでも自由に格納できるわけではありません。例えば、価格や在庫数は数字が好ましいです。ですので、数字データが好ましいカラムに文字データや日付形式のデータが入力されないようにすべきです。

このように、カラムごとに指定する事ができるデータの種類の事をデータ型と言います。
データ型は大枠で3タイプあります。

文字列型とは
文字列型のデータ型は、文字データを表すためのデータ型です。
文字列型を大きくまとめると以下になります。

固定長文字列型は、登録できるデータのサイズが固定です。
そのため、11文字まで、と文字数を設定すると、必ず11文字の文字列が格納されます。
11文字に満たない文字列が格納された場合は、残りの文字数には空白が自動挿入されて、ちょうど11文字になるように自動調整されます。
可変長文字列型は、登録できるデータのサイズが可変です。11文字までの文字数指定をしているカラムであれは11文字までの文字列が格納できます。
11文字に満たない文字列を格納した場合でも、先ほど解説した固定長文字列型とは異なり、自動的に空白が挿入されないので、入力した文字数がそのまま文字数となります。
つまり11文字指定のカラムに8文字入力した場合、格納される文字数は8文字となります。

MySQLで利用可能な文字列に関するデータ型
データ型 | タイプ | サイズ |
CHAR | 固定長文字列型 | 255バイト |
VARCHAR | 可変長文字列型 | 255バイト |
TINYTEXT | 可変長バイナリデータ | 255バイト |
TINYBLOB | 可変長バイナリデータ | 255バイト |
TEXT | 可変長バイナリデータ | 65535バイト |
BLOB | 可変長バイナリデータ | 65535バイト |
MEDIUMTEXT | 可変長バイナリデータ | 16777215バイト |
MEDIUMBLOB | 可変長バイナリデータ | 16777215バイト |
LONGTEXT | 可変長バイナリデータ | 4294967295バイト |
LONGBLOB | 可変長バイナリデータ | 4294967295バイト |
ENUM | リスト型 | 65535個 |
SET | リスト型 | 64個 |
上の表を見ると、例えば、データ型がCHARのデータ型の場合は、固定長文字列型で255バイトまで扱えるデータ型なんだなとわかると思います。
この表には「固定長文字列型」「可変長文字列型」「可変長バイナリ型」「リスト型」の4つがあります。
「固定長文字列型」と「可変長文字列型」はCHAR(10)やVARCHAR(10)のように、データ型と同時に文字数を指定します。
CHAR(10)と指定した場合、固定長文字列を10文字格納する事ができます。
「バイナリ型」は文字数を指定しません。「固定長文字列型」と「可変長文字列型」では扱いきれないほど大きな文字数を扱っています。
「リスト型」は文字列を配列として扱うデータ型です。
つまり、複数の文字データを1つのカラムで扱う事ができますが、利用頻度は低いです。
数値型とは
MySQLの数値型は、SINGEDオプションとUNSIGENDオプションのいずれかを指定します。
SINGEDオプションを指定した場合、数値はマイナスの値を扱う事ができます。
UNSIGENDオプションを指定した場合マイナスの値は扱う事ができません。
オプションを何も指定しなかった場合は、自動的にSINGEDオプションが設定されます。
UNSIGENDオプションは、SINGEDオプションの2倍の正の数を扱う事ができます。
MySQLで扱う事ができる数値のデータ型
データ型 | SINGED | UNSIGEND |
TINTINT | -128〜127 | 0〜255 |
BIT | TINTINT(1)の別名 | TINTINT(1)の別名 |
BOOL | TINTINT(1)の別名 | TINTINT(1)の別名 |
BOOLEAN | TINTINT(1)の別名 | TINTINT(1)の別名 |
SMALLINT | -32768〜32767 | 0〜65535 |
MEDIUMINT | -8388608〜8388607 | 0〜16777215 |
INT | -2147483648〜2147483647 | 0〜4294967295 |
INTEGER | INTの別名 | INTの別名 |
BIGINT | -9223372036854775808〜9223372036854775807 | 0〜18446744073709551615 |
FLOAT | 単精度浮動小数点 | 単精度浮動小数点(負数を除く) |
DOUBLE | 倍精度浮動小数点 | 倍精度浮動小数点(負数を除く) |
REAL | DOUBLEの別名 | DOUBLEの別名 |
DECIMAL | 桁数と少数桁数指定できる数値型 | 桁数と少数桁数指定できる数値型(負数を除く) |
DEC | DECIMALの別名 | DECIMALの別名 |
NUMERIC | DECIMALの別名 | DECIMALの別名 |
FIXED | DECIMALの別名 | DECIMALの別名 |
日付型とは
MySQLでは日付関連を取り扱うデータ型として、日付型、TIME型、YEAR型があります。
MySQLで扱うことのできる日付データ型
データ型 | タイプ | 形式 | 範囲 |
DATE | 日付型 | YYYY-MM-DD | 1000-01-01〜9999-12-31 |
DATETIME | 日付型 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00〜9999-12-31 23:59:59 |
TIMESTAMP | 日付型 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01〜2038-01-19 03:14:07 |
TIME | TIME型 | HH:MM:SS | -838:59:59〜838:59:59 |
YEAR | YEAR型 | YYYYもしくはYY | YYYYのとき1901〜2155 YYのとき70〜69(1970または 2070〜2069) |
DATE型は日付部分のみを表します。
MySQLでは’YYYY-MM-DD’形式で表します。
DATETIME型とTIMESTAMP型は、日付と時間両方を表します。
MySQLでは’YYYY-MM-DD HH:MM:SS’形式で表します。
DATETIME型とTIMESTAMP型の違いは、
値に何も指定せずにデータを追加した場合に違いが現れます。
DATETIME型の場合、値に何も指定せずにデータを追加すると、該当カラムはNULLとなります。
TIMESTAMP型の場合、値に何も指定せずにデータを追加すると、該当カラムは
‘0000-00-00 00:00:00’となります。
変わって、MySQLのTIME型は、時刻を表示する時に使用します。TIME型は、
‘HH:MM:SS’形式(時間の部分の値が大きい場合は、’HHH:MM:SS’形式)で時刻を表示します。2つ時間の差を表示する場合もあるのでマイナスの値も扱う事ができます。
NULLについて
NULL(ヌル)とは、値がない事を表します。値がない状態とは、値が決まっていない場合や、値がわからない場合などが該当します。
例えば、下の社員テーブルを見てください。
社員テーブルには、「役職コード」というカラムがあり、この「役職コード」は、役職テーブルの役職コードと紐づける事で、どの社員がどの役職に就いているかがわかります。

また、役職コードがNULLのデータは役職についていない状態なので、データを入れられない状態なのでNULLが入っています。
まとめ
今回の記事では、データベースの基礎知識を学んできました。その中で、テーブル、カラム、レコード、データ型の勉強をしてきました。これらの知識は本当に基礎的でベースの部分になっています。
今回学んだ各用語はこの先もずっと出てきます。わからなくなったら記事を見直してみましょう。下に参考になる書籍を厳選し掲載しています。
今回の記事で紹介しきれなかった数多くの知識の習得に必ず役立つはずです。一度手に取ってみてもっと奥深くまで学んでみましょう。
私も、この本には大変お世話になりました。網羅的にSQLの知識が掲載されており初学者に取ってわかりやすく優しい内容とイラストでの解説がされていますので見てみてください。
私は、こう思います
数千円の投資が、将来の数10万円、数100万に大きく化けます。自己投資は最もリターンの大きな投資です。自己投資をないがしろにしてしまえば、今までと変わらない人生のまま、何一つ成長することはありません。
今から始めましょう!絶対に過去の自分に感謝する日が来ます。【須川誠】