1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visual Studio, SQL ServerでSQL練習問題やってみた

Last updated at Posted at 2021-09-22

以前からSQLの勉強をしたいなぁと思っていたので、【SQL】『SQL未経験 → 3ヶ月でデータサイエンス100本ノック全問制覇』までのロードマップ (初心者向け)を読んで、SQL練習問題 一覧まとめを解いてみました。

環境

  • Visual Studio 2019
  • SQL Server(Microsoft SQL Server Data Tools)

SQL練習問題 一覧まとめではMySQL前提のようですので、DDL等をSQL Serverに合わせて変更しています。もしもSQL Serverで練習問題を解いてみたい方はこのDDLを使うのがいいかもしれません。

SQL一式

解答内容とデータ準備に必要なSQLはGitHubに公開しています。

補足

  • 見つけた重複データは削除したため、Webページの解答と異なる場合があります
  • 解答のSQLはDBMSの違いにより模範解答と差がある場合があります

練習問題を解いてできるようになったこと

  • SELECT文はリファレンスを参照しなくても書けるようになりました。一方で、INSERT、UPDATE、DELETEの練習問題はないため、これらは別途訓練が必要です
  • 副産物ではありますが、MySQLとSQL ServerのSQLの違いを知ることができました。例えば以下のようなことです
    • MySQLではTIMESTAMPDIFF()を使って生年月日から一発で年齢を求められるが、SQL ServerではDATEDIFF()DATEADD()とCASEを組み合わせる必要がある
    • SQL Serverでは、副問い合わせの結果として複数カラムを受け取ったとき、単純に比較ができない。うまく説明できないのですが、複数の列で in 句を使いたいを読むとわかりやすいと思います
    • SQL Serverでは、SELECT句でASを使い定めた名前をGROUP BYに使えない(ORDER BYには使える)。これはSELECTよりもGROUP BYの方が先に処理されるからのようです。ORDER BY句で別名が使えてGROUP BY句では別名が使えない理由が参考になりました
    • 先頭x件のデータを取得したいとき、MySQLではLIMITを使うが、SQL ServerではTOPを使う

今後

次はデータサイエンス100本ノックに挑戦予定です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?