SQL文とは
SQL文とは代表的なデータベースの操作言語を指し、リレーショナルデータベース管理システム(RDBMS)を使うために必要な言語です。実際には、SQL文について分かるようでも使ってみないと分からないこともあります。ここでは、SQL文の概要を学び、実際の使い方を実例に沿って解説していきます。
SQL文の概要
SQL文は、リレーショナルデータベース管理システムで用いるデータベース操作言語SQLの構文です。そもそもSQLとは「Structured Query Language」の略で、RDBMSの標準言語です。提供されるRDBMS毎に独自の実装がされていますが、ISO/IECによって標準SQL規格が発行されています。
データベース(DB)は、情報を蓄積・検索する機能を有するデータの集合体です。情報を蓄積・検索する機能を提供するミドルウェアが、データベース管理システム(DBMS)です。
データベース管理システムにはいくつかの種類があり、データを表形式で管理する方式にリレーショナルデータベース管理システム(RDBMS)があります。
そのリレーショナルデータベース管理システムで採用されている命令文がSQL文です。データベースによっては、SQLを用いずに使用するものもありますが、多くのデータベースはリレーショナルデータベースのため、SQL文を学んでおくとデータ分析に役立つ場面が数多くあります。
SQL文の分類
SQL文は、データベースの操作、作成、制御の3機能を持っています。具体的には、データを操作するデータ操作言語(DML)、データを定義するデータ定義言語(DDL)、データを制御するデータ制御言語(DCL)に分類されます。
データ操作言語(DML)は、データベースに対してデータの登録・更新・削除・検索を行うための命令文で、データ操作時に用います。
データ定義言語(DDL)は、使用するデータをデータベース化するために用いる言語です。データベースやテーブル、インデックスやストアドプロシージャなどを作成したり、削除したりします。
データ制御言語(DCL)は、データベースに対してデータアクセス制御を行うための言語です。権限の付与や取り消しを行います。
NoSQLとSQLの違い
最近、NoSQLという呼び方を聞くことがあります。NoSQL(Not only SQL)は、SQLを使わないデータベース管理システムを総称したものです。通常SQLはリレーショナルデータベースで用いられる言語のため、リレーショナルデータベース以外のデータベース管理システムやSQL言語を用いないものをNoSQLと言います。
NoSQLを使って開発するには、SQL文ではなくキーバリュー型・JSON・XMLなどを用いる点に違いがあります。
SQLの基本的な書き方
ここからは、SQLの基本的な書き方を学んでいきます。データ定義言語(DDL)やデータ制御言語(DCL)は、データベース管理者が行う作業で使用します。データベース利用者が一般的に行うデータの検索、挿入、更新、削除に用いるSQL一覧は次の通りです。
・データの検索(SELECT) ・データの挿入(INSERT) ・データの更新(UPDATE) ・データの削除(DELETE)
上記の4つは、データベース操作言語(DML)として実装される基本命令です。以降ではデータの検索、挿入、更新、削除の書き方を順を追って解説していきます。
データの検索(SELECT)
データの検索は、SELECT文を用います。使い方はシンプルで、もっとも利用価値の高い命令文です。例えば、会員テーブルからデータを取り込むには、次のように記述します。
SELECT * FROM 会員テーブル;
SELECTの後に記述したアスタリスク ”*” は、全てを取り込むワイルドカードを指します。構文をもう少し詳しく見ると、次のように表されます。
SELECT 列名 FROM テーブル名 [WHERE 条件式];
WHERE句では、条件式を入力して抽出することができます。算術演算子、論理演算子、SQL演算子などを用いて抽出するデータを指定します。例えば、会員テーブルから会員番号1500番以降のデータを取り込むには、次のように記述します。
SELECT * FROM 会員テーブル WHERE 会員ID >= 1500;
またデータを抽出する際に、ORDER BY句でソートして取り込むこともできます。例えば、会員テーブルから会員番号1500番以降のデータを取り込み、登録店ごとにソートし表示するには、次のように記述します。
SELECT * FROM 会員テーブル WHERE 会員ID >= 1500 ORDER BY 登録店ID;
上記の他に、カラム名のグループ化にはGROUP BY句を、GROUP BY句の集計結果に抽出条件を設定するにはHAVING句を追記することもできます。
データの挿入(INSERT)
データの挿入は、INSERT文です。例えば、会員テーブルに新たにデータを挿入するには、次のように記述します。挿入する氏名、会員ID、登録店IDは、それぞれ ‘name’ 、 2501、 ’A021’ とします。
INSERT INTO 会員テーブル(氏名, 会員ID, 登録店ID) VALUES (‘name’, 2501, ’A021’)
構文は、次のように定義されています。
INSERT INTO テーブル名 VALUES (値[,,]);
データの更新(UPDATE)
データの更新は、UPDATE文で行います。例えば、会員IDが2501番の登録店データを ’A030’ に更新するには、次のように行います。
UPDATE 会員テーブル SET 登録店ID = ‘A030’ WHERE 会員ID = 2501;
正式な構文は次の通りです。
UPDATE テーブル名 SET カラム名 = 値 [WHERE 条件式];
データの削除(DELETE)
データの削除は、DELETE文を使います。例えば、会員ID2501番のレコードを削除するには、次のように行います。
DELETE FROM 会員テーブル WHERE 会員ID = 2501;
演算子をより理解する
WHERE句で用いる条件式には、演算子が使用できます。大きく分けて算術演算子、論理演算子、SQL演算子があります。
算術演算子は、=、 <>、>、 >=、<、<=などで抽出データを条件式に反映します。論理演算子は、ANDやORなど演算子を連結する場合に用います。
SQL演算子はSQL固有の演算子で、IN、BETWEEN、LIKE、IS NULL、IS NOT NULLなどがあります。INは一致する値を判断し、BETWEENは指定範囲内に値があるか判断します。
LIKEは条件に合致する文字列を検索し、IS NULLは値がNULL(空値)を検索、IS NOT NULLは値がNULLではないデータを検索します。
上記の演算子を組み合わせて、複雑な命令(クエリ)を発行できます。
SQL文は英語の指示・命令を表す言葉の集まり
SQL文は、プログラミング言語のように英語の指示・命令を表す単語や熟語の集まりです。今回解説した命令文も英語の指示・命令を起源としています。
・SELECT(選択する=取り込む) ・INSERT(挿入する) ・INSERT INTO(~に挿入する) ・UPDATE(更新する) ・SET(設定する) ・DELETE(削除する) ・WHERE(どういう方法で) ・GROUP BY(~のようにグループ化して) ・HAVING(~のように持って(選んで))
英語を意識することで、自然とSQL文の理解が深まります。
RDBMS各社が提供するサンプルを活用する
RDBMSが市場に投入されてから多くの年月を経て、改良が加えられています。それぞれの製品ごとに独自拡張されていることから、SQLに対しても言語仕様上の違いなどがあります。
実際にSQL文を使う場合は、使用する製品と同じ環境でSQL文を試す必要があります。RDBMS各社は、実際の利用を促すためにサンプルデータベースを提供することもあります。
机上でSQL文の使い方が分かったら、実機で確認するのがおすすめです。その際にはサンプルデータベースを用いると、短期間で環境構築が完了します。
【参考】:Microsoft Learn: SQL サンプル 【参考】:MySQL: Employees Sample Database 【参考】:Oracle: Databaseサンプル・スキーマ
SQL文の基本が分かったら実機で動作確認
SQL文は、リレーショナルデータベースのデータ操作に必要です。NoSQLも登場していますが、まだまだSQLの利用場面が多く、市場のニーズも高いと想定できます。SQL文の基本が分かったら、実機で動作確認し理解度を高めておくと実務でもすぐに活用でき、おすすめです。
その他の関連記事
その他に関連する内容は、下記の記事でもご紹介しています。ぜひ参考にご覧ください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから