😊

SQLの基礎知識(前編)

2025/02/03に公開

1. SQLとは?

SQL(Structured Query Language)は、データベースを操作するための言語です。データを管理・操作する際に広く利用されており、特にリレーショナルデータベース(RDB)で使用されることが一般的です。以下では、SQLを学ぶうえで必要な基礎知識について詳しく説明します。

1.1 SQLとセットで覚えておきたい「データベース」

データベースは、データを整理して効率的に保存・管理するための仕組みです。例えば、顧客情報や製品在庫、販売履歴などのデータを一元管理することで、必要な情報をすばやく取得できます。

データベースの特徴

  • データの永続性: 保存されたデータは、システムを再起動しても保持されます。
  • 効率的な検索と管理: データを簡単に検索・更新できる仕組みが用意されています。
  • 同時アクセスの管理: 複数のユーザーが同時にアクセスしても整合性が保たれます。

1.2 データベースを操作するのに必要な「データベース言語」

データベース言語は、データベースを操作するための手段です。SQLはその中でも代表的な言語であり、以下の3つの主要なカテゴリに分けられます。

  • データ定義言語 (DDL: Data Definition Language)

    • データベースやテーブルの構造を定義する。
    • 例: CREATE TABLEALTER TABLEDROP TABLE
  • データ操作言語 (DML: Data Manipulation Language)

    • データを操作するための命令。
    • 例: SELECTINSERTUPDATEDELETE
  • データ制御言語 (DCL: Data Control Language)

    • データへのアクセス権限を制御する。
    • 例: GRANTREVOKE

1.3 「RDB」という種類のデータベースを操作する

データベースにはいくつかの種類がありますが、SQLが主に使用されるのはリレーショナルデータベース(RDB: Relational Database)です。RDBは、データを「表(テーブル)」の形式で保存する点が特徴です。

1.3.1 階層型データベース

  • データを木構造で表現する。
  • 主に古いシステムや特定用途で使用される。
  • 例: IBMのIMS。

1.3.2 ネットワーク型データベース

  • データをグラフ構造で表現する。
  • 複雑なリレーションシップを扱うのに適している。
  • 例: IDMS。

1.3.3 リレーショナル型のデータベース

  • データをテーブル形式で管理する。
  • テーブル間の関係性(リレーション)を利用してデータを効率的に取得。
  • 例: MySQL、PostgreSQL、Oracle Database。

1.4 プログラムを動かすことはできない

SQLは、データベースの操作に特化した言語であり、一般的なプログラミング言語(例: Python、JavaScript)のように複雑な処理を記述することはできません。ただし、以下のように連携することで、プログラムからデータベースを操作できます。

  • プログラムでSQLを呼び出す: アプリケーションからSQLを利用してデータを取得・操作する。
    • 例: Pythonのsqlite3モジュールやJavaのJDBC
  • ストアドプロシージャ: データベース内で定義されるSQLスクリプト。
    • 例: トランザクション処理や集計処理。

注意点

SQLは非常に強力なツールですが、適切に使用しないとデータの整合性が失われるリスクがあります。そのため、SQLを使う際には以下を心がけましょう。

  • 正確な要件定義とテスト。
  • 権限管理の徹底。
  • インデックスの適切な設定。

2. SQLを学ぶ上で覚えておきたい用語

SQLを学ぶ際に重要な基本用語を解説します。これらの用語を理解することで、SQLの操作やデータベースの構造をより深く理解できます。

2.1. テーブル

データを表形式で管理する構造です。テーブルは行(レコード)と列(カラム)から構成され、データを体系的に整理します。

特徴

  • テーブル名で識別されます。
  • 各列には特定のデータ型が設定されています。

id name age
1 Alice 25
2 Bob 30

2.2. カラム(列)

テーブルの縦方向の構成要素で、各データの属性や項目を表します。例えば、"name"カラムは名前を格納します。

特徴

  • 各カラムには名前とデータ型が設定されています。
  • データ型は文字列(VARCHAR)、数値(INT)などがあります。

2.3. レコード(行)

テーブルの横方向の構成要素で、1つのデータ単位を表します。レコードは複数のカラムからなるデータの集合体です。

特徴

  • テーブルの行ごとに異なるデータが格納されます。
  • 各レコードには主キーで一意性が保証されます(後述)。

2.4. フィールド

テーブル内の特定のカラムとレコードが交差する1つのデータ要素です。例えば、"name"カラムの"Alice"は1つのフィールドです。

