【チートシート】SQL調べるのが面倒なのでまとめてみた。そしてこれからもまとめていこう。

はいどうもこんにちは。

バックエンドエンジニアとしてSQLが書けないとやばいと思っています。

そしてピンチの人にチートシートを準備しました!←自分へ

書き方とかは超端的に書くので細かい説明、使い方とかは省いています。

解決したいこと

今回解決したいことは、「あのSQL文ってどうしてかくんやっけー?」

「なんとなく覚えているけど書き方があいまいや!!」

ってな人に向けて、「ああ、そうそう、書くねんな。 ありがとさん。」

ってなるように目指しています。だからあまり詳しい使い方とかは載せないと思います~

チートシート的な感じで使えるように、できるだけ記事の更新もしていきたいと思っています。願っています…

とりあえずコピペして利用したい「怠惰なエンジニア」向け!ですwww

ということでどんどん書いていきましょう!

WHERE

NULL以外のデータが入るカラムを抽出

特定のカラムがnullじゃないレコードを抽出する。

SELECT
    '{カラム名}'
FROM
    '{table名}'
WHERE 
    '{カラム名}' IS NOT NULL;
Code language: PHP (php)


usersテーブルのemailカラムがnullじゃないレコード(入力のあるレコード)を抽出。

SELECT
    *
FROM
    'users'
WHERE
    'email' IS NOT NULL;Code language: PHP (php)

NULLと空白以外を抽出

nullと空白は違うので、別の抽出方法もあります!

AND条件を指定して、とりあえず指定したカラムに文字列とか何かが入っているレコードが欲しい!って時に利用。

SELECT
    '{カラム名}'
FROM
    '{table名}'
WHERE
    '{カラム名}' IS NOT NULL
AND
    '{カラム名}' != '';
Code language: PHP (php)

GROUP BY

COUNTとGROUP BYで種類ごとの集計を取得

SELECT
    カラム名,
    COUNT( カラム名 )
FROM
    テーブル名
GROUP BY
    カラム名;

ほんなら以下のような結果がゲット。(カラム名をnameと仮定)

namecount(name)
高橋30
山田40

countで全レコード数を取得

NULLも含める場合

SELECT
	COUNT(*)
FROM
	テーブル名;

NULLは含めない場合はnullを含めたくない列名を指定して、検索

SELECT
	COUNT(列名)
FROM
	users;

data type調査

特定テーブルのdata typeを知る

SELECT
    TABLE_CATALOG,
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE
FROM
    INFORMATION_SCHEMA.COLUMNS
where
    TABLE_NAME = '{テーブル名}'Code language: JavaScript (javascript)

こっちでもできる↓

show columns from {テーブル名}Code language: JavaScript (javascript)

between

日付を指定して間の期間にあるレコードを取得

usersテーブルで12月中に作成されたレコードを取得

SELECT
    *
FROM
    users
WHERE
    created_at
BETWEEN
    '2021-12-01 00:00:00' AND '2021-12-31 00:00:00'Code language: JavaScript (javascript)

開始と終了期間の間(BETWEEN)にあるレコードをカウント(COUNT)する

SELECT
    count(*)
FROM
    users
WHERE
    created_at
BETWEEN
    '2021-01-01 00:00:00' AND '2021-12-31 00:00:00'Code language: JavaScript (javascript)

User作成関連

ユーザー確認

現在接続しているユーザーを確認する。

select user(), current_user();

rootユーザーにログインして、ユーザーの一覧を取得する。

//mysql.userテーブルに必要な情報が入っているので必要カラムを指定
SELECT Host, User FROM mysql.user;Code language: JavaScript (javascript)

ユーザーの権限確認

指定したユーザーに設定してある権限を確認する。

SHOW GRANTS FOR {user}

//例
SHOW GRANTS FOR root@localhostCode language: JavaScript (javascript)

ユーザーの作成

ユーザーにhostとpasswordを指定して作成する。

create user 'ユーザー名'@'ホスト名' identified by 'パスワード';

//例
create user 'test_user'@'localhost' identified by 'password12345';Code language: JavaScript (javascript)

DELETE(削除)関連

対象レコードの削除

delete from テーブル名 where 条件;Code language: JavaScript (javascript)

例: nameテーブルのidが1のレコードを削除

delete from name where id = 1;Code language: JavaScript (javascript)

DB全体

テーブル数をカウント

対象のDBにあるテーブル数をカウントする。

select count(*) from `information_schema`.`tables` where `table_schema` = 'データベース名';Code language: JavaScript (javascript)

チートシートのデメリット

ある程度使い方を理解したうえでSQLを書くことで、応用的なこともできるので、コピペだけは避けておこうと思ってます~

ちなみにおすすめのSQLフォーマッターはこちら↓いい感じにしてくれる。

Best SQL formatter

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA