【SQL】SQLとは?データベース操作言語の基本を理解する

SQL

こんにちは、かつコーチです。

ここまでの記事で「データベース」「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, 初心者向け, 入門

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