10
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?

データベース新卒研修まとめ

10
Last updated at Posted at 2026-05-26

はじめに

今回は4月に受けたデータベース研修で学んだことをまとめていきます。

研修内容

午前はデータベースで扱う用語などの座学、午後は演習問題を進めていく流れでした。
学んだ内容についてまとめていきます。

データベースとは

ある特定の条件に当てはまる「データ」を複数集めて後で使いやすい形に整理した情報のかたまりのこと

メリット

  • 複数のデータをまとめて管理できる
  • 目的のデータを簡単に探すことができる
  • 簡単に編集して使うことができる

基本的な用語解説

スキーマ

フォルダのようにデータベースの領域を区切ったもの

テーブル

データを行と列の表形式で格納する場所
Excelの表(テーブル)に近いイメージ

カラム

データベースにおける列

レコード

データベースにおける行

フィールド

データ項目

画像で表すと以下のようになります

DBMS

データベースマネージメントシステムの略称
コンピュータ上でデータベースを管理してくれるシステム
例. Oracle、PostgreSQL、MySQL など

SQL

Structured Query Languageの略称で、データベースを操作するための言語のこと
Structured=構造、Query=問合せ、Language=言語

SQL文の基礎

SELECT

どの列を表示するかを指定します。

FROM

どのテーブルを使うかを指定します。

WHERE

「どのデータだけ取得するか」の条件を指定します。

データベースでの実行コマンド

以下の4つのテーブルを使っていくつかSQL文についてまとめます。

全データの取得

会員テーブルからのすべての会員情報の取得

実行SQL

SELECT * FROM (スキーマ名).会員;

特定列だけの取得

会員テーブルの全会員情報から氏名だけを取得する

実行SQL

SELECT 姓, 名 FROM (スキーマ名).会員;

先ほどの結果とは違い、姓と名だけが取得されます
*(アスタリスク)は「全ての列」を意味します。

特定行だけの取得

会員テーブルの会員情報から男性の情報だけを取得する

実行SQL 

SELECT * FROM (スキーマ名).会員 WHERE 性別 = ‘男’;

全データではなく、男性のデータだけが取得されます
“=“は等しいという意味の比較演算子

いろいろな特定行取得方法

会員テーブルの会員情報から苗字に”田”がつく会員情報を取得する

実行SQL 

SELECT * FROM (スキーマ名).会員 WHERE 姓 LIKE ‘%田%’;

=の代わりにLIKEとすることで、あいまい検索が可能になります
%は「何の文字があってもよい」ということを示します
一般にこういう%のような意味合いの文字をワイルドカードと呼ぶ

会員テーブルの会員情報から女性で
会員IDがA0004以下の会員情報を取得する

実行SQL 

SELECT * FROM (スキーマ名).会員 WHERE 性別 = ‘女’ AND 会員ID <= ‘A0004’;

??=??などの条件をANDでくっつけることで複数の条件の指定ができる

会員テーブルの会員情報から女性、
または東京都町田市に住む会員情報を取得する
実行SQL 

SELECT * FROM (スキーマ名).会員 WHERE 性別 = ‘女’ OR 住所 = ‘東京都町田市’;

??=??などの条件をORでくっつけることで
複数の条件のうちいずれかに合致する場合、という指定ができる

会員テーブルの会員情報から会員IDがA0001かA0004かA0006の会員情報を取得する

実行SQL

SELECT * FROM (スキーマ名).会員 WHERE 会員ID IN (‘A0001’,’A0004’,’A0006’);

IN (1,2,3,..)ように括弧内に条件を記載することで
括弧内の複数の条件のうちいずれかに一致する場合、という指定ができる

取得結果の並び替え

会員テーブルから男性の会員情報を取得し、生年月日が年齢の高い順に並び替える

実行SQL

SELECT * FROM (スキーマ名).会員
WHERE 性別 = ‘男’ ORDER BY 生年月日 ASC;

ORDER BYをつかうことで指定したカラムの昇順で並び替え(ソート)ができます。
ASCDESC に変えると降順での並び替えになります。
ASC はデフォルトで適用されるため、省略可能です。
ORDER BY 生年月日 ;でも上記のSQL文と同じ結果になります。
降順にしたい場合DESCは省略できないです。

集計関数について

会員テーブルから女性の会員情報の件数(レコード数)を取得する

実行SQL

SELECT COUNT(*) FROM (スキーマ名).会員 WHERE 性別 = ‘女’;

SELECT対象をCOUNT(*)とすることで条件に合致したレコードの件数を取得できる

他にも以下のような集計関数があります

テーブル同士の結合

注文明細テーブルには商品IDはあるが商品名は持っていない
注文明細データを取得すると同時に商品名も取得できれば便利

実行SQL

SELECT 注文明細.注文ID, 注文明細.商品ID, 商品.商品名 FROM (スキーマ名).注文明細
INNER JOIN (スキーマ名).商品 ON 注文明細.商品ID = 商品.商品ID;

以下のようなイメージです

FROMでテーブルを指定した後、INNER JOIN テーブル名 ON 結合条件と書くことで
指定したテーブル同士を内部結合し、自分のテーブルにない情報を参照することができる
結合条件にはそれぞれのテーブルで共通となるカラムを=で繋げる必要がある

3つ以上のテーブルの結合

3つ以上のテーブルの結合を行う際はinner join を追加すればできます。

実行SQL

SELECT 注文.注文日,注文明細.注文ID,商品.商品名,注文明細.個数 FROM 注文明細
INNER JOIN 注文 ON 注文明細.注文ID = 注文.注文ID
INNER JOIN 商品 ON 注文明細.商品ID = 商品.商品ID;

以下のSQL文だとダメです。
実行SQL

SELECT 注文.注文日,注文明細.注文ID,商品.商品名,注文明細.個数 FROM 注文明細
INNER JOIN 注文 ON 注文明細.商品ID = 商品.商品ID
INNER JOIN 商品 ON 注文明細.商品ID = 商品.商品ID;

このSQL文がダメな理由は、テーブル結合の順番を正しくできていないためです。

まず1つ目のINNER JOINでは「注文」テーブルを結合しているため、
ON句では「注文明細」と「注文」を結びつける条件を書く必要があります。

しかし、このSQL文ではまだ結合していない「商品」テーブルを
結合条件で参照してしまっています。

テーブル結合では、
「今どのテーブルを結合しているのか」を意識して
順番に結合条件を書くことが大事。

GROUP BYについて

注文テーブルと注文明細テーブルから、会員ごとの注文件数を取得してください。

実行SQL

SELECT 注文.会員ID, COUNT(*) FROM 注文 GROUP BY 注文.会員ID;

GROUP BY とは、同じ値ごとにデータをグループ化して集計するためのSQL構文です。
COUNT() や SUM() などの集計関数と一緒によく使用されます。

まとめ

今回は
基本的な用語
SQL文の基礎
様々なデータの取得方法についてまとめてみました。
今後は UPDATE や DELETE、サブクエリなども学んでいきたいです。

10
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
10
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?