Movatterモバイル変換


[0]ホーム

URL:


Gマイナー志向

とくに意味はありません

この広告は、90日以上更新していないブログに表示しています。

SQL50本ノックをSQLite3 Fiddleで試す

Software Design「データベース速攻入門」に「SQL50本ノック」が掲載されました - LIVESENSE ENGINEER BLOG

最近では、postgres-wasmなど、WebブラウザでDBを動かせるようになってきており、もう少しすれば、WebAssemblyを使って、ブラウザですぐにノックを始められるようになるかもしれません。もしも、また何年か後に記事を更新する機会があれば、試してみたいですね。

Web上からすぐに試せるpostgres-wasmPagilaのデータを持っていくことが現時点で出来なさそうだったものの、SQLite3 WebAssemblySQLiteのデータを持っていけました。SQL50本ノックを気軽に試せそうです。

手順1 sakila-sqlite3をダウンロード

まずgithubからsakila-sqlite3をダウンロードします。github.com直リンクはこちらです。sakila_master.db がダウンロードできればok。

手順2 SQLite3 Fiddleでsakila-sqlite3をロード

SQLite3 Fiddleにアクセスします。画面下のLoad DB... で先ほどダウンロードしたsakila_master.db を選択して読み込みます。

手順3 細かい設定変更を行う(オプション)

画面下のOptionは以下がオススメです。

  • Auto-scroll output は off
  • Auto-clear output は on

手順4 はじめよう

あとは書籍を見ながらSQL50本ノックにチャレンジ!gihyo.jp

SQLiteでの注意事項

  • SQLiteのデフォルト設定ではSELECTした結果にカラム名が表示されません。.headers on を設定すればカラム名を表示することができます。
  • SQLiteではデフォルトだと列揃えがされません。列を揃えたい方は.mode column を設定しましょう。
  • SQLite3 Fiddleではレコード数が多いと表示にかなり時間がかかります。ノック01でいきなり待たされます。Auto-scroll output をoffにするとやや早いです
  • 書籍ではPostgreSQLのため最後に出力された行数が表示されてますが、SQLiteの場合は行数が表示されません。必要に応じてSELECT COUNT(*) FROM ... で行数を確認してください
  • 元データの差異が理由と思いますが、paymentテーブルのpayment_id の値が異なるようですので適宜読み替えてください
  • 書籍ではNULLのデータが空欄になっていますが、SQLite FiddleではNULL と表示されます
  • rentalテーブルのreturn_date などTIMESTAMPの表示形式が書籍と異なるので適宜読み替えてください
  • SQLitePostgreSQLでROUND関数の仕様が異なるため適宜書き換えが必要です。CAST関数も必要になるでしょう
  • CONCATの代わりに||演算子が使えます
  • information_schemaはないので代わりに.schema を駆使しましょう
  • SQLite正規表現REGEXPが使用できます
  • SQLite浮動小数点の計算は誤差が発生する可能性があります(ノック28)
  • TIMESTAMPから日付を取り出すのはCASTではなくDATE関数が使えます
  • 月別はEXTRACTではなくstrftime関数が使えます
  • payment_p2022_XXテーブルは存在しないので適宜作成するか読み替えましょう
検索

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp