スッキリわかるSQL入門 ドリル215問付き!

スッキリわかるSQL入門  ドリル215問付き!

3,080円(本体 2,800円+税10%)

品種名
書籍
発売日
2013/4/19
ページ数
492
サイズ
A5判
著者
中山 清喬 著/飯田 理恵子 著/高田 ゲンキ イラスト
ISBN
9784844333937

豊富な図解とていねいな解説により、やさしく・楽しくデータベースとSQLを学習できる入門書です。巻末には215問のドリルを掲載。これを繰り返し解くことでSQLが着実に身に付きます。本書の購入特典として、クラウドデータベース実行環境「dokoQL」をご用意しました。dokoQLはPCはもちろんスマートフォンからも利用できますので、自宅だけでなく通勤・通学中の「すきま時間」にもSQLとデータベースを学ぶことができます。本書に掲載したすべてのSQL文をdokoQLで呼び出して実行できますので、本書を読みながら実際にデータベースを操作することで、より深くSQLが理解できます。

★dokoQLのご利用はこちらから→【dokoQL

「読者アンケートに答える」「読者プレゼントに応募」の場合もこちらをご利用ください。

アンケートに答える

書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。

学校・法人一括購入に関するお問い合わせはこちらへ。

一括購入窓口

目次

まえがき
「dokoQL」の使い方
目次

第0章 データベースを学ぶにあたって
第1章 はじめてのSQL
第2章 基本文法と4大命令
第3章 操作する行の絞り込み
第4章 検索結果の加工
第5章 式と関数
第6章 集計とグループ化
第7章 副問い合わせ
第8章 複数テーブルの結合
第9章 トランザクション
第10章 テーブルの作成
第11章 さまざまな支援機能
第12章 データベースの設計

SQL練習ドリル

付録A DBMS 別互換性簡易リファレンス
付録B エラー解決・虎の巻
索引
奥付

関連書籍

好評発売中

データ分析に強くなるSQLレシピ 小規模データの前処理・分析の書き方&テクニック

好評発売中

ホワイトハッカー入門 第2版

ホワイトハッカーを目指す人のための1冊目!

ダウンロード

お詫びと訂正

誤記のためにご迷惑をおかけし、誠に申し訳ございません。

  • 2ページ 上から11行目(空行除く)
    • [誤]
      Dervy
    • [正]
      Derby
    • 【 第4刷にて修正 】
  • 17ページ ページ下方、立花 いずみ紹介文内2行目
    • [誤]
      湊と浅香の先輩
    • [正]
      湊と朝香の先輩
    • 【 第6刷にて修正 】
  • 22ページ 上から2つ目と3つ目の吹き出し内
    • [誤]
      記帳面
    • [正]
      几帳面
    • 【 第4刷にて修正 】
  • 30ページ 最初の吹きだしの1行目と、その下のポイント囲みの見出し
    • [誤]
      DMBS
    • [正]
      DBMS
    • 【 第2刷にて修正 】
  • 34ページ 図1-5 上の表の3行目の費目
    • [誤]
      教育娯楽費
    • [正]
      教養娯楽費
  • 56ページ 本文2行目
    • [誤]
      テーブルの列名
    • [正]
      テーブルの別名
    • 【 第3刷にて修正 】
  • 79ページ 図3-1 表の3行目の費目
    • [誤]
      教育娯楽費
    • [正]
      教養娯楽費
  • 90ページ テーブル3-2の3行目
    • [誤]
      「販売店」列の値が'B'
    • [正]
      「販売店」列の値が'A'
    • 【 第2刷にて修正 】
  • 113ページ 図4-3 左の表の4行目・中央の表の4行目・右の表の3行目の費目
    • [誤]
      教育娯楽費
    • [正]
      教養娯楽費
  • 131ページ 一番下の朝香さんのセリフ
    • [誤]
      今月初めて発生した支出の用途を知りたい。
    • [正]
      今月初めて発生した費目を知りたい。
  • 164ページ 上から3つめのSQL文
    • [誤]
      SELECT 日付, TRUNC(入金額 /80.0) AS 入金ドル,
      TRUNC(出金額 /80.0) AS 出金ドル
       FROM 家計簿
    • [正]
      SELECT 日付, TRUNC(入金額 /80.0, 0) AS 入金ドル,
        TRUNC(出金額 /80.0, 0) AS 出金ドル
       FROM 家計簿
    • 【 第10刷にて修正 】
  • 169ページ 問題5-2の解答のソース上から1-4行
    • [誤]
      WHEN 'fr' THEN ' フランス'
      WHEN 'vn' THEN ' ベトナム' END
      WHEN 'fr' THEN ' フランス'
      WHEN 'vn' THEN ' ベトナム' END
      (※3−4行目はトル)
    • [正]
      WHEN 'fr' THEN ' フランス'
      WHEN 'vn' THEN ' ベトナム' END
    • 【 第5刷にて修正 】
  • 198ページ 問題6-1 設問1
    • [誤]
      全都市について、1年間の年間降水量と、最高気温、最低気温の年間平均
    • [正]
      日本全体としての年間降水量と、年間の最高気温・最低気温の平均
  • 202ページ 問題6-2の3の回答
    • [誤]
      CASE 事由区分 WHEN '1' WHEN 'メンテナンス'
      WHEN '2' WHEN 'リリース作業'
      WHEN '3' WHEN '障害対応'
      WHEN '9' WHEN 'その他'
    • [正]
      CASE 事由区分 WHEN '1' THEN 'メンテナンス'
      WHEN '2' THEN 'リリース作業'
      WHEN '3' THEN '障害対応'
      WHEN '9' THEN 'その他'
    • 【 第5刷にて修正 】
  • 220ページ リスト7-10
    • [誤]
      費用がNULLなら
    • [正]
      費目がNULLなら
    • 【 第5刷にて修正 】
  • 220ページ 本文1-2行目
    • [誤]
      リスト7-8のSQL文を、上記それぞれの方法で対策したものが次のリスト7-9とリスト7-10です。
    • [正]
      上記それぞれの方法を使って、副問い合わせの結果からNULLを除外した例が次のリスト7-9とリスト7-10です。
    • 【 第6刷にて修正 】
  • 227ページ できるようになったことの吹き出し 4つ目(ページ上から3つ目)
    • [誤]
      今年の給料で去年よりも高い額があれば知りたい…。
    • [正]
      今月の給料で先月までよりも高い額があれば知りたい…。
  • 231ページ 練習問題7-2 SQL文3 6行目
    • [誤]
      GROUP BY 車種コード) SUB
    • [正]
      GROUP BY 車種コード) AS SUB
  • 258ページ 小見出し「8.3.3 左外部結合」の本文1行目
    • [誤]
      浅香さんの言うとおり、
    • [正]
      朝香さんの言うとおり、
    • 【 第6刷にて修正 】
  • 271ページ 練習8-2の解答 5、1行目
    • [誤]
      SELECT S1.社員番号 AS 社員番号, S1.名前,
    • [正]
      SELECT S1.社員番号 AS 社員番号, S1.名前 AS 名前,
  • 271ページ 練習8-2の解答 4、1行目
    • [誤]
      SELECT 支店ID, K.名前 AS 支店名, S.名前 AS 支店長名,
    • [正]
      SELECT 支店ID AS 支店コード, K.名前 AS 支店名, S.名前 AS 支店長名,
  • 322ページ 図10-5内、中央上のSQL文、1行目
    • [誤]
      UPDATE 家計簿
    • [正]
      UPDATE 費目
  • 353ページ リスト11-12「PostgreSQLにおけるシーケンスの作成と取得」内
    • [誤]
      SELECT SEQUENCE 費目シーケンス;
    • [正]
      CREATE SEQUENCE 費目シーケンス;
    • 【 第7刷にて修正 】
  • 386ページ 図12-12、上側(多対多)の「入出金行為」内の属性
    • [誤]
      利用者名ID(FK)
    • [正]
      利用者名(FK)
  • 392ページ 本文下から3-5行目
    • [誤]
      ※備考参照
    • [正]
    • 備考:

      [誤]
      別の見方をすると、「1つの日付や内容の隣で、同じ費目ID、費目名、金額の値が繰り返し登場している」ともいえます。

      [正]
      別の見方をすると、「1つの日付や内容に対して、複数の費目ID、費目名、金額が繰り返し登場している」ともいえます。

  • 400ページ 図12-22 図中左上端のかこみ文字
    • [誤]
      最初の状態(第1正規形)
    • [正]
      最初の状態(第2正規形)
    • 【 第9刷にて修正 】
  • 405ページ 小見出し「12.7.1 家計管理データベースを使おう」の本文、2段落目冒頭
    • [誤]
      湊くんと浅香さんの2人は、
    • [正]
      湊くんと朝香さんの2人は、
    • 【 第6刷にて修正 】
  • 414ページ ページ中程、<口座テーブル>内、「残高」列の「備考」欄
    • [誤]
      (空欄)
    • [正]
      0以上とする
  • 414ページ ページ下方、<廃止口座テーブル>内、「解約時残高」列の「備考」欄
    • [誤]
      (空欄)
    • [正]
      0以上とする
  • 425ページ 1行目(問58の2行目)の後半
    • [誤]
      ただし、WHERE句でALL演算
    • [正]
      ただし、ALL演算
    • 【 第3刷にて修正 】
  • 432ページ ページ上方、問56の問題文1行目
    • [誤]
      パーティーの誰よりも高いMPを持つ
    • [正]
      パーティー内で最も高いMPを持つ
    • 【 第3刷にて修正 】
  • 433ページ 問題69の最後の行
    • [誤]
      ……後続イベント番号 ・後続イベント番号
    • [正]
      ……後続イベント番号 ・後続イベント名称
    • 【 第4刷にて修正 】
  • 434ページ 解答編 題材Aの【22】
    • [誤]
      select * from 口座 where 口座番号 like '2%' and 名義 like 'エ__ %コ';
    • [正]
      SELECT * FROM 口座 WHERE 口座番号 LIKE '2______' OR 名義 LIKE ' エ__ % コ';
    • 備考:

      ※「and」から「OR」の修正は3刷で対応。英字は10刷まで小文字。

  • 435ページ 解答編 題材Aの【33】
    • [誤]
      SELECT 口座番号, 名義, '○' AS 口座区分 FROM 口座 UNION SELECT 口座番号, 名義, '×' AS 口座区分 FROM 廃止口座
    • [正]
      SELECT 口座番号, 名義, '○' AS 口座区分 FROM 口座 UNION SELECT 口座番号, 名義, '×' AS 口座区分 FROM 廃止口座 ORDER BY 名義
      ※最後にORDER BY句を追加
  • 435ページ 解答編 題材Aの【34】
    • [誤]
      SELECT 口座番号, 残高 / 1000 AS 千円単位の残高 FROM 口座 WHERE 残高 > 1000000
    • [正]
      SELECT 口座番号, 残高 / 1000 AS 千円単位の残高 FROM 口座 WHERE 残高 >= 1000000
    • 【 第9刷にて修正 】
  • 435ページ 解答編 題材Aの【44】
    • [誤]
      SELECT 口座番号, 残高, TRUNC(残高 * 0.0002) AS 利息 FROM 口座 ORDER BY 残高 DESC
    • [正]
      SELECT 口座番号, 残高, TRUNC(残高 * 0.0002, 0) AS 利息 FROM 口座 ORDER BY 残高 DESC
    • 【 第10刷にて修正 】
  • 435ページ 解答編 題材Aの【45】
    • [誤]
      SELECT 口座番号, 残高, CASE WHEN 残高 < 500000 THEN TRUNC(残高 * 0.0001) WHEN 残高 >= 500000 AND 残高 < 2000000 THEN TRUNC(残高 * 0.0002) WHEN 残高 >= 2000000 THEN TRUNC(残高 * 0.0003) END AS 残高別利息 FROM 口座 ORDER BY 残高別利息 DESC, 口座番号
    • [正]
      SELECT 口座番号, 残高, CASE WHEN 残高 < 500000 THEN TRUNC(残高 * 0.0001, 0) WHEN 残高 >= 500000 AND 残高 < 2000000 THEN TRUNC(残高 * 0.0002, 0) WHEN 残高 >= 2000000 THEN TRUNC(残高 * 0.0003, 0) END AS 残高別利息 FROM 口座 ORDER BY 残高別利息 DESC, 口座番号
    • 【 第10刷にて修正 】
  • 436ページ 解答編 題材Aの【59】
    • [誤]
      UPDATE 口座 SET 残高 = 残高 + (SELECT SUM( 入金額) - SUM( 出金額) FROM 取引 WHERE 口座番号 = '0351333' AND 日付 = '2013-01-11'), 更新日 = '2013-01-11' WHERE 口座番号 = '0351333'
    • [正]
      UPDATE 口座 SET 残高 = 残高 + (SELECT COALESCE(SUM( 入金額) - SUM( 出金額), 0) FROM 取引 WHERE 口座番号 = '0351333' AND 日付 = '2013-01-11'), 更新日 = '2013-01-11' WHERE 口座番号 = ‘0351333’
  • 437ページ 解答編 題材Aの【63】
    • [誤]
      SELECT A. 日付, B. 最大入金額, B. 最大出金額 FROM (SELECT 日付, SUM( 入金額) AS 入金額合計, SUM( 出金額) AS 出金額合計 FROM 取引 WHERE 口座番号 = '3104451' GROUP BY 日付 HAVING SUM( 入金額) > 0 AND SUM( 出金額) > 0) AS A, (SELECT MAX( 入金額) AS 最大入金額, MAX( 出金額) AS 最大出金額 FROM 取引 WHERE 口座番号 = '3104451') AS B
    • [正]
      SELECT A. 日付, (SELECT MAX( 入金額) FROM 取引 WHERE 口座番号 = '3104451') AS 最大入金額, (SELECT MAX(出金額) FROM 取引 WHERE 口座番号 = '3104451') AS 最大出金額 FROM (SELECT 日付 FROM 取引 WHERE 口座番号 = '3104451' GROUP BY 日付 HAVING SUM(入金額) > 0 AND SUM(出金額) > 0) AS A
  • 437ページ 解答編 題材Aの【72】
    • [誤]
      最終行「AND (T.入金額 >= 1000000 OR T.出金額 >= 1000000)」に続けて1文追加
    • [正]
      AND (T.入金額 >= 1000000 OR T.出金額 >= 1000000) AND T.日付 >= '2013-01-01'
    • 【 第7刷にて修正 】
  • 438ページ 解答編 題材Aの【75】の4行目
    • [誤]
      /* 集計関数と結合を用いた場合 */ SELECT DISTINCT K1. 名義, K1. 口座番号, K1. 種別,
    • [正]
      /* 集計関数と結合を用いた場合 */ SELECT K1. 名義, K1. 口座番号, K1. 種別,
      (※「DISTINCT」をトル)
  • 438ページ 解答編 題材Aの【73】
    • [誤]
      /* 口座テーブルを副問い合わせにした場合 */ SELECT K. 口座番号, K. 名義, K. 残高, T. 日付, T. 取引事由ID, T. 入金額, T. 出金額 FROM 取引 AS T JOIN (SELECT 口座番号, 名義, 残高 FROM 口座 WHERE 残高 >= 5000000) AS K ON T. 口座番号 = K. 口座番号 WHERE T. 入金額 >= 1000000 OR T. 出金額 >= 1000000
      /* 取引テーブルを副問い合わせにした場合 */ SELECT K. 口座番号, K. 名義, K. 残高, T. 日付, T. 取引事由ID, T. 入金額, T. 出金額 FROM 口座 AS K JOIN (SELECT 口座番号, 日付, 取引事由ID, 入金額, 出金額 FROM 取引 WHERE 入金額 >= 1000000 OR 出金額 >= 1000000) AS T ON K. 口座番号 = T. 口座番号 WHERE K. 残高 >= 5000000
    • [正]
      /* 口座テーブルを副問い合わせにした場合 */ SELECT K. 口座番号, K. 名義, K. 残高, T. 日付, T. 取引事由ID, T. 入金額, T. 出金額 FROM 取引 AS T JOIN (SELECT 口座番号, 名義, 残高 FROM 口座 WHERE 残高 >= 5000000) AS K ON T. 口座番号 = K. 口座番号 WHERE (T. 入金額 >= 1000000 OR T. 出金額 >= 1000000) AND T. 日付 >= '2013-01-01'
      /* 取引テーブルを副問い合わせにした場合 */ SELECT K. 口座番号, K. 名義, K. 残高, T. 日付, T. 取引事由ID, T. 入金額, T. 出金額 FROM 口座 AS K JOIN (SELECT 口座番号, 日付, 取引事由ID, 入金額, 出金額 FROM 取引 WHERE (入金額 >= 1000000 OR 出金額 >= 1000000) AND 日付 >= '2013-01-01') AS T ON K. 口座番号 = T. 口座番号 WHERE K.残高 >= 5000000
  • 439ページ 解答編 題材Bの【24】
    • [誤]
      商品テーブルの主キーは「商品コード」 注文テーブルの主キーは「注文番号」
    • [正]
      商品テーブルの主キーは「商品コード」 注文テーブルの主キーは「注文日・注文番号・注文枝番」
  • 441ページ 解答編 題材Bの【59】
    • [誤]
      SELECT A.数量合計 AS 割引による販売数, TRUNC(A.割引料合計 / A.数量合計) AS 平均割引額 FROM (SELECT SUM(数量) AS 数量合計, SUM(クーポン割引料) AS 割引料合計 FROM 注文 WHERE 商品コード = 'W0746' AND クーポン割引料 IS NOT NULL) AS A
    • [正]
      SELECT A.数量合計 AS 割引による販売数, TRUNC(A.割引料合計 / A.数量合計, 0) AS 平均割引額 FROM (SELECT SUM(数量) AS 数量合計, SUM(クーポン割引料) AS 割引料合計 FROM 注文 WHERE 商品コード = 'W0746' AND クーポン割引料 IS NOT NULL) AS A
    • 【 第10刷にて修正 】
  • 444ページ 解答編 題材Cの【40】
    • [誤]
      SELECT TRUNC(777 * 0.7) AS 支払った金額
    • [正]
      SELECT TRUNC(777 * 0.7, 0) AS 支払った金額
    • 【 第10刷にて修正 】
  • 445ページ 解答編 題材Cの【63】 1行目
    • [誤]
      SELECT M. イベント番号, M. イベント名称, E. クリア結果 FROM
    • [正]
      SELECT M. イベント番号, M. イベント名称, E. クリア区分 FROM
  • 445ページ 解答編 題材Cの【64】 1-2行目
    • [誤]
      SELECT M. イベント番号, M. イベント名称, COALESCE(E. クリア結果, ' 未クリア')
      AS クリア結果 FROM イベント M LEFT JOIN 経験イベント E ON M. イベント番号 =
    • [正]
      SELECT M. イベント番号, M. イベント名称, COALESCE(E. クリア区分, ' 未クリア')
      AS クリア区分 FROM イベント M LEFT JOIN 経験イベント E ON M. イベント番号 =
  • 445ページ 解答編 題材Cの【58】
    • [誤]
      SELECT COUNT(*) AS 未着手イベントの数 FROM (SELECT イベント番号 FROM イベント EXCEPT SELECT イベント番号 FROM 経験イベント)
    • [正]
      SELECT COUNT(*) AS 未着手イベントの数 FROM (SELECT イベント番号 FROM イベント EXCEPT SELECT イベント番号 FROM 経験イベント) AS SUB
      ※最後に「AS SUB」を付ける
  • 445ページ 解答編 題材Cの【53】1行目
    • [誤]
      NUMBER
    • [正]
      NUMERIC
    • 【 第3刷にて修正 】
  • 466ページ ページ中程「DB2 Express-C」のURL
    • [誤]
      http://www-06.ibm.com/software/jp/data/db2/express-c/
    • [正]
      http://www.ibm.com/software/products/ja/db2expressc
    • 【 第3刷にて修正 】
  • 483ページ 索引見出し「A」内、右側1行目
    • [誤]
      ALL演算子…………88
    • [正]
      ALL演算子…………88、216
    • 備考:

      誤記ではありませんが、より理解しやすくするための改良となります。

    • 【 第9刷にて修正 】
  • 483ページ 索引見出し「A」内、右側4行目
    • [誤]
      ANY演算子…………88
    • [正]
      ANY演算子…………88、216
    • 備考:

      誤記ではありませんが、より理解しやすくするための改良となります。

    • 【 第9刷にて修正 】
  • 484ページ 索引見出し「G」内
    • [誤]
      GPOUP BY 句
    • [正]
      GROUP BY 句
    • 【 第7刷にて修正 】

お問い合わせ

書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。

お問い合わせフォーム