支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

データベースは、情報システムに欠かすことのできない存在です。 データベースに指示を送り操作するものがSQLです。 このSQLについて2回にわたってご紹介します。

第1回目となる今回は、以下の内容をご紹介します。

今回例として用いるテーブルをご紹介します。
また、DBMSは、SQLPlusを使用しております。

商品一覧 テーブル
商品コード
CHAR(5)
商品名
VARCHAR(200)
代金
INTEGER
00001 ○○○小説 800
00002 ABC資格 参考書 2500
00003 ABC資格 問題集 2800
00004 △△△技術書 4200
00005 □□□漫画全巻 3200


(1)4大命令文

1-1 データの検索(SELECT文)

データベース内にあるテーブルから目的のデータを取得する場合にSELECT文を用います。
《SELECTの基本構文》
SELECT 列名… /*この列のデータを取得*/
  FROM テーブル名 /*このテーブルから*/
 (WHERE 修飾)
 (その他の修飾)

SELECTの後ろに取得したいデータの列を記述します。また、列名の代わりにアスタリスク「*」を付けると全ての列を指定した場合と同じ効果になります。

2行目はFROM 句です。 FROMの後ろにデータを取得するテーブルを記述します。「SELECT」と「FROM」はセットで記述します。

3行目はWHERE 句です。WHEREの後ろにデータを取得する条件(条件式)を記述します。
3行目以降は必須ではないですが、修飾語を追加することで、複雑な処理が可能になります。

SELECT *
  FROM 商品一覧;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00001           ○○○小説                  800
00002           ABC資格 参考書             2500
00003           ABC資格 問題集             2800
00004           △△△技術書               4200
00005           □□□漫画全巻             3200

/*WHERE 句による条件指定検索
代金が2500より大きいものを取得*/
SELECT *
  FROM 商品一覧;
WHERE 代金 > 2500 ;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00003           ABC資格 問題集             2800
00004           △△△技術書               4200
00005           □□□漫画全巻             3200

1-2 データの更新(UPDATE文)

テーブルに既にあるデータを更新する場合にUPDATE文を用います。
《UPDATEの基本構文》
UPDATE テーブル名 /*このテーブルのデータを更新*/
  SET 列名1 = 値1 , 列名2 = 値2… /*このデータに*/
 (WHERE 修飾)

UPDATEの後ろに更新したいデータがあるテーブル名を記述します。

2行目はSET 句です。 SETの後ろにデータを取得するテーブルを記述します。

3行目のWHERE 句は必須ではないですが、
条件を指定しないと指定した列全てのデータが書き換わってしまうため注意が必要です。

/*代金列の全データを 9999 に更新(WHERE 句無し)*/
UPDATE 商品一覧
  SET 代金 = 9999;
SELECT *
  FROM 商品一覧;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00001           ○○○小説                 9999
00002           ABC資格 参考書             9999
00003           ABC資格 問題集             9999
00004           △△△技術書               9999
00005           □□□漫画全巻             9999

/*商品コードが00003以上の代金列データを9999に更新(WHERE 句有り)*/
UPDATE 商品一覧
  SET 代金 = 9999;
WHERE 商品コード >= '0003';
SELECT *
  FROM 商品一覧;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00001           ○○○小説                  800
00002           ABC資格 参考書             2500
00003           ABC資格 問題集             9999
00004           △△△技術書               9999
00005           □□□漫画全巻             9999

1-3 データの削除(DELETE文)

テーブルに既にある行を削除する場合にDELETE文を用います。
《DELETEの基本構文》
DELETE
  FROM テーブル名 /*このテーブルから*/
 (WHERE 修飾)

DELETEの後ろは、列名を指定する必要がないため何も記述しません

2行目はSELECT文と同様にFROM 句を記述します。

3行目のWHERE 句は必須ではないですが、
条件を指定しないと全ての行が削除対象なるため注意が必要です。
WHERE 句のないDELETE文の実行は、ためらうクセを身に着けてください。

/*商品コードが00003以上のデータを削除(WHERE 句有り)*/
DELETE
  FROM 商品一覧;
WHERE 商品コード >= '0003';
SELECT *
  FROM 商品一覧;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00001           ○○○小説                  800
00002           ABC資格 参考書             2500

1-4 データの追加(INSERT文)

テーブルに新しいデータを追加する場合にINSERT文を用います。
《INSERTの基本構文》
INSERT INTO テーブル名 (列名1 , 列名2 …) /*このテーブルにこの列に追加*/
  VALUES (値1 , 値2 …) /*この値を*/

INSERT INTOの後ろにデータを追加したいテーブル名を記述します。

さらに、テーブル名の後ろにデータを追加したい列名を記述します。尚、全ての列にデータを追加する場合は、列名の省略が可能です

3行目はVALUES 句です。VALUESの後ろに列名に対応させた追加したいデータを記述します。

/*DELETE文で削除したデータベースに新たにデータを追加(商品名は、データ追加無し)*/
INSERT INTO 商品一覧(商品コード , 代金)
  VALUES ('00003' , 3200);
SELECT *
  FROM 商品一覧;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00001           ○○○小説                  800
00002           ABC資格 参考書             2500
00003                                      3200

/*DELETE文で削除したデータベースに新たにデータを追加*/
INSERT INTO 商品一覧
  VALUES ('00004' , 'XYZゲーム攻略' , 2700);
SELECT *
  FROM 商品一覧;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00001           ○○○小説                  800
00002           ABC資格 参考書             2500
00004           XYZゲーム攻略              2700
00003                                      3200

商品コードが、バラバラになっているので、商品コードの昇順に並べ替えてみましょう。
ORDER BY 句をSELECT文の最後に記述することで昇順(降順)に並べ替えることができます。
尚、並び順(昇順・降順)は、ORDER BY 句内で指定します。

SELECT 列名… /*この列のデータを取得*/
  FROM テーブル名 /*このテーブルから*/
 (WHERE 修飾)
ORDER BY 列名 並び順(※)

/*《※並び順》
昇順→ASC または 並び順を省略
降順→DESC
*/
/*DELETE文で削除したデータベースに新たにデータを追加*/
INSERT INTO 商品一覧
  VALUES ('00004' , 'XYZゲーム攻略' , 2700);
SELECT *
  FROM 商品一覧;
  ORDER BY 商品コード;
実行結果

商品コード      商品名                     代金
--------------- -------------------- ----------
00001           ○○○小説                  800
00002           ABC資格 参考書             2500
00003                                      3200
00004           XYZゲーム攻略              2700


まとめ

SQLの概要」について2回にわたってご紹介しました。
まだまだご紹介できていないことがたくさんあるので、またの機会にご紹介していきたいです。
お役に立てると幸いです。