Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【MySQL】基本のデータ型と関数

こんにちは😊Kintarouです。

現在エンジニア転職を目指してプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人にとって働く事が楽しくなるシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


今回参考にさせて頂いたサイト様🙇‍♂️ dotinstall.com


データ型

MySQLのデータ型について触れていきます。
下記以外にも型はありますが、主なものを載せていきます。

数値

データ型
TINYINT -128〜127
INT -21億〜21億
BIGINT −922京〜922京
TINYINT UNSIGNED 0〜255
INT UNSIGNED 0〜42億
BIGINT UNSIGNED 0〜1844京
DECIMAL 固定小数点
FLOAT 浮動小数
DOUBLE 浮動小数点(高精度)

数値の関数

数値関連の関数もまとめます。

関数名 処理
FLOOR() 端数切り捨て
CEIL() 端数切り上げ
ROUND() 四捨五入

文字列

データ型
CHAR 0〜255文字
VARCHAR 0〜65535文字
TEXT 65536文字以上
ENUM 特定の文字列の内1つの値
SET 特定の文字列の内複数の値

ENUMとSET補足

ENUMとSETに関しては具体例を出します。

CREATE TABLE posts (
  id INT AUTO_INCREMENT,
  message VARCHAR(140),
  category ENUM('Gadget','Game','Buisiness'),
  PRIMARY KEY(id)
);

INSERT INTO posts (message, category) VALUES
  ('post1', 'Gadget'),
  ('post2', 2),
  ('post3', 3);

SELECT * FROM posts;

f:id:ryosuke-toyama:20201107161551p:plain

上記のようにあらかじめ文字列群を指定しておき、その中の1つという意味になります。
この際、'Game'や'Buisiness'のようにインデックス番号を指定する事もできます。
インデックス番号は0からではなく1からになっている点に注意です。

SETについても補足します。

DROP TABLE IF EXISTS posts;
CREATE TABLE posts (
  id INT AUTO_INCREMENT,
  message VARCHAR(140),
  category SET('Gadget','Game','Buisiness'),
  PRIMARY KEY(id)
);

INSERT INTO posts (message, category) VALUES
  ('post1', 1),
  ('post2', 2),
  ('post3', 3),
  ('post4', 4),
  ('post5', 6),
  ('post6', 7);

SELECT * FROM posts;

f:id:ryosuke-toyama:20201107163647p:plain

SETの場合インデックス番号が2の0乗(1)、2の1乗(2)、2の2乗(4)、となっていきます。
複数の値を入れられるのですが、インデックス番号1と2の場合は足した3を入れます。
例)post3 → 3(インデックス番号1(Gadget)、インデックス番号2(Game))

文字列の関数

関数名 処理
SUBSTRING() n番目以降を切り出す
CONCAT() 文字列を連結させる
LENGTH() 文字数を出力する
CHAR_LENGTH() 文字数を出力。漢字・ひらがな・カタカナ・マルチバイト文字も1文字に認識

真偽値

データ型
BOOL TRUE/FALSE
TINYINT(1) 1/0

日時

データ型
DATE 日付
TIME 時間
DATETIME 日時

日時の関数

関数名 処理
NOW() 現在の日時を返す
YEAR() 日付データから年を抜き出す
MONTH() 日付データから月を抜き出す
DAY() 日付データから日を抜き出す
DATE_FORMAT() 日付データを指定のフォーマットで出力
DATE_ADD 指定の日付から○日後などを出力
DATEDIFF 指定の日付2つの差を計算する

以上、どなたかの参考になれば幸いです😊