~なぜ、バイト先ではデータベースを使っていたのか?~

研修成果

  • データベース初学者を対象にそもそもデータベースとは何か?ファイルとどう違うのか?どんなメリットがあるのか?というところからSQLを使い既存のテーブル操作ができる座学と演習の繰り返しにより学びます。また、データベースのテーブルはどのような考えのもと作られているのかを学びます。また、先の「 サーバーサイドプログラミング 」と組み合わせてJDBCを利用できるようにします。使用予定データベースはMySQLです。

達成目標

  • データベースの今日的意義を他者に説明できるWebアプリケーションとは何かを他者に説明できる
  • SQLのDML文を自力で組み立てて発行できる
  • テーブル設計を他者と協力して完遂できる

対象

IT企業の新入社員または第二新卒。自宅でもPCがあり、データベースの自習環境が構築できること。

前提知識

以下の5講座に参加していること。または、同等の知識があること。

カリキュラム例

オリエンテーション

・データベースの勉強の仕方
・環境構築の方法

STEP
1

データベースとは

(1) DDL,DML,DCL
(2) データ型と演算子
(3) 関数

STEP
2

DML

(1) 算術演算子
(2) 比較演算子
(3) 論理演算子
(4) 検索結果のソート
(5) 内部結合/外部結合
(6) 副問合せ
(7) 挿入、更新、削除

STEP
3

DML演習

(1) 課題の提示
(2) 個人ワーク
(3) チームワーク
(3) 振り返り

STEP
4

テーブル設計

(1) データ項目の洗い出し
(2) 正規化
(3) リレーションの確認
(4) データ型と制約の設定

STEP
5

テーブル設計演習

(1) 課題の提示
(2) 個人ワーク
(3) チームワーク
(3) 振り返り

STEP
6

まとめ

◎理解度チェックテスト

STEP
7

注1)受講者の習熟度に合わせて内容や時間配分を一部変更する場合があります。
注2)上記カリキュラム中に表記がなくともディスカッションや演習、小テストを随時行い、可能な限り個々人にあわせた柔軟な進め方をします。

価格(ノンカスタマイズの場合)

講師料:1日あたり15万円(税別)

テキスト代:3,000円(税別) ✕ 研修参加人数

新入社員の皆さんのFAQ

※MySQL Workbench 8.0CEで検証しております。

テーブルを直接編集できません。「Read Only」と表示されており「!」のマークの上にツールチップで"the table has no unique row identifier (Primary Key or Nut Null unique index)"と表示されます。

行を一意に特定できないためです。

主キーを設定すればテーブルを直接編集できるようになるはずです。

テーブルにPRIMARY KEYをつけたカラムを作れば編集できるようになります。

文字が小さくて見にくいです。

フォントサイズを変更します。

メニューから「Edit」→ 「preferences」をクリックします。

以下の図のように「Fonts & Colors」をクリックして「SQL Editor」「Resultset Grid」の文字サイズを確認してください。

後ろについている数値がフォントサイズなのでこれを大きくし「OK」をクリックします。

いったんMySQL WorkBecnchを閉じてから再度起動するとフォントサイズが大きくなっているはずです。

フォントサイズを変更

UPDATE文を実行すると、以下のエラーメッセージが出ます。

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> (略)

どうしたらいいでしょうか?

ワークベンチが"SAFE_UPDATES"という設定で、大量のupdateやdeleteに制限をかけてくれています。

研修中はひとまず「SET SQL_SAFE_UPDATES = 0;」を実行してから、再度実行してみて下さい。

あまりおすすめしませんが、Safe Updatesのチェックを外すことで、恒久的に制限を外すことも可能です。

パスワードの変え方を教えて下さい。

Administration」のタブから「Users and Privileges」タブを選択します。

以下のダイアログからパスワードの変更ができます。

パスワードの変更

サブクエリーを実行すると次のエラーメッセージが出ます。「Error Code: 1242. Subquery returns more than 1 row」

サブクエリーの実行結果が複数返っているのに対して、「where xxx =」のように実行結果が1つの抽出条件を指定しているのが原因です。

「where xxx in」と複数の実行結果に対応できるように書き換えてみてください。

同一のテーブルに対してselect文でcount(*)としたときの値とcount(列名)としたときの値が一致しません。

列にnull値が含まれているのが原因です。

count(列名)としたときには、nullの行をカウントしません。

一方でcount(*)はnull値のある行があってもカウントします。

データのエクスポートにスキーマを含めたいです。

エクスポート時にスキーマを含めないとインポート先でもスキーマを作成しなければなりません。

スキーマ作成の手間を省くには、エクスポート時に「Include create schema」というチェックボックスにチェックを入れます。

AUTO_INCREMENT属性の列を持つテーブルにinsert文を発行する場合にどう書けばいいですか?

AUTO_INCREMENT属性の列にはNULLまたは0を設定します。

以下の図は、employeeテーブルのid列にはAUTO_INCREMENT属性がかかっているものとした場合のinsert文の例です。

AUTO_INCREMENT属性の列を持つテーブルにinsert文を発行する

MySQLで「CREATE DATABASE database_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;」
のように書きました。

最後のgeneral_ciとはどういう意味ですか?

Case insensitiveの略です。

アルファベットの大文字小文字を区別しない方法で、データを並べ替えたり検索のマッチングを行う際に関係してきます。

例えばSELECT文の検索条件において「car」「CAR」「cAr」はすべて同じものとして抽出されます。

他には、cs: Case sensitiveやbin: binaryがあります。

また、「utf8mb4_unicode_520_ci」という照合順序も目にすることがあると思います。

aiは、Accent Insensitiveの略で、アクセントの違いを無視します。
このため「あ」と「ア」、「か」と「が」は等しいとして評価されます。

研修中に配布されたDumpファイルをインポートする方法を教えて下さい

1.お送りしたZIPファイルを展開してデスクトップなどのわかりやすい場所において下さい。

2.MySQL Workbenchのメニュー「Server」から「Data Import」を選びます。

3.ダイアログボックスが表示されたら下図の赤枠の部分の右横の3点リーダーから拡張子がsqlになっているファイルの入ったフォルダを選択します(解凍時にフォルダが二重になることがあるので気をつけてください)。

MySQLWorkbenchImport

4.上図の右下にある「Start Import」ボタンをクリックするとインポートが始まります。

コード補完でキーワードが小文字になります。大文字にするにはどうすればいいですか?

「Edit」-「Preferences」-「SQL Editor」- 「Productivity」から「Use Uppercase in code completion」にチェックをつけてください。

MySQLWorkbenchで入力補完に大文字を使用する

以上。

