初心者が押さえておきたいSQLの基本構文(文法)【第31回】

「SQL入門」講座にご興味ある方はこちら。次回は9/22(金)開催です。

初心者が押さえておきたいSQLの基本構文(文法)
ビジネスパーソンのためのプログラミング講座【第31回】


プログラミングに携わる上でSQLは避けては通れないと言っても過言ではないでしょう。
SQLはプログラミング言語とはまた違ってデータを操作するものです。
SQLを用いてデータを思うように操作できるようになると、プログラムでできることも広がってきます。
そこで押さえておきたいSQLの基本構文についてご説明します。


■SQLとは
SQL(Structured Query Language)はデータベースのデータを操作するための言語です。
SQLはIBMのサンノゼ研究所で作られ、発展してきました。
SQLはOracleやSQL Server、DB2、MySQLなど提供されている会社(製品)ごとに多少方便のようなものがありますが、共通性はあります。

SQL自体は単純な文法なので製品が異なるからと言って大きな差がある訳ではありませんが、自分が利用するSQLがどの製品か、という点も留意してSQLを学びましょう。
SQL-92や99がSQLの規格ですので、それらを学ぶと応用がききやすくなるでしょう。

■SQLでできること
SQLの機能は大きく分けて2つあり、1つはデータ操作言語(DML)と言って、データの参照・登録・削除などを行うデータを操作するSQLです。
もう1つはデータ定義言語(DDL)と言って、データベースそのものや表を作成するSQLです。
今回はSQLの基本となる操作言語の文法についてお伝えします。

操作言語で行うことはデータの検索、データの登録、データの更新、データの削除の4種類になります。
データを操作する上で押さえておきたい用語ですが、まずテーブル(表)です。
テーブルはデータが表形式で集まっている集合体です。
このテーブルに対してデータを参照したり登録したりします。

そしてカラム(列)です。
カラムは列、項目名など呼び方は様々ですが表形式になっているテーブルの縦列のことを言っています。
縦列がカラムに対し、横の行をレコードや行と言います。

■SELECT文(検索)
SELECTはテーブルからデータの検索を行います。
基本的な文法は以下のようになります。

SELECT カラム名 FROM テーブル名

カラムの部分で表示させたい項目を指定します。

複数の場合は「,(カンマ)」で区切って並べます。

全てのカラムを表示させる場合は「*(アスタリスク)」を用います。
ある特定のレコードを検索したい場合は「WHERE句」を使用します。
文法は以下のようになります。

SELECT * FROM テーブル名 WHERE 条件

この「条件」の部分で検索したいレコードの条件を指定します。
例えばあるカラムが100以下のデータを抽出したい場合の例を下記に挙げます。

SELECT * FROM テーブル名 WHERE カラム名 <= 100

これで分かる通り、SQL文では演算子の使用もできます。
演算子はイコールや以下、以上といった演算子ももちろんですがANDやOR、NOTといった論理演算子の使用もできます。

上記の例では数値のデータを条件にしていましたが、もちろん文字列のデータを条件に検索もできます。

SELECT * FROM テーブル名 WHERE カラム名 = ‘ABC’

文字列の場合、このように「’(アポストロフィ)」で前後を囲みます。

文字列のカラムで〇〇を含む文字列を検索したい、という場合は「LIKE」を用います。

SELECT * FROM テーブル名 FROM カラム名 LIKE ‘ABC%’

この場合、「ABCから始まる文字列」を検索します。
LIKEで部分一致検索を行う場合%記号など用います。
「%ABC」であれば「ABCで終わる文字列」を検索し、「%ABC%」であれば「ABCを含む文字列」を検索します。

データを扱う際、「NULL(ヌル)」についての理解も重要となります。
NULLとは、値が存在しない状態を指します。
0や空白(ブランク)は感覚としては値がない状態ですが、データとしては「0」というデータ、「空白」というデータとして扱います。
これに対し何もないのがNULLなのです。

テーブルにはこのようにNULLという状態が存在することがあります。
NULLの特性として、例えばあるカラムが5以外のデータを抽出する場合、そのカラムがNULLとなっているレコードは抽出されません。
NULLの項目を抽出する場合、次のように条件を書きます。

SELECT * FROM テーブル名 WHERE カラム名 IS NULL

NULLを指定する場合イコールなどの演算子ではなく「IS」で指定します。
逆に、NULL以外を指定する場合は以下のようになります。

SELECT * FROM テーブル名 WHERE カラム名 IS NOT NULL

さらにSELECT文では様々な条件を指定して検索・表示をすることができます。
例えばデータのソートをしたい場合は「ORDER句」を用います。
「ORDER句」を用いた文法は以下のようになります。

SELECT * FROM テーブル名 ORDER BY カラム名

この場合指定したカラムのデータで昇順にデータが表示されます。
降順にしたい場合はカラム名の後に「DESC」を付け足します。
なおORDER句もカラムは複数指定可能です。
ORDER句以外にも、範囲を指定してレコードを抽出する「BETWEEN句」や特定のカラムでグループ化をする「GROUP BY」、グループ化したテーブルから条件検索をする「HAVING」など様々な文法が存在します。

■INSERT文(登録)
INSERTはテーブルにデータを登録(追加)します。
基本的な文法例は下記のようになります。

INSERT INTO テーブル名 VALUES(値,値,…)

VALUESに続く括弧の中で、一列目から順番に入れる値を指定していきます。
値を入れるカラムは指定することも可能です。
その場合

INSERT INTO テーブル名(カラム名1,カラム名2,…) VALUES(値1,値2,…)

と、テーブル名の後に括弧で値を指定するカラム名を書きます。
そしてそれに呼応する値をVALUESの後に書きます。
この時指定しなかったカラムにはデフォルト値が入ります。
入れる値にNULLを指定することもできますが、カラムによってはNOT NULL属性と言ってNULLを許さないものもありますので、その場合はエラーとなってしまいます。
また、INSERT文とSELECT文の併用が可能で、INSERT文で登録する値を別のテーブルから抽出(SELECT)したものにすることもできます。

■UPDATE文(更新)
UPDATEは現在あるデータの更新を行います。
基本的な文法は以下のようになります。

UPDATE テーブル名 SET カラム名 = 値, カラム名 = 値 …

SETの後に変更したいカラムと値を指定します。
このように、全てのカラムの値を指定する必要はなく、変更したいカラムの指定だけでOKです。
ただ、このままではテーブルにあるレコード全てのカラムの値が変更されてしまうので、条件指定をします。

UPDATE テーブル名 SET カラム名 = 値 WHERE 条件指定

この条件指定である特定のカラムが5以下のもの、など変更したいレコードの指定をします。

■DELETE文(削除)
DELETEはテーブルからデータを削除します。
基本的な文法は以下のようになります。

DELTE FROM テーブル名 WHERE 条件指定

DELTEもUPDATE 同様、条件指定をしないと全てのレコードが削除されてしまうので注意しましょう。

■まとめ
いかがでしたでしょうか?
これら4つの文法を抑えれば、SQLである程度の操作ができます。
まずはSELECT文でデータを表示させることから行って操作に慣れていきましょう。
UPDATEとDELETEを行う際は関係のない行まで変更したり削除してしまわないように注意が必要です。

☆おすすめ講座☆
プログラミング入門講座の詳細はこちら
SQL入門講座の詳細はこちら
PHP入門講座の詳細はこちら



>プログラミング豆知識 記事一覧へ


投稿日: 2017年3月31日

前後の記事

気になることは何でもお気軽にお問合せください。

0120-188-024 受付時間 平日9:00~19:00