アプリ開発や業務システム開発をしていると、よく出てくるのが SQL です。
SQLはデータベースに保存されたデータを取得したり、追加・更新・削除したりするために使われます。

たとえば、次のような場面で使います。

  • ユーザー情報を保存する
  • 商品一覧を検索する
  • 売上データを集計する
  • 業務システムの一覧を表示する
  • ゲームのランキング情報を取得する
  • アプリの設定情報を管理する

SQLは、Webアプリ・業務システム・スマホアプリ・ゲーム・データ分析など、幅広い分野で使われています。
この記事では、SQLの基本、SQLコマンドの種類、代表的なデータベース、ローカル・クラウドでの使い分けについて解説します。

この記事でわかること

  • SQLとは何か
  • SQLとデータベースの関係
  • SQLコマンドの種類
  • RDBMSとは何か
  • RDBMS以外のデータベースの種類
  • ローカルDBとクラウドDBの違い
  • 初学者がどのDBから学ぶべきか

SQLとは

SQLとは、Structured Query Language の略です。
日本語では 構造化照会言語 と呼ばれます。

簡単に言うと、SQLは データベースに命令を出すための言語 です。

たとえば、ユーザーテーブルの一覧を取得する場合は、次のように書きます。

SELECT * FROM users;

これは、「usersテーブルのすべてのデータを取得してください」という意味です。

SQLとデータベースの関係

SQLを理解するには、まず次の3つを分けて考えるとわかりやすいです。

用語意味
データベースデータを保存する場所
RDBMSデータベースを管理するソフトウェア
SQLデータベースを操作する言語

たとえば、学校の生徒データを管理する場合、次のような表を作れます。

idnameageclass_name
1田中15A組
2佐藤16B組
3鈴木15A組

このような表形式でデータを管理する仕組みが、RDBMSです。

そして、この表に対して「データを取得する」「データを追加する」「データを更新する」「データを削除する」といった操作を行うためにSQLを使います。

RDBMSとは

RDBMSとは、Relational Database Management System の略です。
簡単に言うと、表形式のデータを管理するためのソフトウェア です。

代表的なRDBMSには、次のようなものがあります。

RDBMS特徴
MySQLWeb開発でよく使われる
PostgreSQL高機能で拡張性が高い
SQL ServerMicrosoft系、C#、VB.NETと相性が良い
Oracle Database大規模な業務システムで使われる
SQLite軽量でローカル保存に向いている
MariaDBMySQL互換のオープンソースDB

初学者向けに言うなら、まずはこう覚えれば十分です。

SQLは言語、RDBMSはSQLを実行するデータベースソフト

SQLコマンドの種類

SQLには、役割ごとにいくつかの種類があります。

種類役割代表コマンド
DQLデータを取得するSELECT
DMLデータを追加・更新・削除するINSERT / UPDATE / DELETE
DDLテーブルなどの構造を作るCREATE / ALTER / DROP
DCL権限を管理するGRANT / REVOKE
TCL処理の確定・取消を行うCOMMIT / ROLLBACK

DQL:データを取得するSQL

DQLは、データを取得するためのSQLです。

代表コマンドは SELECT です。
これでusersテーブルからname、ageを取得できます。

SELECT name, age FROM users;

また、条件を付ける場合は WHERE を使います。

SELECT name, age FROM users WHERE age >= 20;

DML:データを操作するSQL

DMLは、データを追加・更新・削除するSQLです。

代表コマンドは次の3つです。

コマンド役割
INSERTデータを追加する
UPDATEデータを更新する
DELETEデータを削除する

使用例
UPDATE と DELETE は、条件を書き忘れると大量のデータを変更・削除してしまうため注意が必要です。

INSERT INTO users (name, age) VALUES ('田中', 25);
UPDATE users SET age = 26 WHERE name = '田中';
DELETE FROM users WHERE name = '田中';

DDL:テーブル構造を作るSQL

DDLは、テーブルなどの構造を作るSQLです。

代表コマンドは次の通りです。

