![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
職場で沢山仕様書を読んで沢山のSQL文を作成するしか方法ないのでしょうか
私の職場はプログラムの修正が多いため新規に仕様書からSQL文を
考える機会が少なく、今あるSQL文に項目を追加するというパターンが
おおいです。そのため、複雑な仕様のSQL文を経験する機会が少ないです。
しかも、仕様書を作らずメモ書きや口頭でのプログラム作成が多いため
仕様書がなかったり古かったりで既存のコードからのSQL文の勉強
が難しいです。
皆さんは新人時代どのようにSQL文をマスターしましたか?
独学方法等を教えてください
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
基本的に本で独学でした。
当時主に参考にしたのは
・標準SQLガイド(C.J.DATE アスキー)
・SQL92/99標準リファレンスブック(マーチン・グルーバー ピアソン・エデュケーション
・プログラマのためのSQL(ジョー・セルコ) SQL92・99準拠
・SQLパズル
・Oracle8i&UNIXパフォーマンスチューニング
・ORACLEハイパフォーマンスチューニングSQL編
・ORACLE9i ハイパフォーマンスチューニング―STATSPACK編(廃版)
・データベースパフォーマンスアップの教科書 基本原理編
あたりでしょうか。「SQLパズル」は「SQLでこんなことができるのか」と驚かせてくれましたが、一方で「何でも無理にSQLで処理するのは避ける」きっかけになりました。
パフォーマンス・チューニングは学ぶと奥が深いですね。OSやストレージ、ネットワークの総合的な知識が求められます。
今は開発ライセンスでOracleを自分のPCにインストールして試せますし、GUIで実行計画が見られるSQL Server の Express版もあります。
実際にSQLを結構簡単に試せるので本を読みながらSQLとその実行計画を確認したりすることをお勧めします。
No.3
- 回答日時:
私も同様の経験からSQLをマスターしました。
途中で気付いたことは「論理を組み立てる」
ということです。同業者のなかには力づくで
モノにした人もいますが、こういう人達は経験
のある所はできますが、未知の分野になると
知っている範囲からしか解決できないので、
強引な手法を採りがちです。
データベースの設計から、目的の情報を抽出
するための理論と順序を紙に書くことを進め
ます。稀に理論が破綻することがあります。
これはデータベースの設計と要求された条件に
齟齬がある場合です。
いずれにしても「論理の組み立て」は重要です。
SQLの意味は「問合せを組み立てる言語」です。
簡単なものを組み上げて複雑な解を得るのは
プログラムの基本でもあります。
No.2
- 回答日時:
SQL文は集合をあらわす言語なので、SQL文をみて集合をイメージする訓練がいいのではないでしょうか。
その集合を他にどんなSQLで現せるか、色々なパターンを考えてみたり、それらがパフォーマンス的にどう違うのかをテストしてみたり、ここにインデックスがあったら効率がよさそうだとか、テーブル構造がこうだったらもっとシンプルになるのにとか、いろんなパターンを考えられると思います。
No.1
- 回答日時:
SQLというのはすごーく簡単な構文しか無いじゃないですか?
簡単な英語さえ知ってれば覚える必要はありません。そういう風に出来てるのだから。覚えるより調べ方を知る事でしょうね。
SQLで大事なのは構文の効率を考える事。SQLの内部処理を理屈で理解しないと、恐ろしい構文を作る人が居ます。「SELECT * 」を頻繁に使うなど。SQLの命令文はプログラムの塊だという事をちゃんと知りましょう。
そもそもSQLとはデーターベースそのものを管理するデバイス一体の言語だという事。DBAの知識が無いと構文なんか書けても何も意味有りません。
ファンクションにするか、ストアドにするかトリガーにしてルールにするか。DBAとして理解してください。
それとトランザクションをどこで区切るか、ロールバックをしていいのかしないのか。全てはDBの性質、ハードのキャパに結びついているわけですから、本来は業務から入る必要があるわけで、そういう意味でIT屋よりも業務が解る人が簡単に覚えられるように出来ているという事です。
>皆さんは新人時代どのようにSQL文をマスターしましたか?
まず昔はSQL自体がIBM製品だけでありそこで覚えちゃいました。でもIBMのハードはOSにDB組み込みなので効率を考えなくてもある程度出来てしまった。
本当に理屈で知ったのはオープンなシステムから。サイベースのSQLSERVERですが、マイクロソフトにライセンスを売る前のSQLSERVERです。UNIXですね。マイクロソフトにライセンスを売ってからはPCでも動くようになり、個人でも使えるようになったので実験しやすくなります。その頃はMSも解説書をだしてましたから。とにかく今よりPCもひ弱だし、すぐDBが壊れるのでおかげでハードに負担なSQL文と言うのを理解できました。
http://www.shoeisha.com/mag/dbm/
今ならこんな雑誌で全然問題ないと思いますけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access VBAで条件を追加する(書き込む)場所 2 2022/03/23 12:05
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- SQL Server 大学でSQLの授業があるのですが全くわかりません。 表ではなく文で説明されているのですが調べても理解 6 2022/07/20 02:26
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- IT・エンジニアリング プログラマーです 未経験から一年半汎用系(.NET、C#)システムを作っていました。自社なので1から 3 2023/03/16 20:13
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ストアドプロシジャからストア...
-
ストアド実行時のエラー「参照...
-
質問:DBMS_OUTPUTの使用方法
-
PL/SQLのファンクションでのOUT...
-
PL/SQLについて
-
PL/SQL exceptionを呼び出すには?
-
時間項目を60進数から10進数へ...
-
INSERT文の書式
-
PL/SQLで連結(||)と結合(=>)の違い
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
Accessの数値から時間に変換す...
-
エクセルVBAでUserFormを起動し...
-
PL/SQLでSPOOLさせたいのですが...
-
【Excel VBA】 WorksheetやRa...
-
Statement ignored というエラー
-
全角空白のTRIMができない...
-
SQL*PLUSでの分秒までの表示の仕方
-
SQL*Plusの終了はquit?exit?
-
SQLサーバで和暦から西暦に変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ストアドプロシジャからストア...
-
時間項目を60進数から10進数へ...
-
PL/SQLで連結(||)と結合(=>)の違い
-
ストアド実行時のエラー「参照...
-
質問:DBMS_OUTPUTの使用方法
-
PL/SQL 実行中のSID
-
PL/SQL exceptionを呼び出すには?
-
INSERT文の書式
-
パッケージ内のファンクション...
-
PL/SQLのファンクションでのOUT...
-
PL/SQLの例外
-
ストアドプロシージャからアナ...
-
Oracle: PACKAGE BODY の分割
-
ROW_NUMBER()を使用したデータ取得
-
PL/SQLについて
-
ストアドプロシージャからスト...
-
ストアドプロシージャ結果のフ...
-
プロシージャ 引数 指定
-
Function内に記述したdbms_outp...
-
OracleのTEXT_IOについて
おすすめ情報