私の考えでは、データベース スキルには、開発者、DBA、アーキテクトの 3 つの「トラック」があります。開発の観点からは、開発に集中し、Architect を理解し、途中で必要なだけ DBA の知識を習得します。
開発者として (私の考えでは) 重要なことは、SQL を本当に優れた標準にすることです。私が開発者を探している場合のインタビュアーとして、データベースを設計できるかどうかは気にしません。基本的な CRUD コマンドについて知っていると仮定すると、次のことについて知っていますか?
ストアド プロシージャ (使用方法だけでなく、いつ、どのような理由で)
ビュー (マテリアライズド ビューを含む)
トリガー (挿入、更新、削除、方法と理由)
カーソル (特にパフォーマンスへの影響)
参照整合性
トランザクション
インデックス
デフォルト、制約、および追加テーブルへのアイデンティティ
group by と have
関数の複雑な使用 特に:
- 日付と時刻の操作
- 文字列の操作
- null の処理
SQL のみを使用してデータベースから必要なデータを取得できる必要があります。手続き型コードを使用して、何らかの方法でデータを操作または解析する必要はありません (選択することもできますが、そうしなかったのではなく選択することになります)。 SQLでそれを行う方法を知っています)。
開発者として私が注目したいのは、Joe Celko の SQL for Smarties です。SQL で実行できるとは考えもしなかったようなことを実行できる SQL がたくさんあります。
このことを学ぶための最良の方法の 1 つは、退屈そうに見えますが、レポート (経営情報) を書くことです。私は非常に多くの人がレポートを書くのが面倒だと不満を漏らし、それを本当に、本当にひどいやり方でやっているのを見てきました (そして、彼らが試みなかったという理由だけではありません)。レポートは純粋な SQL に近い傾向があるため、手元にあるツールについてよく理解する必要があり、複雑なレポートでは、SQL を知っている人とそうでない人が明らかになります。また、人々はあまり長く待ちたくない傾向があるため、パフォーマンスも重要です。
現在のデータベースを見て、誰かが実際に知りたがっているかもしれない本当に厄介なことをたくさん考え出してください。マーケティング、トレンド、最も人気のあるものと最も人気のないものを考えてみてください。次に、それらの束を 1 つのクエリに結合してみます。
パフォーマンスに関しては、クエリオプティマイザーがどのように機能するか、いつインデックスを使用するか、いつテーブルスキャンを行うか、インデックスがいつ役に立ち、いつ邪魔になるかを決定する方法についても調べたいと思います。
優れた開発者は、優れたクエリを作成するだけでなく、すばやく保守可能なクエリを作成します。これを実際に理解するには、理想的には数百万行を含む 12 個 (またはそれ以上) のテーブルを持つデータベースをいじる必要があります。それは、かかとを引きずっても問題ないと思っていたクエリが表示されるようになるときです。
他の人がかなりうまくカバーしている建築家/デザイナーのもの。この件に関して私が言いたいのは、設計する必要があるすべてのデータベースに対して、そのデータベース用に作成する必要があるクエリが何百もあるということだけです。スキルを向上させているときは、作業の比例的な内訳を考慮し、クエリが本当にゼロになっていることを確認することをお勧めします。
リンクに関しては、プラットフォームに依存します。これらはすべて、プラットフォーム固有のものになる傾向があります。しかし、それがグーグルの目的です。
私はあなたが何を望んでいるかを完全に疑っていませんが、SQLを知っていると思っている多くの人が本当に知らないので知っておく価値があります...