MySQL Workbench用語集

  1. MySQL Workbench: MySQLのグラフィカルな統合開発環境で、データベース設計、管理、および開発者向けの機能を提供します。
  2. ER図 (Entity Relationship Diagram): データベースのエンティティ、属性、およびそれらの間のリレーションシップを視覚化するために使用される図。
  3. スキーマ: データベースの構造やオブジェクトの関連性を表現するための青写真。
  4. テーブル: データベース内のデータを格納する基本的な構造。行と列で構成されます。
  5. カラム: テーブル内の個々のデータフィールドを表す列。
  6. データ型: カラムに格納されるデータのタイプ(例: INT, VARCHAR, DATE, etc.)。
  7. 主キー (Primary Key): テーブル内の一意の識別子であるカラム。
  8. 外部キー (Foreign Key): 他のテーブルの主キーを参照するカラム。
  9. インデックス: データ検索を高速化するために使用されるデータベースオブジェクト。
  10. クエリ: データベースからデータを取得、挿入、更新、削除するためのSQLコマンド。
  11. SQLエディタ: MySQL Workbench内のテキストエディタで、SQLクエリを作成および実行するために使用されます。
  12. データモデリング: データベースの構造やリレーションシップを設計するプロセス。
  13. 正規化: データベース設計を効率的で柔軟にするために、データの冗長性と不整合を排除するプロセス。
  14. バックアップ: データベースのデータや構造をコピーして、データ喪失や障害から回復できるようにするプロセス。
  15. マイグレーション: データベースの構造やデータを別のデータベースシステムに移行するプロセス。
  16. データエクスポート: データベースのデータや構造を外部ファイル(例: CSV, JSON, SQL)に書き出すプロセス。
  17. データインポート: 外部ファイルからデータベースにデータや構造を取り込むプロセス。
  18. リレーショナルデータベース: エンティティとその関連性を表現するために、テーブルを使用するデータベースシステム。
  19. トランザクション: 一連のデータベース操作で構成される論理的な単位。トランザクションは、データの整合性を保つために、ACID特性(原子性、一貫性、分離性、耐久性)を満たす必要があります。
  20. ビュー: 一つ以上のテーブルから得られる仮想的なテーブル。ビューは、データベースの複雑なクエリを簡略化し、データへのアクセス制限を設定するために使用されます。
  21. ストアドプロシージャ: データベースに保存され、再利用可能なプリコンパイルされたSQLスクリプト。
  22. トリガー: 特定のイベント(例: INSERT、UPDATE、DELETE)が発生したときに自動的に実行されるストアドプロシージャ。
  23. ユーザ管理: データベースへのアクセスと権限を制御するために使用されるユーザアカウントの作成、削除、および変更。
  24. プライマリ-フォリングスキーマ: マスタースキーマとスレーブスキーマと呼ばれる2つのスキーマを持つデータベース設計アプローチ。プライマリ-フォリングスキーマは、データベースの可用性を向上させるために使用されます。
  25. オプティマイザ: SQLクエリを最適化するために、データベース内の統計情報を使用して最良の実行計画を選択するプロセス。
  26. クエリプラン: SQLクエリを実行するための最適なアクセスパスやアルゴリズムを示す実行計画。
  27. シンタックスチェック: SQLクエリの文法や構造が正しいかどうかを検証するプロセス。シンタックスチェックは、クエリのエラーや問題を特定し、修正するために使用されます。
  28. デッドロック: 二つ以上のトランザクションが互いに他方のリソースを待ち続ける状態。デッドロックは、データベースのパフォーマンスに悪影響を与えるため、回避または解決が必要です。
  29. コンソール: MySQL Workbench内のインタラクティブなテキストベースのインターフェイス。コンソールを使用して、データベース管理タスクやデバッグ作業を実行できます。
  30. オートコンプリート: SQLエディタで入力中のコードを予測し、速く効率的にクエリを記述するための機能。
  31. パフォーマンスダッシュボード: MySQL Workbenchで提供されるツールの一つで、データベースのパフォーマンスメトリクスをリアルタイムで表示します。これにより、問題の特定と解決が容易になります。
  32. クエリ履歴: 過去に実行されたSQLクエリのリスト。クエリ履歴は、以前のクエリを再利用または参照するために使用されます。
  33. コネクションマネージャ: MySQL Workbench内で、データベースへの接続を管理するツール。複数のデータベースへの接続を簡単に切り替えることができます。
  34. サーバステータス: MySQL Workbenchで表示されるデータベースサーバーの現在の状態やリソース利用状況。
  35. セッション: ユーザーがデータベースに接続し、トランザクションやクエリを実行できる状態。
  36. クエリプロファイラ: SQLクエリの実行時間やリソース使用状況を詳細に分析するためのツール。クエリプロファイラを使用して、パフォーマンスの問題を特定し、最適化することができます。
  37. テーブルスペース: データベース内のデータおよびインデックスを格納するためのディスク領域。
  38. データベースエンジン: データベースシステムのコアコンポーネントで、データの格納、検索、更新、削除などの基本的な操作を管理するためのソフトウェア。
  39. キャッシュ: データベースが頻繁にアクセスするデータや結果セットを一時的に保存するためのメモリ領域。キャッシュを利用することで、データベースのパフォーマンスが向上します。
  40. レプリケーション: データベースのデータを複数のサーバーにコピーして分散させるプロセス。レプリケーションは、データベースの可用性、耐障害性、およびパフォーマンスを向上させる目的で使用されます。
  41. ロールバック: 失敗したトランザクションやエラーを修正するために、データベースの状態を以前の状態に戻すプロセス。
  42. コミット: トランザクションが正常に完了したときに、データベースへの変更を永続化するプロセス。
  43. ログファイル: データベースの操作やイベントに関する情報を記録するファイル。ログファイルは、デバッグ、監査、およびパフォーマンス分析の目的で使用されます。
  44. SQL (Structured Query Language): データベース管理システムでデータの定義、操作、制御を行うための標準的なプログラミング言語。
  45. クライアント/サーバーアーキテクチャ: データベースシステムの構成モデルで、クライアント(ユーザーまたはアプリケーション)がサーバー(データベース)にアクセスする形式。
  46. オブジェクトブラウザ: MySQL Workbench内のツールで、データベースオブジェクト(テーブル、ビュー、ストアドプロシージャなど)を表示、編集、管理するために使用されます。
  47. クエリ実行計画: クエリオプティマイザが生成する、クエリを実行するための最適なステップのシーケンス。