はじめに
今回はSQLのデータ型の種類について改めて学習したので
こちらも忘れない様アウトプットとして記していこうと思います。
主な種類
-
整数
-
実数
-
文字列
-
真偽値
-
日時
整数
データ型 | 扱える数の幅 |
---|---|
TINYINT | -128 ~ +127 |
INT | -21億 ~ 21億 |
SMALLINT | -83万 ~ 83万 |
MIDINT | -83万 ~ 83万 |
BIGINT | -922京 ~ 922京 |
UNSIGNEDは整数のみを扱い、扱える範囲が大きくなります。
データ型 | 扱える数の幅 |
---|---|
TINYINT UNSIGNED | 0 ~ 255 |
INT UNSIGNED | 0 ~ 42億 |
BIGINT UNSIGNED | 0 ~ 1844京 |
小数点を含む実数
データ型 | |
---|---|
DECIMAL | 固定小数点 |
FLOAT | 不動小数点 |
DOUBLE | 不動小数点(高精度) |
文字列
データ型 | |
---|---|
CHAR(固定長) | 0 ~ 255文字 |
VARCHAR(可変長) | 0 ~ 65535文字 |
TEXT | それ以上 |
ENUM | 特定の文字列から1つ |
SET | 特定の文字列から複数 |
固定長とは!
入るデータの長さが決まっていること
(商品コードや郵便番号の文字列を固定のものを格納するときに使われる)
可変長とは!
入るデータが決まっていないこと
(氏名や書籍名といった文字列を格納するときに使われる)
ENUMの書き方はこんな感じ
特定の文字列の中から一つだけを格納します。
DROP TABLE IF EXISTS posts;
CREATE TABLE posts (
message VARCHAR(140),
likes INT,
category ENUM('Gadget','Game', 'Business')
);
INSERT INTO posts (message, likes, category) VALUES
('Thanks', 12, 'Gadget'),
('Arigato', 4, 'Game'),
('Merci', 4,'Business');
SELECT * FROM posts;
index番号を指定してあげても指定できます。
INSERT INTO posts (message, likes, category) VALUES
('Thanks', 12, 1),
('Arigato', 4, 2),
('Merci', 4, 3);
SELECT * FROM posts;
-- この様な感じで出力される
+---------+-------+----------+
| message | likes | category |
+---------+-------+----------+
| Thanks | 12 | Gadget |
| Arigato | 4 | Game |
| Merci | 4 | Business |
+---------+-------+----------+
SETはこんな感じで使う
複数を格納したい時に使用します。
書き方
↓ (テーブルの作り方は上の書き方と一緒です。)
categories SET('Gadget', 'Game', 'Business')
登録
↓
INSERT INTO posts (message, likes, categories) VALUES
('Tnanks', 12, 'Gadget,Game'),
('Arigato', 4, 'Business'),
('Merci', 4, 'Business,Gadget');
値を数値で管理しているのでそちらを指定してあげても指定できます。
(2の◯乗で管理されている)= 2^0, 2^1, 2^2, ... 1, 2, 4, ...
INSERT INTO posts (message, likes, categories) VALUES
('Tnanks', 12, 3), -- 1 + 2 --Gadget,Game
('Arigato', 4, 4), -- 4 --Business
('Merci', 4, 5); -- 1 + 4 --Gadget,Business
真偽値
データ型 | |
---|---|
BOOL | TRUE / FALSE |
TINYINT(1) | 1 / 0 |
「TRUE」か「FALSE」、または「0」か「1」で登録します。
日時
データ型 | |
---|---|
DATE | 日付 |
TIME | 時間 |
DATETIME | 日時 |
-
「'2020-10-11 15:32:05'」(時間を指定)
-
「'2020-10-12'」(記入していない時間は00で出力される)
-
「NOW()」(現在の日時)という感じで登録します。
この様に出力されます。
+---------+-------+----------+---------------------+
| message | likes | is_draft | created |
+---------+-------+----------+---------------------+
| Tnanks | 12 | 1 | 2020-10-11 15:32:05 |
| Arigato | 4 | 0 | 2020-10-12 00:00:00 |
| Merci | 4 | 0 | 2020-12-31 14:13:42 |
+---------+-------+----------+---------------------+
まとめ
今回ははじめとしてよく使うであろうデータ型の確認でした。
まだたくさんあると思いますので引き続き学習していきます。