http:www.sip-ac.jp/sip/konan_text/dbm05-01.html,        © 2001 Ayumi Yoshikawa
主観情報処理研究所
http:www.sip-ac.jp/sip/konan_text/dbm05-01.html,        © 2001 Ayumi Yoshikawa
主観情報処理研究所

データベースマネジメント:SQL(最終更新:2015/12/06 16:33:44 JST)

SQL

データベースの特徴は格納されたデータを利用可能なことである.つまり何らかの方法でデータを処理する仕組みがなければならない.その1つの方法がSQLと呼ばれる言語である.このSQLは実際のデータベースでの処理で重要であるのは当然であるが,情報処理技術者試験でもいろいろな分野で出題されているため,正しく理解することが重要である.

この章の内容

  1. SQLでの問い合わせ
  2. SELECT文によるデータ取り出し
  3. 表の結合
  4. 基本演算の実行
  5. データ集計
  6. 副問合せ
  7. データ操作

[*]下へ▼ ▲[#]上へ

SQLでの問い合わせ(教科書68ページ)

SQLによるデータベース操作(教科書68ページ)

データベースを利用する際には,利用者がデータベースからデータを自由に取り出す仕組みが必要である.その操作のために用いるデータベース言語として現在もっとも広く利用されているのがSQLである.もともとIBMにより開発されたが現在はANSIやISOによって標準として規格化されている.そのため関係データベースを利用したDBMSであれば利用可能となっている.SQLは次の3つの機能から構成されている.

データ操作言語(DML:Data Manipulation Language
表からデータを抽出し,更新・追加・削除する機能.例:レコードの抽出を行うSELECT文や,テーブルにレコードを挿入するINSERT文,レコードを削除するDELETE文、特定のレコードのフィールドを更新するUPDATE文
データ定義言語(DDL:Data,Definition Language)
表を作成し,各種の制約を設定する機能.例:テーブルや制約条件などを定義するCREATE文や,テーブルなどを削除するDROP文
データ制御言語(DCL:Data Control Language)
大勢の利用者が同時に利用するデータベースを制御する機能.例:トランザクション処理の開始を宣言するBEGIN文,トランザクションの完了を指示するCOMMIT文,トランザクションを取り消すROLLBACK文

[*]下へ▼ ▲[#]上へ

SQLの文法(教科書69ページ)

SQLはデータベースに対する1つの操作を,1つの文(sentence)により行う.また文中の意味のある1つのまとまりを句(phrase)と呼ぶ.

次の例はSELECT文の文法を表したものである.全体がSELECT文であり,その中にSELECT句とFROM句がある(教科書70ページ参照).

/* SELECT文の例 */

SELECT * -- ← SELECT句
FROM 商品 -- ← FROM句

なお,この文や句で用いられる主要なキーワードは教科書71ページに掲載されているので,参照のこと.

[*]下へ▼ ▲[#]上へ

SELECT文によるデータ取り出し(教科書73ページ)

SQLの文の中でもっともよく利用されるものがSELECT文である.SELECT文は表からデータを取り出すために利用される.

SELECT文によるデータの取り出し(教科書73ページ)

SELECT文ではSELECT句の後に取り出すフィールド名を書き,FROM句の後に取り出す対象となる表(テーブル)名を書く.例えば,教科書73ページの[商品]表から{商品名,単価}という2つのフィールドを取り出す場合は次のように指定する(教科書74ページ).

/* 特定のフィールドの取り出しの例 */

SELECT 商品名, 単価
FROM 商品

関係演算の射影に相当すると考えればよい.

また表のすべてのフィールドを取り出す場合は,SELECT句の後に「*」(アスタリスク)を指定する(教科書74ページ).

/* すべてのフィールドの取り出しの例 */

SELECT *
FROM 商品

取り出したフィールドに別名をつける場合はSELECT句のフィールド名にAS句とつける別名を指定する(教科書74ページ).例えば<商品名>に<在庫品名>という名前をつける場合は次のようになる.

/* 取り出したフィールドに別名を指定する場合の例 */

SELECT 商品名 AS 在庫品名
FROM 商品

[*]下へ▼ ▲[#]上へ

WHERE句での絞込み(教科書75ページ)

行方向にデータを取り出すことは,何らかの条件をつけてレコードを検索することに相当する.このためにはSELECT文にWHERE句を追加し検索の条件を指定してやる.

/* フィールド<商品名>のデータが「あられ」であるレコードを取り出す例 */

SELECT 商品名, 単価
FROM 商品
WHERE 商品名 = 'あられ' -- ← WHERE句

WHERE句で検索対象とするフィールドの内容が文字列の場合はシングルクオーテーションで括る必要がある.数字の場合は括ってはいけない.

[*]下へ▼ ▲[#]上へ

条件設定のための演算子(教科書77ページ)

比較演算子(教科書77ページ)

WHERE句でいろいろな検索の条件を指定するために利用される記号は比較演算子と呼ばれる.比較演算子は次のようなものが利用可能である(教科書77ページの比較演算子の表も参照).

比較演算子表
比較演算子 意味 意味
= 等しい 単価 = 500 単価が500
> (左)が(右)より大 単価 > 500 単価が500より大
>= (左)が(右)以上 単価 >= 500 単価が500以上
< (左)が(右)より小 単価 < 500 単価が500より小
<= (左)が(右)以下 単価 <= 500 単価が500以下
<> (左)と(右)が等しくない 単価 <> 500 単価が500以外

「等しくない」は「!=」でも可.「単価 != 500」と書いても同じ結果が得られる.

[*]下へ▼ ▲[#]上へ

論理演算子(教科書77ページ)

比較演算子で指定された複数の条件を組み合わせて指定する演算子として論理演算子が用意されている.

AND
(左)かつ(右),(左)と(右)を同時に満たす
OR
(左)または(右),(左)と(右)のどちらかを満たす
NOT
(右)でない
論理演算子
論理演算子 例の意味
AND 単価 >= 500 AND 商品コード < 200 単価が500以上かつ商品コードが200より小
OR 単価 >= 500 OR 商品コード < 200 単価が500以上または商品コードが200より小
NOT NOT 単価 = 500 単価が500でない
/* 単価が300以上かつ400以下 */

SELECT 商品名, 単価
FROM 商品
WHERE 単価 >= 300 AND 単価 <= 400

[*]下へ▼ ▲[#]上へ

演算子の優先順位(教科書79ページ)

SQLで使用可能な算術演算子,比較演算子,論理演算子には優先順位が存在する.各種演算子の優先順位は次のとおり.下に行くほど優先順位が低くなる.

  1. 算術演算子の乗除算:*, /
  2. 算術演算子の加減算:+, -
  3. 比較演算子:=, <, >, <=, >=, <>
  4. 論理演算子:NOT
  5. 論理演算子:AND
  6. 論理演算子:OR

優先順位を変更したい場合は,丸括弧で括る必要がある.

/* 「単価が150より小または400より大」ではない */

SELECT 商品名, 単価
FROM 商品
WHERE NOT( 単価 < 150 OR 単価 > 400 )

WHERE NOT 単価 < 150 OR 単価 > 400
/* これだと「単価が150以上(150より小ではない)または400より大」 */

[*]下へ▼ ▲[#]上へ

その他の指定(教科書79ページ)

NULL値の検索(教科書79ページ)

あるフィールドがNULL値であるレコードを取り出すためには,「IS NULL」条件を利用する.

/* <数量>フィールドのNULL値であるレコードを抽出 */

SELECT *
FROM 注文
WHERE 数量 IS NULL

[*]下へ▼ ▲[#]上へ

NULL値以外の検索(教科書80ページ)

逆に,あるフィールドがNULL値以外であるレコードを取り出すためには,「IS NOT NULL」条件を利用する.

/* <数量>フィールドがNULL値以外のレコードを抽出 */

SELECT *
FROM 注文
WHERE 数量 IS NOT NULL

[*]下へ▼ ▲[#]上へ

重複値の削除(教科書80ページ)

SELECTでの取り出すフィールド名の前に「DISTINCT」をつけるとそれらのフィールドの重複するデータを取り除いて出力する.

SELECT DISTINCT 背番号, 名前
FROM 選手
[選手]
背番号 名前 守備
1 鳥谷敬 内野手
5 平野恵一 内野手
5 平野恵一 外野手
5 濱中治 外野手
取り出した結果
背番号 名前
1 鳥谷敬
5 平野恵一
5 濱中治

[*]下へ▼ ▲[#]上へ

このサイトに関するお問い合わせは,連絡先のページをご覧ください.

このページのボトムへ講義資料このページのトップへ

前のページに戻る  1  2  3  4  次のページへ進む   データベースマネジメントの目次に戻る ,        © 2001 Ayumi Yoshikawa