職場で沢山仕様書を読んで沢山の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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ストアドプロシジャからストア...
-
PL/SQL exceptionを呼び出すには?
-
ストアドプロシージャからスト...
-
ストアド実行時のエラー「参照...
-
Oracle: PACKAGE BODY の分割
-
時間項目を60進数から10進数へ...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
Statement ignored というエラー
-
SQL ORDER BYにおける条件について
-
重複するIDのデータを1行にま...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
SQLで部分的にGROUP BYしたいとき
-
SQLserver算術オーバーフロ...
-
SQL*Loaderでのsysdate使用
-
PL/SQLカーソルの2重FORループ...
-
日付時刻+連番の主キーをSQLだ...
-
VBA プロシージャの名前の取得
-
全角空白のTRIMができない...
-
SQLサーバで和暦から西暦に変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ストアドプロシジャからストア...
-
時間項目を60進数から10進数へ...
-
PL/SQL exceptionを呼び出すには?
-
ストアド実行時のエラー「参照...
-
PL/SQLで連結(||)と結合(=>)の違い
-
ROW_NUMBER()を使用したデータ取得
-
パッケージ内のファンクション...
-
PL/SQL 実行中のSID
-
質問:DBMS_OUTPUTの使用方法
-
ストアドプロシージャからアナ...
-
PL/SQLに関して
-
PL/SQLのファンクションでのOUT...
-
INSERT文の書式
-
プロシージャ 引数 指定
-
ストアドプロシージャからスト...
-
ストアドプロシージャ結果のフ...
-
毎日決まった時間にSQLを実...
-
Oracle: PACKAGE BODY の分割
-
Function内に記述したdbms_outp...
-
PL/SQLについて
おすすめ情報