Oracle Database 入門

これからOracle Database(SQL)を勉強する人向けにテーブルの作成から、データ操作をわかりやすくまとめてみました。Web上(環境構築不要)で学習できるので、よかったら利用してみてください!

学習環境は Oracle Live SQL

Web上でSQLが実行できる環境、Oracle Live SQL を利用して学習を進めます。

SQL用語 テーブル・カラム・レコード・フィールド

SQLを勉強する上で覚えるべき用語、いったんここだけは押さえておきましょう!

  • テーブル:データの一覧を保存しておくための「表」
  • カラム:テーブルのそれぞれの項目にあたる「列」
  • レコード:1件分のデータにあたる「行」
  • フィールド:レコードの中にある「項目」

上記のテーブルは家計簿テーブルで、5つのカラムがあり、データは5レコード、1レコードあたり5つのフィールドで構成されています。

テーブルを作成しよう

まずは、学習に必要なテーブルの作成を行います。

SQLの4大命令って?

SQLの4大命令とは、基本的な命令文のことで下記4種類しかありません。

  1. INSERT(CREATE) … データの追加
  2. SELECT(REED) … データの取得
  3. UPDATE … データの更新
  4. DELETE … データの削除

この4つの基本的な命令分をCRUDと呼ぶこともあります。

上記の記事に基本的な書き方は簡単にまとめているのですが、詳しい書き方は下記の記事を確認してください!

INSERT文

作成したテーブルに対してデータを追加するINSERT文ですが、1行データを追加する場合、複数行データを追加する場合について下記記事で説明しました。

SELECT文

テーブルからデータを取得するSELECT文ですが、WHERE句を使うなどデータを細かく絞って取得することができます。下記の記事では、下記のよく使う演算子も含めて説明しています。

  • 比較演算子(=, <, >, <=, >=, <>)
  • IS NULL / IS NOT NULL 演算子
  • LIKE 演算子
  • BETWEEN 演算子
  • IN / NOT IN 演算子
  • 論理演算子(AND 演算子/ OR 演算子)

UPDATE文

データを更新する場合は、UPDATE文を使います。

DELETE文

データを削除する場合は、DELETE文を使います。

検索結果の加工しよう

命令記述方法対象行の絞り込み
SELECT列名…FROM テーブル名WHERE 条件式
UPDATEテーブル名 SET 列名 = 値 …WHERE 条件式
DELETEFROM テーブル名WHERE 条件式
INSERTINTO テーブル名 (列名…) VALUES (値…)
SQLの4大命令

ここまでは、SQLの基本的な操作を学んできました。次はテーブルからデータを取得した際の検索結果を加工していきたいと思います。

DISTINCT – 重複行を除外する

重複行を除外してデータを取得するにはDISTINCTを使用します。

ORDER BY – 結果を並び替える

指定した列の値を基準として検索結果(データ)を並び替え取得するには、ORDER BY 句を使用します。

データを一定の規則に従って並べることをソートと言います。

日付費目メモ入金額出勤額
2024/03/25住居費3月分055000
2024/03/20通信費スマホ代03300
2024/03/17交通費バス代0500
2024/03/14食費夜食(とんかつ濱かつ)02000

日付を降順でソート

OFFSET ~ FETCH – 行数を限定しデータを取得

ORDER BY句 と一緒に使われるのが OFFSET ~ FETCH句です。ORDER BY で並び替えた結果の一部だけを取得する場合に OFFSET ~ FETCH を使います。

集合演算子を使ってみよう

これまで、1つのテーブルのデータを扱ってきました。ここからは複数のテーブルから集合演算子を使ってデータをまとめて取得したいと思います。

UNIONMINUSINTERSECT
和集合
2つの検索結果を
足し合わせたもの
 
差集合
最初の検索結果から
次の検索結果と重複する
部分を取り除いたもの
積集合
2つの検索結果で
重複するもの
 
3つの集合演算子

集合演算子が使える条件は、テーブルの列数とデータ型が一致していることです。

この条件に当てはまっていないと下記のようなエラーが起こります。

-- 列数が違う
ORA-01789: query block has incorrect number of result columns

-- データ型が違う
ORA-01790: expression must have same datatype as corresponding expression

UNION – 和集合を求める

2つのSELECT文からそれぞれの検索結果を足し合わせた結果(和集合)を返してくれる、UNION と UNION ALL について説明しています。

MINUS – 差集合を求める

2つのSELECT文のデータの差分を取得することができるMINUSについて説明しています。

INTERSECT – 積集合を求める

2つのSELECT文で重複しているデータを取得することができるINTERSECTについて説明しています。

関数を使いこなそう!

ここまで勉強してきたわけですが、なんとなくデータの扱い方がわかってきましたよね?

次はSQL文で使う関数について説明していきます。

下記のサイトはOracle Database(SQL)リファレンスで関数がまとめられています。

関数

この中でよく使うと思う関数をピックアップして、サンプルコードと一緒に説明していきます!

関数を試す時は DUAL表 を使用します。

文字列関数

最初は文字列を扱う関数から確認してみましょう!

下記の記事では

  • 文字列の結合
  • 空白削除
  • 置換
  • 全半角変換
  • 英字の大小変換
  • 文字埋め
  • 文字の長さ取得
  • 文字列の切り取り
  • 文字列検索

ができる関数の説明をしています。

数値関数

次は数値関数について説明します。

下記記事では

  • 四捨五入
  • 切り上げ
  • 切り捨て

ができる関数の説明をしています。

日付関数

次は日付関数はについて説明します。

下記記事では

  • システム日付の取得
  • 日付の書式指定(フォーマット)
  • 日付の編集
  • 日付の取得

ができる関数などを説明しています。

集約関数

次は集約関数について説明します。

下記記事ではデータの

  • 件数
  • 合計値
  • 平均値
  • 中央値
  • 最大値
  • 最小値

が取得できる関数を説明しています。

複数のテーブルからデータを取得しよう!

複数のテーブルからデータを取得するには、INNER JOIN もしくは OUTER JOIN を使います。開発現場に入ってみると… JOIN JOIN JOIN !! JOINはよく使うので覚えておきましょう。

CASE式を使ってみよう!

SQLで条件分岐をするにはCASE式を使用します。

まとめ

今回、Oracle Live SQL を使ってSQLを実行していきましたが、現場ではSQLを実行するために