LoginSignup
0
0

More than 5 years have passed since last update.

SQLについての基本事項

Last updated at Posted at 2019-03-14

はじめに

今回は、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についての基本事項について記述した。
もっと実践的に使っていけるように精進したい。
再度ではあるが、ミスや間違いがあればご指摘いただいたければ修正します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0