#はじめに
今回は、SQLの学習内容を忘備録として記録する。
先月PHPを用いてデータベースを作成した際にSQLを使用した。
しかし、詳しく理解していなかったため学習しなおした。
初学者の為、内容に誤りがあればしてきしていただけるとありがたいです。
#データベースについて
###データベース管理システムとは?
まず、データベースとは、大量のデータを管理し、検索できるようにするもの。
データベース管理システムとは、このデータベースを作成したり管理したりするソフトウェア。
ちなみにデータベース管理システムはDRBSと略される。
また、二次元の表で管理するDBRMをRDBMSと呼ぶ。(←主流)
SQLとは、DRBSの主要な問い合わせ言語である。
要は、データベースに命令を送る言語。
###スキーマ
データをデータベースに格納するときに、データの性質や形式、他のデータとの関連といったようなデータ定義が集まったもの。
一般的に、「外部スキーマ」「概念スキーマ」「内部市スキーマ」の三層に分けた三層スキーマという方式が用いられている。
詳しくはリンク参照。
#データベースの仕組み
###一般的な名称
データベースを管理するの表のことをテーブルと呼ぶ。
また、テーブルにおいてタテ列をカラム、横の列をレコードと呼ぶ。
###キー
キーを用いて他の表と関連づけられる。
・主キー・・・データ列を特定できる行や列の組み合わせ
・外部キー・・・他の表の主キーと対応するキー
・複合キー・・・複数列の組み合わせでキーになるもの
詳しくはこちら
#SQLについての基本構文
####SELECTとFROM
どのテーブルからどのカラムを選択するかを記述する方法。
ちなみに、カラム名は「,」で区切れば複数選択できる
全てのカラムを選択する際はカラム名の部分を「*」と表記する
SELECT カラム名 FROM テーブル名;
####WHERE
抽出したい条件を加える。
例えば、ある列の単語が含まれるデータを選択したければ、選択する列名とその中で選択したい単語を以下のようにWHEREの後に記述する。
ちなみに、選択する単語が数字の際は「”」はいらない。(日付は「"」が必要)
SELECT カラム名 FROM テーブル名 WHERE 列名="選択する単語";
####比較演算子
また、不等式を用いることで、選択した数値以上以下(日付なら以降、以前)を選択できる。
SELECT カラム名 FROM テーブル名 WHERE 列名<=数字;
####BETWEEN述語
条件の上限と下限を選択できる。
SELECT カラム名 FROM テーブル名 WHERE 列名 BETWEEN 下限値 AND 上限値;
####LIKE演算子
LIKEを用いることで、その文字列を含む条件のものをすべて抽出できる
SELECT カラム名 FROM テーブル名 WHERE 列名 LIKE 文字列;
また、「%」を用いると以下のように条件を絞れる。
・%文字列・・・前方一致
・%文字列%・・・完全一致
・文字列%・・・後方一致
####NOT演算子
記述する条件に一致しないデータを抽出できる。
SELECT カラム名 FROM テーブル名 WHERE NOT 条件;
####NULL
NULLとは、存在しないデータのこと。(データ表における空欄)
NULLには「=」を用いることができない。
例えば、NULLを含まないカラムを抽出したい場合は以下のように記述する。
SELECT カラム名 FROM テーブル名 WHERE 列名 IS NOT NULL;
####AND演算子
両方を満たす条件を書く際に使用。
SELECT カラム名 FROM テーブル名 WHERE 条件 AND 条件;
####OR演算子
どちらを満たす条件を書く際に使用。
SELECT カラム名 FROM テーブル名 WHERE 条件 OR 条件;
####ORDER BY
データを昇順(ASC)か降順(DESC)に並べる。
ORDER BY カラム名 並べ方;
####LIMIT
データ数を決める。
SELECT カラム名 FROM テーブル名 LIMIT データ数;
####表の結合
複数のテーブルを結合する方法。
テーブル1とテーブル2を結合する場合以下のように記述。
条件には、二つのテーブルで共通の列を指定する。
SELECT カラム名 FROM テーブル1名, テーブル2名 WHERE 条件
####IN値
IN内のどれかと一致したデータを抽出する際に使用。
SELECT カラム名 FROM テーブル名 WHERE 列名 IN(数値,数値,数値);
####SUM関数
選択したカラム名の合計
SELECT (カラム名)
####GROUP BY
選択したカラムごとにグループ化する。
SELECT カラム名 FROM テーブル名 GROUP BY カラム名;
####HAVING
グループ化したデータをさらに絞り込みたい際に使用
SELECT カラム名 FROM テーブル名 GROUP BY カラム名 HAVING 条件;
####データの実行順序
「WHERE」→「GROUP BY」→「関数」→「HAVING」の順番で実行される。
#まとめ
今回はSQLについての基本事項について記述した。
もっと実践的に使っていけるように精進したい。
再度ではあるが、ミスや間違いがあればご指摘いただいたければ修正します。