こんにちは、かつコーチです。
ここまでの記事で「データベース」「RDBMS」について解説してきました。
今回はいよいよ、そのRDBMSを操作するための言語であるSQLについて解説します。
「SQLって何の略?」「プログラミング言語なの?」という疑問を持つ人は多いです。
私も最初は「JavaScriptやPHPと同じような言語」だと勘違いしていました。
SQLとは?
SQLの定義
SQL(Structured Query Language)とは、RDBMSに対してデータの操作を指示するための専用言語です。
日本語では「構造化問い合わせ言語」と訳されます。
SQLを使うことで、以下のような操作をデータベースに指示できます。
- データを取得する(SELECT)
- データを追加する(INSERT)
- データを更新する(UPDATE)
- データを削除する(DELETE)
- テーブルの構造を作成・変更する(CREATE、ALTERなど)
プログラミング言語との違い
SQLはPythonやJavaScriptのような汎用プログラミング言語とは性質が異なります。
| SQL | 汎用プログラミング言語 | |
|---|---|---|
| 主な役割 | データベースへのデータ操作に特化 | 幅広い処理(計算・制御・UI構築など) |
| 記述スタイル | 「何がほしいか」を宣言する | 「どう処理するか」を手順で書く |
| 単体での実行 | 基本的にDBMSと組み合わせて使う | 単体でアプリとして動く |
SQLは「宣言型言語」と呼ばれる分類に属し、「結果として何がほしいか」を書けば、DBMS側が最適な手順で処理してくれるという特徴があります。
「どうやって探すか」を自分で書く必要がない点が、if文やfor文を書くプログラミング言語との大きな違いです。
SQLの4つの分類
SQLの命令は、役割によって大きく4つに分類されます。
DQL(データ検索)
DQL(Data Query Language)は、データを検索するための命令です。
代表的なのがSELECT文で、SQL基礎編の「2. SELECT基礎」カテゴリで詳しく扱います。
SELECT name, email FROM users;
DML(データ操作)
DML(Data Manipulation Language)は、データの追加・更新・削除を行う命令です。
-- 追加
INSERT INTO users (name, email) VALUES ('田中太郎', 'tanaka@example.com');
-- 更新
UPDATE users SET email = 'new@example.com' WHERE id = 1;
-- 削除
DELETE FROM users WHERE id = 1;
DDL(データ定義)
DDL(Data Definition Language)は、テーブルそのものの構造を作成・変更・削除する命令です。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL
);
DCL(データ制御)
DCL(Data Control Language)は、データベースへのアクセス権限を管理する命令です。GRANT(権限付与)やREVOKE(権限取り消し)などがありますが、初中級のうちはあまり触れる機会は多くありません。
なぜSQLを学ぶ必要があるのか
アプリ開発で必ず使う場面がある
WebアプリやスマホアプリはたいていDBを利用しており、開発の裏側では常にSQLが実行されています。
LaravelのEloquentやDjangoのORMのように、SQLを直接書かずに操作できるツールもありますが、これらは内部的にSQLへ変換されて実行されています。
私がLaravel案件を担当したとき、Eloquentで書いたコードが想定より遅い処理をしていて、実際に発行されているSQLを確認したところ、無駄な問い合わせが大量に発生していたことがありました。
このとき、SQLの知識がなければ原因を特定できなかったはずです。
ORMを使う場合でも、裏側のSQLを理解しているかどうかで、トラブル対応のスピードが大きく変わります。
SQL自体はDBMSが変わってもほぼ共通
SQLはISO/ANSIによって標準規格が定められており、基本文法はMySQLでもPostgreSQLでも大きくは変わりません。
一度SQLの基礎を身につければ、DBMSが変わっても応用がききやすいというメリットもあります。
まとめ
この記事のポイント
- SQLはRDBMSを操作するための専用言語で、「何がほしいか」を宣言する言語
- SQLはDQL(検索)・DML(操作)・DDL(定義)・DCL(制御)の4つに分類される
- ORMを使う場合でも、裏側で実行されるSQLを理解しておくとトラブル対応がしやすくなる
- SQLの基本文法はDBMSが変わっても共通する部分が多い
次に読むべき記事
- RDBMS(リレーショナルデータベース)とは?表形式でデータを管理する仕組み
- MySQL・PostgreSQL・SQLite・MongoDB、DBMSの選び方
タグ: SQL, 初心者向け, 入門