ホーム » スタッフ » 斉藤徹 » 講義録 » データベース » SQLの演習と複雑なSQL

2017年11月
 1234
567891011
12131415161718
19202122232425
2627282930  

検索・リンク

SQLの演習と複雑なSQL

SQLの演習

最初に、SQLの演習環境の使い方。
下記URLにアクセスすると、認証画面が表示されるので、情報処理センターのユーザIDとパスワードで、Login する。

以下のような画面が表示されるので、最初に”データベースリセット”を押すこと。

以降、登録済みの処理を実行する場合は、左上のプルダウンメニューから、処理を選んで”バッチ処理実行”を行う。
画面下に、実行された結果が表示される。

教科書内の基本演習のデータを利用したい場合は、”0_Create_DB” , “1_Insert_Data”を実行する。

自分で処理を実行したい場合には、中段のSQLコマンドの欄に、命令を記載する。”create table”や”insert”といった結果を伴わない命令の場合は、”EXEC”を実行。”select” などの実行結果がある場合は、”QUERY”を実行すること。

複雑なSQL

集合関数

検索したデータの、合計や最大値などを求めたい場合は、集合関数を用いる。

SELECT MAX( S.優良度 ) from S ;
SUM(…) 合計を求める
MAX(…),MIN(…) 最大値,最小値を求める
AVG(…) 平均値を求める
COUNT(…) データ数を数える

比較演算(あいまい検索)

LIKE 演算子 ワイルドカードを用いたパターンマッチング
  %   ワイルドカード文字:0文字以上の任意の文字列
  _   ワイルドカード文字:1文字にマッチング
  SELECT ... WHERE フィールド LIKE '%文字列'  -- 後方一致 --
  SELECT ... WHERE フィールド LIKE '文字列%'  -- 前方一致 -- 
  SELECT ... WHERE フィールド LIKE 'A_C'      -- ABC,ADCなど --

IN 演算子 候補の中に含まれるかチェックする
  SELECT ... WHERE フィールド IN ( 候補値1,候補値2,候補値3... )

BETWEEN 演算子 指定された最小値から最大値の間に含まれるかチェック
  SELECT ... WHERE フィールド BETWEEN 下限値 AND 上限値

集合計算

2つの問い合わせの結果の集合計算には、集合和,集合積,集合差が利用できる

SELECT ... UNION SELECT ...     集合和
SELECT ... EXPECT SELECT ...    集合差
SELECT ... INTERSECT SELECT ... 集合積

その他

同一データの重複削除
  SELECT DISTINCT ... FROM .....

並べ替え(ソート)
  SELECT ... FROM ...
    ORDER BY フィールド1 [ASC,DESC], フィールド2...

グループ化
  GROUP BY
    同列内の値の中で、同じ値を持つデータ毎に集合化する機能。
      SELECT ... FROM... GROUP BY フィールド
  HAVING
    グループ化したものに条件を設定して抽出する。
      SELECT ...FROM...GROUP BY フィールド HAVING 条件

副問合せ

SELECT文を複数組み合わせて処理を行う場合には、副問合せを用いる。

簡単な副問合せは、問い合わせの中に別の問い合わせを記述する。

SELECT S.業者名,S.所在  FROM S
  WHERE S.業者番号 IN
    ( SELECT SG.業者番号  FROM SG
        WHERE SG.商品番号 = 'G2' AND SG.在庫量 >= 200 ) ;

カッコの中の副問合せには、SG の属性に関する値しかない場合には、副問合せを先に実行し、その結果を使って主となる問い合わせを実行する。

相関副問い合わせ

SELECT G.商品名, G.色, G.価格  FROM G
  WHERE 'S4' IN
    ( SELECT SG.業者番号  FROM SG
        WHERE SG.商品番号 = G.商品番号 ) ;

このような問い合わせでは、G の各レコード値で WHERE を評価する度に副問合せを実行し、結果が得られる。
このような問い合わせは、相関副問合せと呼ばれる。

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー