SQLとは?書き方について基礎から解説

 2021.10.05  株式会社システムインテグレータ

皆さんは、SQLと呼ばれるデータベース言語をご存じでしょうか。現在稼働するシステムでは必ずといってよいほどデータベースが稼働しています。そのため、ITエンジニアを目指す人やデータベースを扱う人にとって、SQLは必須の知識です。

本記事ではこの「SQL」について、基礎から詳しく解説します。

SQLとは

SQLはデータを管理するソフトウェアであるデータベースを操作および制御するための言語です。膨大なデータをデータベースで一元管理し、さまざまなシステムからデータベース内のデータを用いることで、業務を効率よく行うことができます。

データベース製品には多くの種類がありますが、SQLはISO(国際標準化機構)で標準化されているため、SQLを覚えれば多くのデータベースで扱えます。たとえば、商用データベースであるOracle DatabaseやSQL Server、オープンソースデータベースのMySQLやPostgreSQLなども、SQLが使用可能です。

そのため、SQLを理解することは大変重要であり、また多くのシステム開発業務で役立ちます。

SQLの種類

SQLは多くの命令を用いてデータベースを扱います。命令は大きく3つに分類されます。
● DDL:データ定義言語
● DML:データ操作言語
● DCL:データ制御言語

DDL

DDL(Data Definition Language)はデータ定義言語と呼ばれ、テーブルや索引、シーケンスなどのデータベースオブジェクトを定義する言語です。データベースやテーブルを新規に作成(CREATE)する場合や、変更(ALTER)、削除(DROP)する際に使用します。また、テーブルに格納されているデータを一括ですべて削除するTRUNCATEも、DDLに含まれます。


DML

DML(Data Manipulation Language)はデータ操作言語と呼ばれ、データベースを操作し、格納されているデータの検索や削除などを行うための言語です。データベースを使用する中で最も使用する言語と言えます。命令文は、データの検索(SELECT)、更新(UPDATE)、挿入(INSERT)、削除(DELETE)があります。


DCL

DCL(Data Control Language)はデータ制御言語と呼ばれ、データやトランザクションを制御するための言語です。ユーザーに対してアクセス権限を付与(GRANT)する命令や、権限の取消(REVOKE)が含まれます。

データベース製品によっては、COMMITやROLLBACKなどトランザクションを制御する言語(TCL)も、DCLに含める場合があります。

SQLの構文

ここでは、SQLの命令の中で最もよく使用されるDMLにおいて、代表的な4つの命令を解説していきます。説明を分かりやすくするため、以下のテーブルがあったとします。

【商品マスタ】
image1

SELECT(検索)

SELECT文は、テーブル内にあるデータを検索する場合に使用します。

SELECT 列1, 列2, 列3, ... FROM テーブル WHERE 条件

列はカンマ区切りで複数指定できます。たとえば、商品番号が001のデータを検索したい、という場合は以下のようなSQLとなります。

SELECT ’商品番号’, ‘商品名’, ‘価格’ FROM 商品マスタ WHERE 商品番号=’001’

なお、SELECTの後にアスタリスク「*」を指定すれば、全ての列を表示できます。

INSERT(追加)

商品マスタにデータを追加する場合は、INSERT文を実行します。

INSERT INTO テーブル名 (列1, 列2,...) VALUES (値1, 値2,...)

先ほど作成した商品マスタに、商品名「マンゴー」のデータを登録します。以下のようなSQLになります。


INSERT INTO 商品マスタ(’商品番号’, ’商品名, ’価格’, ’在庫数’) VALUES (
‘005’
,‘マンゴー’
,1000
,3
)

実行すると、商品マスタにデータが登録されます。INSERT文は、1レコードずつ値をいれて追加していくことも、他のテーブルからSELECTした結果をまとめて追加することもできます。

UPDATE(更新)

すでに登録したレコードに対して、一部のフィールドの値を更新したい、という場合は、「UPDATE」文を用います。

UPDATE テーブル名 SET 列1 = 値1 WHERE 条件

