SQL (Structured Query Language) とは、現在最も広く用いられているデータベース操作を行うために用いられる特別な言語です。
SELECT文 / INSERT文、CREATE TABLE ~というような単語を聞いたことがある方もいるかもしれません。それが今回ご紹介するSQLの正体です。
このページでは、そもそもデータベースって何?SQLって何?SQLは何ができるの?という疑問をお持ちのIT初心者向けに、1から丁寧にわかりやすく3分で解説します。
専門用語はできるだけ利用せずに解説します!
プログラマーやシステムエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識です!是非最後までご覧ください。
読者料典 【完全無料】SQL:初心者向け学習ロードマップ ←こちらから!
SQLとは?わかりやすく言うと・・・
SQLはデータベースを操作するための特別な言語です。
データベースを定義したり、データを登録・更新したり、データを削除したりする際に用いる言語がSQL。
逆に言えば、SQLの理解なしでデータベースの操作を自由自在に行うことはできません。
参考 データベースとは?
前提としてデータベースとは何か?を一言で説明すると「様々なデータを決まった形で整理して集めたもの」となります。
日常で使う「アドレス帳」「電話帳」、先生が利用する「学生名簿」なども "データベースである" と説明することができます。
これらのデータをどのように整理して保存するか?(=データベース/テーブル/ビューの定義)を定義したり、データベースから目的のデータを取り出したり、データベースへのアクセス権限を制御したりするのがSQL (Structured Query Language) の役割。
SQLと言ったら、まずは「データベースを作ったりデータベースにデータを登録したり・・・」ができるあれこれなんだな~と理解できればまずはOKです。
SQLの歴史
SQLはIBM社が1970年代に開発した "SEQUEL" (Structured English Query Language) と呼ばれるデータベース言語に由来します。
SEQUELはリレーショナルデータベースの定義や操作に特化した言語で、文法も非常に簡単で覚えやすいという特徴があったため、IBM製のデータベースだけでなく、IBM社以外のデータベースでも採用が進んでいきました。
各メーカーがお互いに協力しながら発展させていったデータベース言語が今日のSQLの起源です。
標準SQL
SQLは様々な会社が協力して発展させ標準化していったデータベース言語ですが、会社によっては多少独自の機能拡張を行ったり、独自の文法を用いたりする場合が出てきました。
会社独自の発展や機能拡張の開発などで "SQL" というデータベース言語自体が統一されていない状況を避けるために、ISO(国際標準化機構:International Organization for Standardization)がSQLの標準化を行いました。
これを標準SQLと呼びます。
標準SQLは数年に一度改定が行われ、2022年現在の最新版は "SQL:2016" となっています。
制定年 | 規格名称 |
---|---|
1986年 | SQL86 |
1989年 | SQL89 |
1992年 | SQL92 |
1995年 | SQL/CLI |
1996年 | SQL/PSM |
1999年 | SQL1999 (SQL99) |
2003年 | SQL:2003 |
2008年 | SQL:2008 |
2011年 | SQL:2011 |
2016年 | SQL:2016 |
すべての規格を覚える必要はありませんが、ここでは「SQLは時代とともに少しづつ変化すること/今後もSQLの規格が変わりうること」「利用しているSQLの規格によって動作が異なる場合があること」を頭に入れておきましょう。
SQLの種類
SQLをより具体的にイメージできるように、SQLでできることを以下の3種類に分けて解説します。
ザックリいえば、SQLはデータの登録や削除だけでなく、テーブル(表)の定義や、データ操作に関する権限などの設定も行えるということ。
ここでは具体的にそれぞれのSQLがどのような操作を行えるのか?を見ていきながら「SQLってこういうことね!」というイメージを持てるようにしていきましょう!
SQL-DDL
SQL-DDL (Data Definition Language) はデータベースを定義するためのSQLです。
"データ定義言語" と呼ぶ場合もあります。
主にテーブルやビューを新規に作成したり変更・削除したりするのがSQL-DDLの役割。SQL-DDLに分類される代表的な命令は以下の通りです。
SQL-DDL | 処理内容 |
---|---|
CREATE TABLE | 新しいテーブルを作成する |
CREATE VIEW | 新しいビューを作成する |
DROP TABLE | 既存のテーブルを削除する |
DROP VIEW | 既存のビューを削除する |
ALTER | 既存のテーブルやビューを更新する |
CREATE INDEX | インデックスを作成する |
CREATE TRIGEER | トリガーを作成する |
基本的にはデータ操作を行うのではなく、データベースそのものの管理や制限を行うために用いるのがSQL-DDL (Data Definition Language)だと覚えておけばOKです。
また、SQL-DDLは既存のテーブルやビューを変更したり、削除したりすることも可能なので、使用ミスをしてしまうと影響が大きいというのも特徴です。
サンプル1 SQL-DDL
-- テーブルの作成 (CREATE TABLE) -- 社員テーブルを作成します。ID、名前、年齢、部署IDをカラムとして持ちます。 CREATE TABLE 社員 ( ID INT PRIMARY KEY, 名前 VARCHAR(50), 年齢 INT, 部署ID INT ); -- インデックスの作成 (CREATE INDEX) -- 社員テーブルの名前カラムにインデックスを作成します。検索速度の向上が期待されます。 CREATE INDEX idx_名前 ON 社員 (名前);
SQL-DCL
SQL-DCL (Data Control Language) はデータベースのセキュリティを制御するためのSQLです。
SQL-DCL はデータ制御言語と呼ばれる場合もあります。
SQL-DCLで制御するのは主にデータベースへの権限です。SQL-DCLを利用すると、全員に公開しても良いデータベース、一部の人だけに公開しておきたいデータベースなど個別に権限を制御することが可能。
SQL-DCL | 処理内容 |
---|---|
GRANT | テーブル/ビューに対する権限を付与する |
REVOKE | テーブル/ビューに対する権限をはく奪する |
COMMIT/ROLLBACL | トランザクションを管理する |
DCLは扱う内容が割と高度なので、そこまで利用頻度は高くないものの、逆に言えばこれらの処理が頭に入っているプログラマーやエンジニアは市場価値が高めかも?です。
サンプル2 SQL-DCL
-- ユーザー 'ユーザー名' に対して、社員テーブルに対するSELECT権限を付与します。 GRANT SELECT ON 社員 TO ユーザー名; -- ユーザー 'ユーザー名' に対して、社員テーブルに対するSELECT、UPDATE権限を付与します。 GRANT SELECT, UPDATE ON 社員 TO ユーザー名; -- ユーザー 'ユーザー名' から、社員テーブルに対するUPDATE権限を取り消します。 REVOKE UPDATE ON 社員 FROM ユーザー名; -- ユーザー 'ユーザー名' から、社員テーブルに対するすべての権限を取り消します。 REVOKE ALL ON 社員 FROM ユーザー名;
↑のサンプルコードは、特定のユーザーに対してテーブルへのアクセス権限を付与(GRANT
)したり、取り消し(REVOKE
)したりする操作を示しています。これにより、データベースのセキュリティとアクセス制御が可能になります。
SQL-DML
SQL-DML (Data Manipulation Language) はデータベースを操作するためのSQLです。
"データ操作言語" と呼ぶ場合もあります。
テーブルにデータを登録したり更新・削除したりするのがSQL-DMLの役割で、日常的に最も利用頻度が高いのがSQL-DML。
SQL-DMLはプログラム構築をする人にとっては理解必須の重要SQLです。基本的な処理内容と文法・注意点は暗記レベルで押さえておく必要があります。
サンプル3 SQL-DML
-- 社員テーブルに新しいレコードを挿入します。 INSERT INTO 社員 (ID, 名前, 年齢, 部署ID) VALUES (1, '田中太郎', 25, 101); -- 社員テーブルの特定のレコードの年齢を更新します。 UPDATE 社員 SET 年齢 = 26 WHERE ID = 1; -- 社員テーブルから特定のレコードを削除します。 DELETE FROM 社員 WHERE ID = 1; -- 社員テーブルから特定の条件に合致するレコードを検索します。 SELECT 名前, 年齢 FROM 社員 WHERE 部署ID = 101;
↑のサンプルコードは、データの挿入(INSERT
)、更新(UPDATE
)、削除(DELETE
)、検索(SELECT
)といった基本的なデータ操作を示しています。これらのコマンドは日常的なデータベース操作に頻繁に使用されるもので、データの取り扱いにおいて中心的な役割を果たします。
SQL初心者は、まずはこれらの基本的なDMLから学習を進めていくと良いでしょう。
まとめ:SQLとは?
現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。
SQLやデータベースの仕組みを1から学習したい方(学び直したい方)向けに、現役エンジニア達のスキルを結集して 完全無料 のSQL教材を作成しました。是非この機会にブックマークを!
読者料典 【完全無料】SQL:初心者向け学習ロードマップ ←こちらから!