【情シス初心者向け】コピペで学ぶSQL入門!テーブル作成から結合・更新・削除まで

データベース

前回は、社内システムの裏側で動いている「データベース」と「RDBMS」の基礎知識について解説しました。

今回は一歩踏み込んで、データベースを直接操作するための言語「SQL(エスキューエル)」を実際に書いてみましょう! 情シス業務では、データの調査依頼やちょっとした集計作業などでSQLを書く機会が頻繁にありますし、ほぼ全てのシステムに登場する言語です。

今回は、手元の環境(PostgreSQLやMySQL、あるいはブラウザ上のSQL実行環境など)にそのままコピペして試せる実践的な内容です。「社員マスタ」と「部署マスタ」を作り、一連の操作を体験してみましょう。

テーブルを作る(CREATE)

まずは、データを入れるための「箱(表)」を作ります。 今回は、部署の情報を管理する「部署マスタ(departments)」と、社員の情報を管理する「社員マスタ(employees)」の2つを作成します。

以下のSQLを実行してみてください。

SQL
-- 部署マスタの作成
CREATE TABLE departments (
    dept_id INT PRIMARY KEY,
    dept_name VARCHAR(50) NOT NULL
);

-- 社員マスタの作成
CREATE TABLE employees (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(50) NOT NULL,
    dept_id INT
);
  • CREATE TABLE:新しいテーブルを作成する命令です。
  • INTVARCHARはデータの「型」を表します。RDMSによって表現が異なるのでご注意ください。
  • PRIMARY KEY(主キー)は、その行を特定するための絶対に重複しないIDであることを示します。

データを入れる(INSERT)

空っぽのテーブルに、テスト用のデータを入れていきましょう。 INSERT INTO という命令を使います。

SQL
-- 部署マスタにデータを追加
INSERT INTO departments (dept_id, dept_name) VALUES 
(1, '営業部'),
(2, '総務部'),
(3, '情報システム部');

-- 社員マスタにデータを追加
INSERT INTO employees (emp_id, emp_name, dept_id) VALUES 
(101, '山田 太郎', 1),
(102, '佐藤 花子', 2),
(103, '鈴木 一郎', 3),
(104, '高橋 健太', 1);

これで、3つの部署と4名の社員のデータがデータベースに登録されました。社員マスタの dept_id には、部署マスタの dept_id と同じ数字が入っていることに注目してください。

データを検索・結合する(SELECT / JOIN)

データが入ったら、今度はそれを検索してみましょう。 データを取得するには SELECT を使います。

ただ社員一覧を見るだけでなく、「社員の名前と、その人が所属する部署名をセットで表示したい」というケースは実務で非常によくあります。ここで登場するのが、RDBの醍醐味である「結合(JOIN)」です。

SQL
-- 社員マスタと部署マスタを結合して検索
SELECT 
    employees.emp_id, 
    employees.emp_name, 
    departments.dept_name
FROM 
    employees
INNER JOIN 
    departments 
ON 
    employees.dept_id = departments.dept_id;

これを実行すると、社員番号、社員名、そして「数字(dept_id)」ではなく「営業部」などの「部署名」が横に並んで表示されたはずです。 INNER JOIN を使い、両方のテーブルの dept_id が一致するものを紐付けて(リレーションを持たせて)表示しています。

データを更新する(UPDATE)

実務では、「社員が異動になった」「名前が変わった」といった理由でデータを書き換える必要があります。 その場合は UPDATE を使います。

例として、山田さん(emp_id: 101)が営業部(1)から情報システム部(3)へ異動になったと仮定して、データを更新してみましょう。

SQL
-- 山田太郎さんの部署を「情報システム部(3)」に更新
UPDATE employees 
SET dept_id = 3 
WHERE emp_id = 101;

-- 更新結果の確認
SELECT * FROM employees WHERE emp_id = 101;

【情シスとして超重要な注意点】 UPDATE を使うときは、必ず WHERE(条件)をつけてください。 もし WHERE句を書き忘れて実行すると、全社員の部署が情報システム部に書き換わってしまい、システム障害(大惨事)になります。

データを削除する(DELETE)

最後に、不要になったデータを削除する DELETE です。 (※実際の業務システムでは、履歴を残すために「退職フラグ」などを立てて画面から見えなくする「論理削除」が多いですが、ここでは基礎としてデータベースから完全に消す「物理削除」を学びます。)

例として、高橋さん(emp_id: 104)のデータを削除してみます。

SQL
-- 高橋健太さんのデータを削除
DELETE FROM employees 
WHERE emp_id = 104;

-- 全件検索して削除されたか確認
SELECT * FROM employees;

ここでも UPDATE と同様、WHERE の付け忘れには細心の注意を払ってください。

まとめ:SQLの基本5大コマンドを制覇!

お疲れ様でした!今回は以下の基本コマンドを体験しました。

  1. CREATE(作る)
  2. INSERT(入れる)
  3. SELECT(探す・JOINでくっつける)
  4. UPDATE(更新する)
  5. DELETE(消す)

これらは総称して「CRUD(クラッド:Create, Read, Update, Delete)」と呼ばれ、あらゆる業務システムの根幹をなす処理です。

最初は呪文のように見えるかもしれませんが、実際に手を動かして結果を確認することで、少しずつパズルを解くような楽しさが分かってくると思います。情シスとしてシステム運用に関わるなら、この基礎を知っているだけでトラブル時の調査スピードが劇的に上がりますよ!

ぜひご自身の環境でも、色々なデータを入れたり結合したりして遊んでみてくださいね。

次回はRDBMSごとのSQLのちがいや、システムを設計するうえでの注意点について投稿します!

コメント

タイトルとURLをコピーしました