1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SQLでデータベースを操作する

Last updated at Posted at 2022-08-07

SQL

データベースに溜め込んだデータを活用しなくてはならない。
そのためにSQLというものがある。
それは表を定義(CREATE文),レコードを挿入(UPDATE文)、削除(DELETE文)、更新(UPDATE文)をしたりできる。
これらの命令は

  • スキーマの定義や表の作成といった定義を担当するデータ定義言語(DDL: Data DEfinition Language)
  • データの抽出や挿入、更新、削除といった操作を担当するデータ操作言語(DML:Data Manipulation Language)
    に大別できる。

SQL文の処理

クエリ実行までの流れ

受けたクエリ(問い合わせ)の実行までの流れは、構文解析⇨オプティマイザ(最適化)⇨コード生成⇨実行
といった順で処理される。

オプティマイザ

SQLによるクエリに対して、最も効率がいいように最適化を行うこと
具体的には、アクセス経路(順次検索かインデックスを使うかなど)や結合方法の選択がある。

SELECT文の基本的な書式

基本はどうのような条件でどの表からどの列を取り出すか になる。
これを指定することによってデータベースから多様なデータを取り出すことができる。

SELECT 列名 FROM表名 WHERE 条件
SELECTはどの列を取り出すか?
FROMはどの表から?
WHEREはどのような条件で?

特定の列を抽出する(射影)

関係演算の一つ射影で列を取り出す。
*(アスタリスク)を列で指定すると全ての列が抽出対象となる。

特定の表の抽出(選択)

関係演算の一つ選択で行を取り出す。
WHERE句を使って、取り出したい行の条件を指定します。

比較演算子

このWHER句は比較演算子を用いて条件を指定する。

  • = :等しい。
  • > :大きい
  • >=:以上
  • < :小さい
  • < :以下
  • <>:等しくない。

条件を組み合わせて抽出する

複数の条件を組み合わせるには、論理演算子を用いる。
AND,OR,NOTがある。
WHERE句で使う。
比較演算子にかつを持たせるにはAND
またはを持たせるにはOR
ではないを持たせるにはNOT

論理演算子の優先順位

論理演算子には優先順位がある。
NOT>AND>ORになる。

表と表を結合する(結合)

表と表をくっつける関係演算。
WHERE句でどの列を使ってくっつけるかを指定します。

   SELECT *
     FROM 受注表、顧客表
    WHERE 受注表.顧客コード = 顧客表.顧客コード

受注表.顧客コード.はどの表のどの列かを表すために用いられている。
結合させる列名が同じ名前同士である必要はない

データを整列させる

ORDER BY句で抽出結果を整列させる。
ASCは昇順DESCは降順

ORDER BY 列名 ASC(またはDESC)
SELCT * FROM 商品表 ORDER BY 単価

デフォルトで昇順なのでASCは省略できる。

  SELECT 顧客コード,受注No,受注日付
    FROM 受注表
ORDER BY 顧客コード, 受注日 DESC

関数を使って集計を行う

SQLにはデータを取り出す際に集計を行う。さまざまな関数(集合関数と言う)が用意されています。
これを用いると列の合計や、最大値、レコードの件数などを求めることができる。

MAX(列名)

その列の最大値を求める。

MIN(列名)

その列の最小値を求める。

AVG(列名)

その列の平均値を求める。

SUM(列名)

その列の合計を求める。

COUNT(*)

行数を求める。

COUNT(列名)

その列の「列が入っている(空値じゃない)」 行数を求める。

データをグループ化する

特定の列をさしてその中身が一致する項目をひとまとめにして扱うことをいう。
GROUP BY句を使う。
グループ化して、グループの中でまた処理ができたりする。

GROUP BY 列名

グループに条件をつけて絞り込む

グループ化した際、条件をつけて取り出すグループを絞り込むことができる。
HAVING句を使いグループ化内の絞り込み処理を行う。

  SELECT 分類,AVG(単価)
    FROM 商品分類表
GROUP BY 分類
  HAVING AVG(単価)>100

単価が100より大きい グループの分類と平均単価を表示する。

気づき

SQLを勉強していたため割合知っているところが出た。
なので気づきがここだけになった。
次も頑張る

関連記事

出典

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?