SQLとは?

SQLとは代表的なデータベース操作言語です。データベース操作言語とはデータの操作や定義を行う言語を指します。データベースにはいくつかのデータモデルがあり、SQLはリレーショナルデータベース管理システム(RDBMS)で用いられるデータベース操作言語の一つです。
SQLはコマンドラインからの対話実行、並びにアプリケーションAPIやプリプロセッサによるプログラムアクセスで用いられます。
そもそもデータベースとは?
データベースとは、必要とされる情報を蓄積・検索する機能を有するデータの集まりを指します。簡単に言うと、古くからある台帳や帳簿といったアナログな情報記録媒体をシステム化し、検索を容易にしたイメージです。
また、データベースシステムとは、データベースの仕組みをシステムとして実装したものを指します。つまり、データベースシステムは主にデータベースをコンピュータ実装したものを意味します。
データベース管理システムとは?
データベース管理システムとは、データベースをコンピュータ実装する際に必要とされるソフトウェアです。システムは以下の機能を有しています。
・データベース構築機能 データベースをコンピュータシステムで導入し、初期設定や必要なシステム資源を割り当てます。
・データベース管理機能 データベースの論理設計に基づき、データの作成・更新・削除・検索を行います。
・データベース運用機能 システム資源・データベース領域のモニター、バックアップ・リカバリー、保守・保全等を行います。
リレーショナルデータベースとは?
データベースではいくつかのデータモデルが定義されており、データモデルに即したデータベース管理システムがあります。以下に代表的なデータモデルを挙げます。
・階層型データモデル データをツリー構造の階層で表すモデルです。検索は高速ですが高度な設計技術が求められます。
・ネットワーク型データモデル CODASYL型データセットにより親レコードと子レコードを持ちます。ツリー構造より実体の定義が容易ですが、リレーショナルデータモデルに淘汰されました。
・リレーショナルデータモデル データの項目を整理し、論理的にテーブル(表)・レコード(行)・カラム(列)で表示されるモデルです。
・オブジェクトデータモデル オブジェクト指向プログラミングで用いるオブジェクト形式でデータを取り扱うモデルです。
現在は、リレーショナルデータベースがデータベース管理システムの主流となっています。オブジェクトデータモデルを取扱い可能としたオブジェクトリレーショナルデータベースの機能追加・拡張も始まっており、今後の利用拡大が期待できます。

SQLの実行環境の構築

SQLを実行するには、MySQLやPostgreSQLといったリレーショナルデータベース管理システム(RDBMS)が必要です。ここでは、RDBMSを準備する方法を解説していきます。
RDBMSをPCにインストールする
MySQLやPostgreSQLなどのRDBMSは、PCにローカルでインストールして稼働させることができます。ローカルでインストールする場合は、公式サイトからインストーラをダウンロードしてインストールします。
インストール後、データベースに接続することでコマンド上でSQL文を実行できるようになります。ただし、インストールするには十分な容量が必要であり、またインストール時に適切な設定作業も必要です。
【参考】:MySQL 【参考】:PostgreSQL
オンラインのサービスを使ってRDBMS環境を用意する
RDBMSは、DB FiddleやSQL Fiddleなどのオンラインのプログラミングサービス、あるいは学習目的であればオンライン学習サービスを使って準備することもできます。
インストールの作業にはやや手間がかかるので、簡易的に実行環境を容易したい場合にはオンラインのサービスを利用しましょう。実際の作業手順はサービスによって異なりますが、簡単なステップで環境構築ができます。
【参考】:DB Fiddle 【参考】:SQL Fiddle



SQLの構成要素と基本のコマンド

SQLはリレーショナルデータベースで用いられており、その構成要素は大きく以下の分類に大別されます。
・データ定義言語(DDL) ・データ操作言語(DML) ・データ制御言語(DCL)
なお、SQLの規格は標準SQL規格としてANSI・ISOにより制定されていますが、統一規格制定前から各社がRDBMSを製品化しており、それぞれ独自拡張されています。そのため、各RDBMS製品によりSQL構文やストアドプロシージャに違いが見られます。
データ定義言語とは?
データ定義言語(DDL)とはデータベース内のデータを定義するための言語要素を指します。
代表的なコマンドは以下の通りです。
・CREATE データベース、テーブル(表)、インデックス(索引)、ストアドプロシージャ等の作成
・DROP データベース、テーブル(表)、インデックス(索引)、ストアドプロシージャ等の削除
・ALTER 存在するオブジェクト属性の変更
・TRUNCATE テーブル(表)からデータを削除

データ操作言語とは?
データ操作言語(DML)とは、データベース内でのデータの登録、更新、削除、検索を行うための言語要素を指します。
代表的なコマンドは以下の通りです。
・SELECT データの検索・抽出
・INSERT 行の追加・挿入
・UPDATE データの更新
・DELETE レコード(行)の削除
データ制御言語とは?
データ制御言語(DCL)とは、データベースに対するデータアクセス制御を行うための言語要素を指します。
代表的なコマンドは以下の通りです。
・GRANT 権限の付与
・REVOKE 権限の取り消し
SQLによるデータ操作を実践

SQLは、データ定義言語(DDL)・データ操作言語(DML)・データ制御言語(DCL)から構成されていることをお話ししました。このうちデータ定義言語(DDL)およびデータ制御言語(DCL)は、主にデータベース管理者が行う作業で用いる命令群です。
SQLを用いてデータを扱う場合は、データ操作言語(DML)を理解が重要です。ここでは、データ操作言語(DML)の基本構文であるSELECT文・INSERT文・UPDATE文・DELETE文について説明していきます。
SELECT文の使い方
SELECT文はデータの検索・抽出を行うための構文です。
構文:
SELECT [ALL | DISTINCT] 列名 FROM “テーブル(表)名”
[WHERE 条件式]
[GROUP BY “カラム(列)名” [HAVING 条件式]]
[ORDER BY “カラム(列)名”];
以下で構文の解説を行います。
・SELECT句:SELECT文によるデータの検索・抽出 ALL:デフォルト値、重複検索時もすべてを返す DISTINCT:重複を除く 列名:列名称(複数指定可)、 * を指定すると全ての列を対象とする
・FROM句:テーブル(表)の指定 テーブル(表)名は複数指定可
・WHERE句:抽出条件を指定 条件式:演算子を用いた条件を指定 演算子:算術演算子、論理演算子、SQL演算子 算術演算子:=、 <>、>、 >=、<、<= 論理演算子:AND、OR SQL演算子:IN、BETWEEN、LIKE、IS NULL、IS NOT NULL IN:一致する値を判断 BETWEEN:指定範囲内に値があるか判断 LIKE:条件に合致する文字列を検索 IS NULL:値がNULL(空値)のデータを検索 IS NOT NULL:値がNULLではないデータを検索
・GROUP BY句:カラム(列)名のグループ化 HAVING句:GROUP BY句の集計結果に抽出条件を設定
・ORDER BY句:ソートするカラム(列)名の指定
使用例:(従業員テーブルから従業員番号2000番以降の従業員情報を所属部署でソートし全件表示する)
SELECT * FROM 従業員テーブル WHERE 従業員ID >= 2000 ORDER BY 所属部署;
INSERT文の使い方
INSERT文は行の追加・挿入を行います。
構文:
INSERT INTO “テーブル(表)名” VALUES (値[,,]);
以下で構文の解説を行います。
・INSERT句:INSERT文の実行「行の追加・挿入」 テーブル(表)名 テーブル(表)の指定、加えてカラム(列)名を指定化
・VALUES句:値を指定 値 カラム(列)に応じたタイプの値を設定
使用例:(従業員テーブルの氏名、従業員ID、所属部署に対して’Foo’、3001、’B005’を追加する)
INSERT INTO 従業員テーブル(氏名, 従業員ID, 所属部署) VALUES (‘Foo’, 3001, ’B005’)
UPDATE文の使い方
UPDATE文はデータの更新を行います。
構文:
UPDATE “テーブル(表)名” SET “カラム(列)名” = 値 [WHERE 条件式];
以下で構文の解説を行います。
・UPDATE句:UPDATE文によるデータの更新 テーブル(表)名:テーブル(表)の指定 カラム(列)名:カンマ(,)で区切ることで複数指定可
・WHERE句:抽出条件を指定 条件式:演算子を用いた条件を指定
使用例:(従業員テーブルの従業員ID 3001の所属部署を’C001’に更新する)
UPDATE 従業員テーブル SET 所属部署 = ‘C001’ WHERE 従業員ID = 3001;
DELETE文の使い方
DELETE文はレコード(行)の削除を行います。
構文:
DELETE FROM “テーブル(表)名” [WHERE 条件式];
以下で構文の解説を行います。
・DELETE句:DELETE文によるレコード(行)の削除 テーブル(表)名:テーブル(表)の指定
・WHERE句:抽出条件を指定 条件式:演算子を用いた条件を指定
使用例:(従業員テーブルから従業員IDが3001のレコード(行)を削除する)
DELETE FROM 従業員テーブル WHERE 従業員ID = 3001;
データベースのサンプル
SQLはRDBMS製品によりそれぞれ違いが見られます。そのため、各製品に応じたSQL構文を確認することが望ましいでしょう。RDBMS提供各社ではサンプルデータベースを提供し、普及に努めています。詳しくは、以下のリンクにサンプルデータベース情報が記載されていますのでご確認ください。
【参考】:Oracle Database Sample Schemas 【参考】:MySQL Employees Sample Database 【参考】:Microsoft SQL サンプル 【参考】:PostgreSQL: File Browser dbsamples 【参考】:IBM db2sampl - サンプル・データベースの作成コマンド
また、上記RDBMSに関する情報、並びに標準SQLに関する情報については一般書籍が多数出版されていますので必要に応じてご参照ください。

