先輩に聞くSQLの素朴なギモン

【楽天】先輩に聞くSQLの素朴なギモン 【amazon】
【楽天】


データベース入門書は読んだけれど今ひとつピンと来ない方、なかなかコツがつかめずにマニュアルを片手に悪戦苦闘している方、そんな方々に向けて重要なQ&Aを厳選しました。一般のデータベース書籍には載っていないけれどよくつまずくところ、また載っていても見落としがちなポイントを、具体例を使ってわかりやすく説明しています。

男性と女性の「先輩」キャラクターがあり、女性の「先輩」を担当しました。(3/5執筆)


■■■ 目次 ■■■

第1章 問合せの疑問
  • 単価が1,000円以下の商品の在庫数を調べたいんですが......
  • 文字列にシングルクォーテーションを使いたいけど、
  • 途中のシングルクォーテーションで文字が切れちゃいます
  • SQL文を見やすくしようと思ってタブや改行を入れたら、
  • エラーが出るようになっちゃった
  • CHAR型の文字列が、ホストプログラムからの検索にひっかからないんです
  • 大文字と小文字が混じっているようで、検索にひっかからないんです
  • 単価が10,000円から50,000円の商品のデータだけを抽出したいんですがどうやるの?
  • FAX番号がNULL値になっている注文だけ抽出したいんですが......
  • 数値型のデータなのに「以上」でも「未満」でも検索にひっかからないものがあるんです
  • %が含まれるデータを探したいんだけど、%って書くと全部が選択されて困ります
  • 関東地方に住んでいる顧客だけを抽出したいんだけど、指定が面倒......
  • 何かいい方法ないですか?
  • グループ化した結果から特定の条件に合うものだけを抜き出したいんですが......
  • SELECT文の結果って何の順に表示されているの?
  • 数字をソートしたのに、小さい順にならないんです。おかしいなぁ......
  • 順番を指定しようと思ってORDER BY句を入れたんだけど、
  • エラーになっちゃいました
  • 問合せ結果に重複があるんだけど、
  • 重複したデータがいらないときはどうしたらいいんですか?
  • 製品番号が数字なんですが、00071のように、桁をそろえて左側を0で埋めたいです
  • 取り出した文字列を英小文字に統一したいんですが、いい関数はないですか?
  • 住所表内の都道府県名と市区町村名など、別々の列の値を結合して表示できますか?
  • COUNT関数の引数に列名を入れるのと、アスタリスクを入れるのと、
  • どんな違いがあるの?
  • MAX関数で最大値を求めたいんだけど、エラーが出ちゃいました。
  • どこがおかしいんでしょう?
  • 演算子を使った結果が予想と違うんですが......
  • 論理演算子を使って複数の条件をWHERE句に指定したんですが、
  • 期待どおりの結果にならないんです

第2章 複雑な問合せの疑問
  • 受注内容を取り出したいのに、受注表には商品番号しかないんですが......
  • 内部結合と外部結合は何が違うんですか?
  • 直積の演算って総組み合わせですよね。そんなの、どんなときに使うんですか?
  • どんなときに表の別名を使うんですか?
  • 副問合せと結合は、どう使い分ければいいですか?
  • MAX関数で最大値として抽出された行以外の列の情報を、
  • グループ化せずに求めたいんですが......
  • 副問合せと相関副問い合わせってどこが違うんですか?
  • 副問合せからの結果を元に処理したいんですが、返される行数がわからなくて......
  • 集計結果のトップ3を求めたいんですが、SQL文を教えてください
  • 登録日の中で、最新日となっている行を求めたいんですけれど、
  • どうしたらいいでしょう?
  • 列の中で2番目に大きな値を求めるにはどうしたらいいんですか?
  • 新規商品の商品コードをつけるのに、空き番を調べて利用したいんですが、
  • SQL文を教えてください
  • 2つの違った条件の問合せ結果をまとめて出力したいんだけど、
  • どうすればいいでしょう?
  • 2つの問合せ結果に共通しているものだけを求めたいんだけど、
  • どうすればいいでしょう?
  • 一方の問合せ結果にはあって、
  • もう一方の問合せ結果にはないものを求めたいんだけど......
  • 顧客名簿に登録された誕生日から年齢を求めたいんですけれど、
  • SQL文を教えてください

第3章 データ操作の疑問
  • いったん表に保存したデータは、どうやって更新するんですか?
  • データを削除するときには何に気をつければいいですか?
  • 間違ってデータを全行削除してしまいました!どうやって取り戻せばいいでしょう?
  • 親の表のデータが削除されたら子の表のデータも削除されるようにしたいんですが......
  • ビューに対する操作には、どんな制限がありますか?
  • 日本語版と英語版があるアプリで、
  • ID番号がそれぞれ0と1で始まるようにしたいんですが......
  • 請求額を計算して請求表に追加したいんですが、エラーになる人がいるんですよ
  • 作った表にテスト用データを入れたいんですけれど、簡単な方法はありますか?
  • 表の中身を一気に削除したいんですが、
  • 条件なしのDELETE文を使えばいいんですよね
  • データ操作のときにも副問合せは使えますか?
  • SELECT文での検索結果を別の表に追加したいんですが......

