ニュースやIT系の記事、エンジニアの求人情報などで「SQL」という言葉を見かけたことがある方は多いのではないでしょうか。
データベースという言葉と一緒に出てくることが多いものの、プログラミング言語の一種なのか、ソフトウェアの名前なのか、分かりにくいと感じる方も少なくありません。
一言でいえば、SQLとはデータベースに保存されたデータを検索したり、追加・変更・削除したりするために使う言語のことです。
この記事では、SQLの意味や仕組み、使い方、NoSQLやプログラミング言語との違いについてわかりやすく解説します。
SQLとは
SQLとは、データベースに保存されたデータをやり取りするための言語です。「エスキューエル」と読みます。
主に、表の形でデータを管理するリレーショナルデータベース(RDB)を操作する目的で使われています。
検索・追加・変更・削除といった基本の操作を、決まった文法に沿った文で指示できる点が特徴です。
データベースの名前そのものではなく、データベースに向けて指示を出すための共通の書き方、という位置づけで捉えると分かりやすくなります。
SQLの由来
SQLは、データベースを扱う製品が広まり始めた時期に、同じような書き方で操作できる仕組みを目指して整えられたという経緯があります。
開発の中心を担ったのは大手コンピューター企業で、当初は社内の研究プロジェクトの一部として考案されたとされています。
その後、国際的な標準化団体によって規格として定められ、メーカーの異なるデータベース同士でも共通の書き方で操作できる土台が作られました。
現在広く使われているデータベース製品の多くが、この標準規格に沿ったSQLへ対応しています。
SQLの仕組み
SQLで操作するデータは、「テーブル」と呼ばれる表の形で保存されています。
テーブルには行と列があり、行が1件分のデータ、列がその項目を表します。
SQLの文は、どのテーブルの、どの列を、どんな条件で取り出すかを指定する形で書きます。
処理の手順を一行ずつ細かく指示するのではなく、欲しい結果の条件を示すだけで、具体的な取り出し方はデータベース側が考えて実行してくれる仕組みになっています。
SQLの命令の種類
SQLの命令は、役割によって大きく3つに分けられます。
1つめは、データそのものを操作するための命令で、検索や追加、更新、削除などが含まれます。
2つめは、テーブルの構造を作ったり変更したりするための命令です。
3つめは、データベースを使う人の権限を管理したり、変更内容を確定・取り消ししたりするための命令です。
| 分類 | 代表的な命令 | 主な役割 |
|---|---|---|
| データ操作 | SELECT、INSERT、UPDATE、DELETE | データの検索・追加・更新・削除を行う |
| 構造の定義 | CREATE、ALTER、DROP | テーブルなどの構造を作成・変更・削除する |
| 制御・権限 | GRANT、REVOKE、COMMIT、ROLLBACK | 権限の管理や変更内容の確定・取り消しを行う |
実務で最も使われる頻度が高いのは、データを検索するSELECTです。
SQLを使った例文
実際のSQLの文には、次のようなものがあります。
- SELECT * FROM users WHERE age > 20; (usersテーブルから年齢が20歳を超える行をすべて取り出す)
- INSERT INTO users (name, age) VALUES (‘田中’, 28); (usersテーブルに新しい行を1件追加する)
- UPDATE users SET age = 29 WHERE name = ‘田中’; (名前が田中である行の年齢を更新する)
- DELETE FROM users WHERE age < 18; (年齢が18歳未満の行を削除する)
このように、SQLの文は英語に近い単語の組み合わせで書かれているため、プログラミングに慣れていない方でも読み解きやすい形になっています。
SQLとプログラミング言語の違い
SQLは命令文を書くという点で、プログラミング言語の一種として紹介されることがあります。
ただし、処理の手順を細かく組み立てる一般的なプログラミング言語とは、性質がかなり異なります。
PythonやJavaなどの言語は、条件分岐や繰り返しを組み合わせて、処理の流れを自分で一つずつ組み立てる書き方が中心です。
一方のSQLは、欲しい結果だけを指定し、実行の手順はデータベース側に任せる書き方が中心になっています。
そのためSQLだけでアプリケーション全体を作ることは少なく、他のプログラミング言語からSQLの文を呼び出して使う形が一般的です。
SQLとNoSQLの違い
NoSQLとは、表の形にとらわれずにデータを保存する種類のデータベースを指す言葉です。
SQLが対象とするリレーショナルデータベースとは、データの構造や問い合わせの書き方が異なります。
NoSQLの製品では、文書のような形や、キーと値を組にした形でデータを保存するものが多く見られます。
そのため問い合わせの方法もSQLとは別の書き方を使うことが一般的です。
| 項目 | SQL(リレーショナルデータベース) | NoSQL |
|---|---|---|
| データの形 | 行と列を持つ表 | 文書形式・キーと値の組など |
| 得意な場面 | データ同士の関係が決まっている処理 | 大量のデータを柔軟な形で扱う処理 |
| 問い合わせの書き方 | 共通の標準規格に沿った文 | 製品ごとに異なる方法 |
どちらが優れているというより、扱うデータの性質や用途に応じて使い分けるものと捉えると分かりやすくなります。
SQLが使われる場面
SQLは、さまざまなシステムの裏側でデータをやり取りする場面に使われています。
- ウェブサービスの会員情報や注文履歴を管理する処理
- 業務システムで在庫や売上のデータを集計する処理
- アプリの裏側でユーザーの操作履歴を記録・取得する処理
利用者からは見えにくい部分ですが、普段使っているサービスの多くで、こうした形でSQLが働いています。
SQLを使うメリット
SQLの書き方は国際的な標準規格に沿っているため、特定のデータベース製品に限らず通用しやすいという利点があります。
一つの書き方を覚えておけば、転職や異動で扱うシステムが変わっても、知識をある程度そのまま活かせます。
また、データの扱い方を理解しておくと、エンジニア以外の職種でも、データ分析やレポート作成の業務に役立つ場面があります。
SQLに関するよくある誤解
SQLはデータベースという製品の名前だと誤解されることがありますが、SQLはあくまでデータを操作するための言語であり、具体的な製品そのものではありません。
MySQLやPostgreSQLなどの名称にも「SQL」という文字が含まれているため、混同されやすいところです。
これらは、SQLという言語に対応したデータベース製品の名前であり、SQLそのものとは別の存在です。
また、SQLを使えばどの製品でも全く同じ文がそのまま通用すると思われがちですが、実際には製品ごとに独自の拡張や細かな書き方の違いがあります。
まとめ
SQLとは、リレーショナルデータベースに保存されたデータを検索・追加・更新・削除するための言語です。
命令はデータの操作、構造の定義、権限や変更の管理という役割ごとに分けられており、なかでもデータを検索するSELECT文が実務で最も多く使われています。
プログラミング言語の一種として紹介されることもありますが、処理の手順を細かく書く一般的な言語とは異なり、欲しい結果を宣言する書き方である点が大きな特徴です。
NoSQLとは扱うデータの構造や得意な場面が異なるため、優劣で捉えるのではなく、目的に応じて使い分けるものと理解しておくとよいでしょう。


コメント