【チートシート】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@localhost
Code language: JavaScript (javascript)

ユーザーの作成

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

create user 'ユーザー名'@'ホスト名' identified by 'パスワード'; //例 create user 'test_user'@'localhost' identified by 'password12345';
Code language: JavaScript (javascript)

DELETE(削除)関連

対象レコードの削除

delete from テーブル名;
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