• ベストアンサー

長文のSQL

仕事でSQL文を使うことがあります。 簡単なSQLなら理解できるのですが、1つのSQL文が数百行に及ぶ長文となるとまるで理解できません。 こういうのはどういう勉強をすればわかるようになるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.1

まず、基本的なSQLの構文を押さえることが大切です。 SELECT, INSERT, UPDATE, DELETE の構文は、すぐに書ける事が望ましいと言えます。あと、外部結合、副問い合わせなどについても理解しておく必要があります。 上の、基本的な構文さえ理解していれば、長いSQLでも問題ありません。長いSQLでも、「区切り」という物があります。 インデントなどをきちんと入れて、SQLの区切りをはっきりさせることで、意外と簡単に読めるようになります。 長いSQLを読むためのポイントは下の2つです。 (1) SQLの構文を理解しているか。 (2) 長いSQLを、処理の区切りごとに分けられるか。 他に、長いSQL文というのは、最適化されていない無駄な処理が含まれたSQLという可能性も持っています。パフォーマンス悪化の原因にもなります。 「長いSQLを、いかに高速に処理できるSQLに変更できるか」といった勉強も大切になります。(例えば、有名な物では、NOTを使用するとインデックスが使用されず、テーブルスキャンされてパフォーマンスが劇的に悪くなる…とか)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLをバッチで実行

    掲題の件で少し教えていただきたいことがあります。 バッチファイルでSQLPLUSを起動し、 @XXXXXXXXX.SQL >> XXX.log(バッチのログ)と 実行するのですが、このSQL文がインサート文や アップデート文など通常のSQL文だと バッチでのリダイレクションの結果に XX行作成されました。とかXX行更新されましたとか 出力されると思うのですが、 実行するSQL文の中でさらに、 @XXXXXXXXX.SQL と記述していると どのようにログファイルに出力されますか? XX行作成されました。とかXX行更新されましたとか が出るとうれしいのですが… わかりにくい質問かもしれませんがお願いいたします。

  • sqlの副問合せについて

    初級シスアドの勉強をしている者ですが、SQLの副問合せがさっぱり理解できません。副問合せとは、どのように抽出する文なのでしょうか?解る方、お手数かけますが教えていただければ幸いです。

  • SQLを使うには

    初歩的質問ですが仕事でsqlを使うことになり勉強しています。sqlを勉強するためのソフト、sqlを記述するためのソフトを教えてください。 よろしくお願いします。

  • こんなSQL文

    Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A   B | C ――――――――   2 | 10   2 | 1   1 | 10   1 | 1   1 | 11   1 | 2   1 | 1   3 | 10   2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。   B | C     B | C ――――――――― ―――――――――   1 | 10    2 | 10   1 | 1     2 | 1   1 | 11    2 | 3   1 | 2   1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。

  • WEBサーバに超長文SQL文を送信するには

    WEBサーバにクライアントマシンから1K以上の長文SQLを送信し、WEBサーバからデータベースサーバにアクセスしてSQLを実行しデータを取得したいと思います。 WEBサーバが1Kを超える長文SQLを受信することができません。 何が悪いのかわかりません。 WEBサーバがSQL文を受け、そこからDBサーバにアクセスする構造は変えたくありません。何かよい方法があれば教えてください。 お願い致します。

  • SQL(SELECT文)を教えてください

    SQL Serverを勉強中です。 以下のようなテーブルに、同一の日付に複数の名称・値のセットが存在します。 Date(日付)  Name(名称) Value(値) 20130101      a      10 20130101      b      20 20130101      c      30 20130202      a      5 20130202      b      10 20130202      c      15 このデータを、SQLのSELECT文で取得し、以下のような表を作りたいと考えています。 a b c 20130101 10 20 30 20130202 5 10 15 行が日付、列が名称になっています。 このように取得できるSQL文を教えてください。よろしくお願いします。

  • SQLでできますか?

    SQLでできますか? INSERT INTO test (A) VALUES (B)というSQLを発行したいのですが、このSQLのVALUESのBにあたる部分を正規表現的に指定して、一度のクエリで以下のような結果を得たいのです。 1.テーブルhogeのpiyoカラムの値の先頭がappleになっている行を探す。 2.(1.)で抽出した行のidの値をBとする。 例えば、以下のようにです。 ■皆様が回答してくださるSQL文(1クエリで行いたい) ???????????? ■皆様が回答してくださるSQL文と同等の意味を持つSQL群 INSERT INTO test (A) VALUES (100) INSERT INTO test (A) VALUES (101) INSERT INTO test (A) VALUES (102) ■テーブルhoge _____id_____piyo__________created 1. 100 applebanana 2009/01/02 2. 101 apple_12345 2009/01/03 3. 102 appleXXXXXX 2009/01/04 4. 103 bananananan 2009/01/05 5. 104 ringogogogo 2009/01/06 分かりにくい説明ですが、お詳しい方、どうかご回答の程を宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • ACCESSのクエリ(SQLビューについて)

    こんにちはtmgmです。 ACCESSのクエリ(SQLビューについて)について質問です。"INSERT INTO TBL SELECT * FROM TBL1"というようなINSERT文をSQLビューに書き込んで実行することはできるんですが、これが複数行になるとどうしてもエラーが出てしまいます。ちなみに実行したい同じような文体のSQL文は100行近くあります。どうすればよいでしょうか?

  • 初心者からはじめるSQL

    初めまして。 全くSQLを知らない者です。 社内で移動があり、何故か私がSEになってしまいました。 会社ではOracleとSQLのスキルが必要になり、これから勉強しなければなりません。 会社では全くトレーニングをしてくれないので自分で勉強するしかなく、初心者から学ぼうと思っています。 そもそもSQLが何なのか、簡単にしか理解できていません。 しかも、調べてみたらものすごい種類のSQLがありますが、一体何があって何を勉強すれば良いのかも分りません。 会社からは、「SQL書き方ドリル」という本を渡されただけで全く意味が分りません。 どなたか教えて下さい。 宜しくお願い致します。

  • PL/SQLを勉強する際に良い参考書があれば教えて下さい。

    お世話になります。 ある程度PL/SQLについて理解はしていると思うのですが、 あいまいな理解で終わっているところもあると思います。 そこで、参考書を購入して勉強したいのですが、 仕事でキーワード検索ができて、基礎からも勉強ができる ようなPL/SQLについての参考書はあるでしょうか。 また、上記のような参考書ではなくても、つかえる参考書 等があれば教えて下さい。

このQ&Aのポイント
  • MFC-J5820DNで紙詰りトラブルが発生し、紙を取り除いてもエラーメッセージが表示されて印刷できない問題です。
  • パソコンはWindows10で無線LAN接続されています。関連するソフト・アプリについては記載がありません。
  • 電話回線はソフトバンクAirを使用しています。
回答を見る