特徴

  • フィールドは具体的な値を持ちます。
  • 空(NULL)の場合もあります。

2.5. 主キー(プライマリーキー)

テーブル内の各レコードを一意に識別するためのカラム、またはカラムの組み合わせです。

特徴

  • 主キーの値は重複できません。
  • NULL値は許可されません。

以下の"id"カラムは主キーとして設定されています。

id name age
1 Alice 25
2 Bob 30

2.6. リレーション

異なるテーブル間の関連を定義する仕組みです。リレーショナルデータベースでは、リレーションを利用してデータを結びつけます。

特徴

  • 外部キー(Foreign Key)を使用してリレーションを構築します。
  • 例: 顧客テーブルと注文テーブルを"customer_id"で関連付ける。

2.7. トランザクション

一連のSQL操作をまとめて管理する単位です。トランザクションはすべての操作が成功するか、すべてが取り消されるかのどちらかです。

特徴

  • データの一貫性を保ちます。
  • 4つのACID特性(Atomicity, Consistency, Isolation, Durability)があります。

2.8. コミット(COMMIT)

トランザクションで行われた変更を確定する操作です。コミットを実行すると、データベースに変更が反映されます。

使用例

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

2.9. ロールバック(ROLLBACK)

トランザクションで行った変更を取り消す操作です。ロールバックを実行すると、データベースはトランザクション開始前の状態に戻ります。

使用例

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
ROLLBACK;

これらの用語を理解することで、SQLやデータベースの基本的な操作や概念をスムーズに学べるようになります。

3. SQLでできること

SQL(Structured Query Language)は、データベースを操作するための言語であり、以下のようなさまざまな機能を持っています。初心者がSQLの基本を学ぶ際に、どのような操作が可能なのかを理解することが重要です。

3.1 データの作成

SQLを使用して、新しいデータベースやテーブルを作成することができます。

CREATE DATABASE sample_db;

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
  • CREATE DATABASE:新しいデータベースを作成します。
  • CREATE TABLE:新しいテーブルを作成します。

3.2 データの挿入

テーブルにデータを追加することができます。

INSERT INTO users (id, name, age)
VALUES (1, 'Alice', 25);
  • INSERT INTO:テーブルに新しいレコードを追加します。

3.3 データの取得

データベースから特定のデータを検索して取得することができます。

SELECT * FROM users;

SELECT name, age FROM users WHERE age > 20;
  • SELECT:データを取得します。
  • WHERE:条件を指定して検索します。

3.4 データの更新

既存のデータを変更することができます。

UPDATE users
SET age = 26
WHERE id = 1;
  • UPDATE:既存のデータを更新します。
  • SET:更新する内容を指定します。

3.5 データの削除

不要になったデータを削除することができます。

DELETE FROM users
WHERE id = 1;
  • DELETE:データを削除します。
  • WHERE:削除する条件を指定します。

3.6 テーブルやデータベースの変更

既存のテーブルやデータベースの構造を変更することができます。

ALTER TABLE users
ADD email VARCHAR(100);
  • ALTER TABLE:テーブルの構造を変更します。
  • ADD:新しいカラムを追加します。

3.7 データの集計

SQLを使ってデータを集計し、統計情報を取得することができます。

SELECT AVG(age) AS average_age
FROM users;
  • AVG:平均値を計算します。
  • AS:列に別名を付けます。

3.8 トランザクション管理

複数の操作をまとめて実行し、一貫性を保つことができます。

BEGIN;
UPDATE users SET age = 30 WHERE id = 1;
UPDATE users SET age = 28 WHERE id = 2;
COMMIT;
  • BEGIN:トランザクションを開始します。
  • COMMIT:変更を確定します。
  • ROLLBACK:変更を元に戻します(必要に応じて)。

3.9 アクセス制御

ユーザーごとにアクセス権限を設定し、データの安全性を確保することができます。

GRANT SELECT, INSERT ON users TO 'readonly_user';
  • GRANT:ユーザーに権限を付与します。
  • REVOKE:付与した権限を取り消します。

まとめ

SQLを使うことで、データベースの作成から管理、データの操作、集計、セキュリティ管理まで、幅広い操作が可能です。これらの基本機能を理解し活用することで、効率的にデータを管理・活用することができます。

次は、具体的なSQLの文法や実際に手を動かして試す方法について学んでいきましょう。

Discussion