大量データから特定のデータのみ値を更新した場合は、WHERE句の後に条件を記載します。この条件に該当する全てのデータが、指定した値に更新されます。WHERE句をつけなかった場合は、該当テーブルの全データで指定した列に対して値が更新されます。

例として、商品番号001の価格を更新するには、以下のSQLを実行します。

UPDATE 商品マスタ SET 価格 = 300 WHERE 商品番号=’001’

これにより、データは以下の通りに変更されます。image2

DELETE(削除)

不要なデータを削除したい、という場合は、「DELETE」文を用います。

DELETE FROM テーブル名 WHERE 条件

WHERE句に条件を記載することで、該当するレコード全てが削除されます。WHERE句をつけない場合、テーブル内の全データが削除されます。たとえば、商品マスタから商品番号「003」のデータを削除する場合は、以下のようになります。

DELETE FROM 商品マスタ WHERE 商品番号=’003’

以上のように、「INSERT」「UPDATE」および「DELETE」文でデータの追加、更新、削除が実行できます。ただし、これらの文を実行しても、あくまでメモリ内で処理されるだけで、まだテーブルには反映されません。DCLの1つ「COMMIT」文の実行により、それまでの実行結果がデータベースに反映されます。逆に「ROLLBACK」文を実行すると、実行した「INSERT」「UPDATE」「DELETE」文は取り消されます。

SQLの関数

DMLでは、単純に登録されたデータを扱うだけでなく、関数を用いることで計算を行うことも可能です。ここでは、代表的な関数をご紹介します。

COUNT

COUNT関数はSELECT文において条件に当てはまる行数を出力します。COUNT(*)とすれば条件に該当するレコード件数全件、COUNT(列名)とすれば、指定した列名のNULL以外のレコード件数を出力します。

・COUNT関数
SELECT COUNT(*) FROM 商品マスタ

出力結果
image3

MAX / MIN / AVG


MAX関数、MIN関数、AVG関数は、数値型のカラムに対してそれぞれの計算結果を出力します。MAX関数は最大値、MIN関数は最小値、AVG関数は平均値を返します。

・MAX関数
SELECT MAX(価格) FROM 商品マスタ

出力結果
image5

・MIN関数
SELECT MIN(価格) FROM 商品マスタ

出力結果
image8

・AVG関数
SELECT AVG(価格) FROM 商品マスタ

出力結果
image6

4.3 UPPER / LOWER


UPPER関数、LOWER関数は、文字列型(英字)において、大文字・小文字を変換します。UPPER関数では大文字、LOWER関数では小文字を返します。たとえば、「sample_moji」テーブルの列KOMOJIに”abcdef”、列OMOJIに”ABCDEF”が格納されていた場合、以下のようになります。

・UPPER関数
SELECT KOMOJI, UPPER(KOMOJI) FROM SAMPLE_MOJI

出力結果
image7


・LOWER関数
SELECT OMOJI, LOWER(OMOJI) FROM SAMPLE_MOJI

出力結果
image4

 

まとめ

本記事では、SQLの基本的な部分について解説しました。今回ご紹介した内容の中でも、DMLの部分だけでも理解すれば、データベースからデータを検索、更新することができます。

SQLはシンプルですが奥が深いです。テーブルの結合や複雑な関数、条件を指定することでさまざまなデータを返すことができます。逆に、同じ結果を返すSQLでもパフォーマンスが大きく異なる場合もあります。

SQLは、データベースの基本です。今回の内容を参考にSQLを理解して、使いこなせるようになりましょう。

 

CTA

RELATED POST関連記事


RECENT POST「データベース入門」の最新記事


データベース入門

データベースとは?メリットや種類などの基本を解説

データベース入門

データベースのテーブルとは?設計や作成方法を解説

データベース入門

実行計画とは?コストなどの用語やチューニング方法も解説

データベース入門

PL/SQL入門 ~概要から変数や処理の書き方を解説~

SQLとは?書き方について基礎から解説