第4章 表作成の疑問
  • 表を作ろうとしたら、「表名が不正です」っていわれました!
  • 表のデータは除いて、表のデータ構造だけをコピーしたいんですが......
  • 所属部門を収める表名を「Shozoku」から「Bumon」に変更したいんですが......
  • データ型のサイズを小さくしようとしたらエラーになるんですが......
  • データ型ってたくさんあるので、どれにしたらいいか迷っちゃいます。
  • 選ぶコツはありますか?
  • 失敗したなぁ。もうデータも入っているのに、列を追加しなきゃいけなくなりました
  • 1つの列に入った7桁の郵便番号を上3桁と下4桁の2つの列に分けたいんですが......
  • 表や列に設定できる制約には、どんなものがありますか?
  • 2つの列を使わないとデータが一意に決定しないんですが、
  • 主キーはどうしたらいいですか?
  • 主キーってなくてもいいですか?
  • 社員表に登録できる部門を、所属部門表にあるものに制限したいんですが、
  • どうすればいいですか?
  • 他表の列を参照するように外部キーを追加しようと思うんですが、
  • うまくいかなくて......
  • いったん設定した制約って削除できないんですか?
  • 表にどのように制約を設定したか忘れてしまいました。
  • 何とかわかる方法はありませんか?
  • どうもおかしいと思ったら、同じ番号の行が他にもあったんです。おかしいなぁ......
  • 「男=M」か「女=F」かのどちらかだけのつもりだったんだけど、
  • 空白とか変な値が入っちゃった
  • NOT NULL制約をつけておいたのに、何も入っていないデータがあるんです
  • 列にデフォルト値を設定したいんですが......

第5章 データベースの疑問
  • RDBMSにはどんな製品がありますか? 有名なのを教えてください
  • データベースは普通のアプリケーションのデータファイルとは違うんですか?
  • ファイル共有型とクライアントサーバー型ではどんな違いがありますか?
  • オブジェクト指向データベースってSQLを使わずに
  • どうやってデータにアクセスしているんでしょうか?
  • オプティマイザって何をしているんですか?
  • アクセスパスって意識する必要ないんですよね
  • 問合せ木って何ですか?
  • 設定したユーザーでデータベースに接続できないんですが......
  • 試しに表でも作ってみようと思ったんですけど、アクセス拒否されてるみたいです
  • この表、初歩的ではずかしいからここにいるみんなだけの秘密にしておきたいです
  • 先輩の作った表のアクセス権をもらったはずなのに、まだアクセスできません
  • 権限を取り消そうとしたらエラーになるんですが......
  • 権限を与えるときに、いつもにみんなのユーザーIDを全部書くのって面倒だなぁ......
  • 付与したロールの権限は、どうやって変更すればいいですか?
  • ビューってどんなことに役立つんですか?
  • 営業1課で売上を参照するためのビューから、
  • 他の課のデータが追加できちゃうんですが......
  • 一時表を利用したときのメリットって何ですか?
  • 複数の人が同時にデータを修正しようとしたら、どうなるの?
  • 共有ロックと排他ロックの違いは何ですか?
  • ロック待ちのままシステムが動かないんですが......
  • ロックってRDBMSにまかせておけばいいんですよね
  • なぜ楽観的制御だと処理性能が上がるんですか?
  • トランザクションの原子性とか一貫性って何ですか?
  • トリガーを使ったら、処理時間が安定しないんです
  • TPモニタって何をしているんですか?
  • 暗黙的なコミットって何ですか?
  • 2相コミットってどんな順序で実行されるんですか?
  • インデックスって、いつ作成すればいいんでしょう......
  • 検索速度を上げようと思ってインデックスを設定したら、
  • 更新処理が遅くなっちゃいました
  • インデックスを設定しているのに、表全体が走査されてしまうんですが......
  • どんなときにビットマップインデックスを使えばいいですか?
  • どんなときにインデックスをクラスタ化すると効果的ですか?

第6章 システム開発の疑問
  • SQL文が、Oracleでは動いていたのに、SQL Serverでは動かなくなってしまいました
  • ER図が実際の業務に合っていないと指摘されたのですが......
  • 正規化なんてしなくても、データは保存できると思うんですが......
  • Webサイトでデータベースを利用するにはどうしたらいいんですか?
  • WebDBにもいろいろな組み合わせがあって、悩んでます。お勧めありますか?
  • SELECT文ですべてのデータを取得しておいて、
  • ホストプログラムで必要なデータだけ選択してもいいですか?
  • PHPでもデータベースの種類に依存しない統一的なAPIってないんですか?
  • Perlでデータベースにアクセスするにはどうすればいいんですか?
  • データマイニングとかデータウェアハウスって何ですか?
  • OLAPって、どんな処理なんですか?
  • いよいよプログラミングすることになりました。
  • プログラムからSQLを呼ぶにはどうしたらいいんですか?
  • 私はJavaでプログラミングするんですけど、ODBCではだめなんですか?
  • JavaでSQLを呼ぶにはSQLJもいいと聞きました。
  • どんなときにSQLJを使うんですか?
  • C言語のプログラム内で問合せを実行したいんですが......
  • ユーザーが入力する受注番号を元に問合せを実行したいんですが......
  • ストアドプロシジャを使ったときのメリットって何ですか?
  • SQLのカーソルって何ですか?
  • XML文書をデータベースに保存したいんだけど、どうしたらいいですか?
  • 分散型でアプリケーションを実装するときには、どんな点に注意すればいいですか?
  • サーバーの故障が不安です。障害対策ってどんなことをすればいいんですか?
  • データベースのセキュリティって、
  • 表にアクセス権をきちんと設定しておけばいいんですよね
  • SQL Slammerのようなワームに感染しないためには
  • どんなセキュリティ対策が必要ですか?

付録 SQLリファレンス

お知らせ