2016年12月14日水曜日

【SQL】SQLのお勉強(1)

本「スッキリわかるSQL入門 ドリル215問付き!」を使ってSQLの勉強します。
http://book.impress.co.jp/books/1111101167

dokoQL(どこきゅーえる)は、ブラウザだけでSQLの編集と実行を行える学習用クラウドサービスです。
→「その他」でユーザ登録する(ただし、本を購入して使用してください、との事です)
http://dokoql.com/d/app.html

dokoQL ヘルプは、以下参照
http://dokoql.com/help

DBのインストール手順などは、以下URLに記載しているとの事
http://devnote.jp/index.html

1、例文(SELECT/INSERT/UPDATE/DELETE)
1) sample1 : 検索 (SELECT:ある条件を満たす行を探して、取得)
SELECT 出金額
FROM 家計簿


2) sample2: 検索
SELECT 日付,費目,メモ,入金額,出金額
FROM 家計簿


SELECT *
FROM 家計簿

※DBのデータが変更する場合があるので、*の濫用に注意

3) sample3: 取得
SELECT 日付,費目,メモ,入金額,出金額
FROM 家計簿
WHERE 出金額 > 3000


(別名定義)ASを使用する
SELECT  費目 AS ITEM,入金額 AS RECEIVE,出金額 AS PAY
FROM 家計簿 AS MONEYBOOK
WHERE 費目 = '給料'

→WHERE '費目' = '給料'としないこと(間違えて、はまった)
4) sample4: 挿入
INSERT INTO 家計簿
VALUES ('2013-02-25','居住費','3月の家賃',0,85000)


5) sample5: 更新 (UPDATE:ある条件を満たす行を探して、書き換える)
UPDATE 家計簿
SET 出金額 = 90000
WHERE 日付 = '2013-02-25'


6) sample5: 削除 (DELETE:ある条件を満たす行を探して、削除する)
DELETE FROM 家計簿
WHERE 日付 = '2013-02-25'


2、絞り込み
(1)WHERE
・WHEREを指定しないと「すべての行」が処理対象
・SELECT/UPDATE/DELETE文で使用可能
・WHEREの後ろには条件式(TRUE/FALSE判別)を記述
 ※NULL判別は「出金額 IS NULL/出金額 IS NOT NULL」として、= または<>は使用できません

(2) 「式 LIKE パターン文字列」
 →%:任意の0文字以上の文字列、_:任意の1文字
  →%を特殊文字と判別する場合、ESCAPE句を併用する
  SELECT  * FROM 家計簿
   WHERE メモ LIKE '%100$$%' ESCAPE '$'


(3) 「式 BETWEEN 値1 AND 値2」
SELECT  * FROM 家計簿
WHERE 出金額 BETWEEN 100 AND 3000

(4) 複数値との比較「式 IN (値1, 値2, 値3, ・・・・・)」
(5) ANY/ALL演算子による複数値との比較

3、検索結果の加工
(1) DISTINCT 検索結果から重複行を除外
(2) ORDER BY 検索結果の順序を並び替える
  SELECT 列名 FROM テーブル名
         ORDER BY 列名 並び順(ASC/DESC)
(3) LIMIT 先頭から数行だけ取得(出金額の高い順に3件を取得する)
     SELECT 費目, 出金額 FROM 家計簿
         ORDER BY 出金額 DESC LIMIT 3
(4) 集合演算子(UNION(和集合)/EXCEPT(差集合)/INTERSECT(積集合))

4、式と関数
(1) CASE演算子ー値を変換する
CASE演算子は、列の値や条件式を評価し、結果に応じて好きな値に変換させる
(構文)
CASE 評価する列や式 WHEN 値1 THEN 値1の時の返す値
                                       (WHEN 値2 THEN 値2の時の返す値)
                                       (ELSE デフォルト値)
END
(例)
SELECT  費目,出金額,
CASE 費目 WHEN '居住費' THEN '固定費'
     WHEN '水道光熱費'  THEN '固定費'
      ELSE '変動費'
  END AS 出費の分類
 FROM 家計簿
 WHERE 出金額 > 0


(構文)
CASE  WHEN 条件1 THEN 条件1の時の返す値
                                       (WHEN 条件2 THEN 条件2の時の返す値)
                                       (ELSE デフォルト値)
END
(例)
SELECT  費目,入金額,
CASE WHEN 入金額 < 5000 THEN 'お小遣い'
     WHEN 入金額 < 10000 THEN '一般収入'
     WHEN 入金額 < 30000 THEN '給料出たー!'
      ELSE '想定外の収入です!'
  END AS 収入の分類
 FROM 家計簿
 WHERE 入金額 > 0



(2) LENGTH(長さ取得)/TRIM(空白除去)/REPLACE(置換)/SUBSTRING(文字列一部抽出)
     ROUND(指定桁四捨五入)/TRUNC(指定桁切り捨て)/POWER(べき乗計算)
     CURRENT_DATE(現在の日付/CURRENT_TIME(現在の時刻)
     CAST(データ変換)
    COALESCE(最初に登場するNULLでない値を返す)
※COALESCEは「コウアレス」とよむそうです

0 件のコメント:

コメントを投稿