コマンド役割
CREATE作成する
ALTER変更する
DROP削除する

使用例
アプリ開発では最初にテーブル設計を行い、その後にDDLでテーブルを作成します。

CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name VARCHAR(100),
    age INTEGER
);

DCL:権限を管理するSQL

DCLは、ユーザー権限を管理するSQLです。

代表コマンドは次の通りです。

コマンド役割
GRANT権限を付与する
REVOKE権限を取り消す

使用例
DCLは初学者が最初から深く学ぶ必要はありません。
ただし、本番環境や業務システムでは重要です。

GRANT SELECT ON users TO app_user;

TCL:トランザクションを制御するSQL

TCLは、処理の確定や取り消しを行うSQLです。

代表コマンドは次の通りです。

コマンド役割
COMMIT変更を確定する
ROLLBACK変更を取り消す

トランザクションを簡単に説明します。
たとえば、銀行振込のような処理では、

  1. Aさんの残高を減らす
  2. Bさんの残高を増やす

この2つがセットで成功する必要があります。
途中で失敗した場合は、最初からなかったことにする必要があります。
このような処理を安全に扱うために、トランザクションを使います。

BEGIN;

UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE id = 2;

COMMIT;

データベース製品ごとのSQLの違い

SQLは標準化されていますが、すべてのデータベースで完全に同じ書き方ができるわけではありません。

たとえば、次のような違いがあります。

データベースSQLの特徴
SQL ServerT-SQLという独自拡張がある
Oracle DatabasePL/SQLという独自拡張がある
PostgreSQL標準SQL準拠と拡張性が強い
MySQLWeb系でよく使われる書き方が多い
SQLite軽量だが一部機能に違いがある

基本的な SELECT、INSERT、UPDATE、DELETE は似ています。
しかし、日付関数、文字列関数、ページング、ストアドプロシージャ、権限管理などは製品ごとに違います。

初学者の段階では、まず共通部分を学べば十分です。

RDBMS以外のデータベース

データベースには、RDBMS以外にもさまざまな種類があります。
ここは深掘りしすぎると難しくなるため、まずは全体像だけ押さえれば大丈夫です。

NoSQLデータベース

NoSQLとは、RDBMSとは違う形式でデータを管理するデータベースの総称です。

表形式にこだわらず、柔軟なデータ構造を扱いやすいのが特徴です。

代表的なNoSQLの種類は次の通りです。

種類代表例特徴
ドキュメントDBMongoDB / FirestoreJSONのような形式で保存
キー・バリューDBRedis / DynamoDBキーと値で高速に保存
グラフDBNeo4jデータ同士の関係性に強い
ワイドカラムDBCassandra / HBase大量データの分散処理に強い

NoSQLは、次のような場面で使われます。

  • 大量アクセスがあるWebサービス
  • 柔軟にデータ構造を変えたいアプリ
  • リアルタイム性が必要なサービス
  • キャッシュ
  • ログ管理
  • SNSのつながり分析

ただし、初学者がいきなりNoSQLから始める必要はありません。
まずはSQLとRDBMSを理解してから、必要に応じてNoSQLを学ぶのが現実的です。

ドキュメントDB

ドキュメントDBは、JSONのような形式でデータを保存するデータベースです。

例として、次のようなデータをそのまま保存しやすいです。

{
  "id": 1,
  "name": "田中",
  "skills": ["SQL", "C#", "Unity"]
}

代表例は次の通りです。

  • MongoDB
  • Cloud Firestore
  • CouchDB

ドキュメントDBは、データ構造が変わりやすいアプリや、Webアプリのバックエンドで使われることがあります。

キー・バリューDB

キー・バリューDBは、キーと値のペアでデータを保存します

イメージとしては、辞書や連想配列に近いです。

user:1:name = 田中
user:1:score = 5000

代表例は次の通りです。

  • Redis
  • Amazon DynamoDB
  • Memcached

キー・バリューDBは高速にデータを取り出せるため、キャッシュやセッション管理でよく使われます。

グラフDB

グラフDBは、データ同士の関係性を扱うのが得意なデータベースです。

たとえば、SNSの友達関係や、推薦システムなどに向いています

代表例は次の通りです。

  • Neo4j
  • Amazon Neptune

時系列DB

時系列DBは、時間ごとのデータを扱うのが得意なデータベースです。

代表例は次の通りです。

  • InfluxDB
  • TimescaleDB
  • Amazon Timestream

時間ごとの変化を分析したい場合に使われます。

検索エンジン系データベース

検索エンジン系DBは、全文検索やログ検索に強いデータベースです。

代表例は次の通りです。

  • Elasticsearch
  • OpenSearch
  • Solr

通常のSQLでも検索はできます。
しかし、大量の文章から高速にキーワード検索したい場合は、検索エンジン系DBの方が向いていることがあります。

ブログ記事検索、商品検索、ログ分析などで使われます。

ローカルDBとクラウドDBの違い

SQLを学ぶときには、ローカルDBとクラウドDBの違いも押さえておくと実務で役立ちます。

ローカルDBとは

ローカルDBとは、自分のPCやアプリ内、社内サーバーなどで動かすデータベースです。

代表例は次の通りです。

データベース特徴
SQLiteサーバー不要。ファイル単位で使える
MySQLWeb開発でよく使われる
PostgreSQL高機能で拡張性が高い
SQL Server Express.NETや業務アプリと相性が良い

ローカルDBのメリットは、学習しやすく、無料で始めやすいことです。
SQL初心者は、まずローカル環境で試すのがおすすめです。

クラウドDBとは

クラウドDBとは、AWS、Azure、Google Cloudなどのクラウド上で使えるデータベースです。

代表例は次の通りです。

サービス対応DB・特徴
Amazon RDSMySQL / PostgreSQL / SQL Server / Oracleなど
Azure SQL DatabaseSQL Server系のクラウドDB
Google Cloud SQLMySQL / PostgreSQL / SQL Server対応
SupabasePostgreSQLベースのBaaS
Firebase FirestoreドキュメントDB
DynamoDBキー・バリュー / ドキュメントDB
MongoDB Atlasクラウド版MongoDB

クラウドDBのメリットは、サーバー管理やバックアップ、スケール対応をサービス側に任せやすいことです。
ただし、料金、セキュリティ、ネットワーク設定には注意が必要です。

SQLとNoSQLの違い

最後に、SQLとNoSQLの違いを簡単に整理します。

比較項目SQL / RDBMSNoSQL
データ形式表形式JSON、キー値、グラフなど
構造きっちり決める柔軟に変えやすい
得意分野業務データ、集計、整合性大量データ、柔軟なデータ、リアルタイム
代表例MySQL / PostgreSQL / SQL ServerMongoDB / Redis / Firestore

初学者にとって大切なのは、どちらが優れているかではありません。

重要なのは、用途によって使い分けること です。

業務データや売上データのように、正確性や整合性が重要なものはRDBMSが向いています。一方で、チャット、リアルタイム同期、キャッシュ、大量ログなどはNoSQLが向いている場合があります。

まとめ

SQLとは、リレーショナルデータベースを操作するための言語です。

データの取得、追加、更新、削除、テーブル作成、権限管理、トランザクション制御などに使われます。

SQLコマンドには、主に次の種類があります。

種類役割
DQLデータを取得する
DMLデータを追加・更新・削除する
DDLテーブルなどの構造を作る
DCL権限を管理する
TCL処理の確定・取消を行う

SQLは主にRDBMSで使われます。

代表的なRDBMSには、MySQL、PostgreSQL、SQL Server、Oracle Database、SQLiteなどがあります。

一方で、データベースにはRDBMS以外にも、ドキュメントDB、キー・バリューDB、グラフDB、時系列DB、検索エンジン系DBなどがあります。

初学者〜中級者は、まず SQL + RDBMS を押さえるのがおすすめです。

そのうえで、目的に応じてNoSQLやクラウドDBを学んでいくと、実務でも個人開発でも使える知識になります。