27
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SQLのデータ型について!

Last updated at Posted at 2019-04-03

はじめに〜書こうと思った理由について〜

SQLの学習を継続的にやっているのですが、
まだ理解していない部分を理解して、アウトプットしておこうと思い、
記事を書きました。

対象とする人

・SQLの学習をしはじめて間もない人
・SQLのデータ型についてイマイチ分かっていない人

この記事の流れ

・データ型について
・固定長?可変長?
・固定長(CHAR型)
・可変長(VARCHAR型)
・まとめ

データ型について

データベースのテーブルって、列ごとに格納できる「データの種類」というのが決められているんですよね。
そのデータの種類をあらわすものを「データ型」と呼びます。

代表的なデータ型は下記となります。

データ種別 区分 代表的なデータ型名前
文字列 固定長 CHAR型
文字列 可変長 VARCHAR型
数値 整数値 INTEGER型
数値 小数 DEMICAL型,REAL型
日付と時刻 -- DATETIME型,DATE型,TIME型

#固定長?可変長?

上に書かれた表を見て、
整数値
小数
日付と時刻
は意味が分かるけど、
固定長、可変長ってなに??聞いたこと無い・・・。

と思った人がいるかと思いますので、解説します。

#固定長(CHAR型)
固定長とは、一言で言うと、「入るデータの長さが決まっている」、という意味です。
また、CHAR型というのは、固定長の文字列データを扱うデータ型のことです。

例えば、CHAR(10)とかかれていたら、

「10バイトまで文字をきちんと入れてねー」

ということになります。
そして、もし、格納しようとしている文字列が10バイトではなく8バイトだとします。

8バイトだと10バイトに満たないですよね。
その場合だと、文字列の右側に__空白__が2バイト追加されます。
そして、10バイトぴったりに調整された後、格納されます。

CHAR型は社員番号や郵便番号といった、格納するデータの桁数が決まっているものに対して使われるデータ型です。

#可変長(VARCHAR型)
可変長(VARCHAR型)とは、一言で言うと、「中に入るデータの長さが決まっていない」という意味です。
また、VARCHAR型というのは、可変長の文字列データを扱うデータ型のことです。

VARCHAR型では、もし格納する文字列の長さが足りていなくても、右側に空白を追加する、といった調整はありません。

例えば、VARCHAR(10)とかかれていたら、

「10バイトまで文字を入れてねー、10バイトまで8バイトでも3バイトでも大丈夫だよー」
ということになります。

格納しようとしている文字列が8バイトでも3バイトでも、そのままの長さで格納することが可能です。

そのため、

VARCHAR型は氏名や書籍名といった、格納するデータの桁数が変動するものに対して使われるデータ型です。

#まとめ

固定長(CHAR型)とは、「入るデータの長さが決まっている」ということ。
例として、社員番号や郵便番号の文字列を格納する時に使われる。

可変長(VARCHAR型)とは、「中に入るデータの長さが決まっていない」ということ。
例として、氏名や書籍名といった文字列を格納する時に使われる。

というわけで・・・

お読みいただきありがとうございました。
間違い等ございましたら、ご指摘いただけると嬉しいです!

参考図書 : スッキリわかるSQL入門

27
10
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
27
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?