SQLを本格的に学ぶためには

ここまでSQLの入門編として基本的な構文などを解説してきましたが、本格的に学ぶためにはSQLについての知識が体系的にまとめられた教材で学習する必要があります。具体的には、以下のような学習方法があります。
学習サイトを活用する
近年では、プログラミングについて学べる学習サイトが数多く登場しています。SQLを取り扱っているサイトも多くあり、手軽に学習できるツールとしておすすめです。
スライド式で学習を進めるもの、動画で学ぶもの、サイト上でコードを入力しながら学べるものなど、サイトによって特色が異なるので、自分が学びやすそうだと思うサイトに登録してみましょう。中には一部の教材を無料で公開しているサイトもあるので、試しにいくつか見てみると良いでしょう。
参考書で勉強する
参考書は1冊の中で情報が体系的にまとめられており、本格的に学習するのには王道の方法です。学習サイトなどと併用するのも良いでしょう。
以下の本はSQL入門者にもおすすめの参考書です。
スッキリわかるSQL入門 第4版 ドリル256問付き! 初学者向けの図解とていねいな解説に加え、豊富な練習問題が付いた入門書です。さらに、パソコンはもちろん、タブレットやスマートフォンでも使える「dokoQL」というWebブラウザを用いた仮想環境を無料で利用できます。
▪著者:中山 清喬 著/飯田 理恵子(株式会社フレアリンク 監修) ▪ページ数:528ページ ▪出版社:インプレス ▪発売日:2024/02/05 【参考】:スッキリわかるSQL入門 第4版 ドリル256問付き! - インプレスブックス
SQL1年生 データベースのしくみ SQLiteで体験してわかる!会話でまなべる! SQLやデータベースについて何も知らない超初心者でも、対話形式のイラストを交えた解説でつまずくことなく理解できる1冊です。初心者でも扱いやすいSQLiteを利用しており、Webからサンプルをダウンロードして操作を体験することもできます。
▪著者:リブロワークス ▪ページ数:192ページ ▪出版社:翔泳社 ▪発売日:2023/10/16 【参考】:SQL1年生 データベースのしくみ SQLiteで体験してわかる!会話でまなべる!|翔泳社

プログラミングスクールに通う
独学でのSQL学習に自信がないという方は、プログラミングスクールに通ってプロに教わるのもおすすめです。スクールなら、わからないことや疑問に思ったこともすぐに質問できて、挫折のリスクも少ないです。
また、あらかじめカリキュラムが用意されているため、どこから勉強すれば良いかわからないという方も安心です。他の勉強方法と比べるとややコストはかかりますが、モチベーションを失うことなく確実にスキルを身につけられるでしょう。
SQL文を理解してデータ分析に強みを持ちましょう

Web系システムにおいても基幹系システム同様に、データを収集し、分析するためにはDBMSの活用が有効です。DBMSの主流はRDBMSであるため、RDBMSのデータ操作を行うSQLは有力な武器となります。SQLの理解を深めて、今後ますます期待されるデータ分析の専門家として可能性を高めましょう。
その他のSQL関連記事
その他、SQLに関連する内容は、下記の記事でもご紹介しています。ぜひ参考にご覧ください。






編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから