SQL 検索コマンド

MySQL

検索コマンドです。

自分用ですが、どなたかのお役に立てれば幸いです。

検索の基本

SELECT文と言って基本の形は、

SELECT * FROM テーブル名

になり、このあとに文を付属させることにより色々な検索が可能となります。

SELECT * FROM テーブル名

の意味としては、「テーブルから全ての列を取り出します」という意味になります。

とりあえずこの形だけは覚えた方がよいです。

他に基本的な公文は

— 重複データの除外

DISTINCTを中に入れると重複データを取り除いてくれます。
SELECT DISTINCT 列名 FROM テーブル名;

–エイリアス(alias):別名をつける

エイリアスとは別名という意味で検索した列を別名で表示することが可能になります。
SELECT 列名 AS 別名;

–並びを変える(昇順)

SELECT * FROM テーブル名 ORDER BY 列名;

※降順の場合は列名のあとに、DESCを付け足します。descending の略で下降的なという意味があります。

記号(演算子)を使用した構文

–||を使用してくのでMySQLでは||を有効にしなくてはなりません。
SET SESSION sql_mode=’PIPES_AS_CONCAT’;

–算術演算子

算術演算子を入れることでデータに対して計算を行い表示をしてくれます。
SELECT 数字 +-/* 列名 FROM 表名;

–連結演算子
SELECT (列名||列名) AS 別名FROM テーブル名;
※連結演算子で使用する列は()で囲むと分かりやすい

WHEREを使用した検索

WHERE句は条件を指定する際に挿入します。

–条件による行の検索
SELECT 表示列名(全列&複数可) WHERE 列名 比較演算子 値;

–論理演算子
WHERE句に[AND:OR:NOT]を使用した検索の構文です。

SELECT * FROM 列名の後に下記の構文を付け足すことでで複数の条件を検索することが可能となります。
WHERE 条件1 AND 条件2・・・・「条件1かつ条件2」2つの条件を満たした検索結果が表示される。

WHERE 条件1 OR 条件2・・・・「条件1または条件2」2つの条件をどちらか満たした検索結果が表示される。

WHERE NOT 条件1・・・・「条件1ではない」条件1ではない検索結果が表示される。

–比較演算子
〜から・・・までを検索する場合
SELECT * FROM テーブル名 WHERE 列名 BETWEEN 値1 AND 値2
〜か〜かを検索する場合
SELECT * FROM テーブル名 WHERE 列名 IN (値1,値2,・・・)

〜が含まれる部分検索をする場合
SELECT * FROM テーブル名 WHERE 列名 LIKE ‘%値%’;

※文字と文字位置の指定
SELECT * FROM テーブル名 WHERE 列名 LIKE ‘_値’;

〜NULLであったら
列の値にデータが存在しない場合を検索
SELECT * FROM テーブル名 WHERE 列名 IS NULL
列の値にデータが存在する場合を検索
SELECT * FROM テーブル名 WHERE 列名 IS NOT NULL

関数を使用した検索

–集計関数
COUNT関数・・・取り出したデータの行数

SUM関数・・・取り出したデータの合計

AVG関数・・・取り出したデータの平均

MAX関数・・・取り出したデータの最大

MIN関数・・・取り出したデータの最小


集計関数の形
SELECT 関数(列名)FROM テーブル名

ex)問い合わせの結果として返される行数をカウントし表示。
SELECT COUNT (*) FROM テーブル名

並び替え検索

SELECT 列名 FROM 表名 ORDER BY 列名[ASC又はDESC]
ASC・・・昇順
DESC・・・降順

SELECT 列名 FROM 表名 ORDER BY 列名1[ASC又はDESC],列名2[ASC又はDESC]という表記も可能
その後に「LIMIT 数字;」で上から数字の数だけ表示というのも可能。

グループ化して検索

–グループごとに集計関数を実行
SELECT 列名や集計関数 FROM テーブル名 GROUP BY 列名;

–GROUP BYによってグループ化したデータに検索条件を設定を仕手取り出す。
SELECT 列名や集計関数 FROM テーブル名 GROUP BY 列名 HAVING 条件;

まとめ

ただ構文を並べたら非常に見づらいものになってしまいました(^◇^;)

反省です。

次回はテーブルの作成や結合を行なっていこうと思いますがもう少し見やすく書きたいなぁと思います。

表現が至らないところや治した方が良いところはぜひコメント下さい。

駆け出しエンジニア けいこ♂

コメント

タイトルとURLをコピーしました