2024-05-08

anond:20240508074736

https://anond.hatelabo.jp/20240507125309

はい

ではなく、SQLは処理じゃなく、定義であることを理解するのが大切。

何の定義かと言えば、リレーショナルデータモデルへの演算定義なんだよ。この演算には、関係代数という演算を使う。

なぜ定義だと認識する必要があるかという、Selectは出力でも何でもなく、射影という演算の一部なんだよ。

"+3" とかと一緒

 

で、関係代数演算順位にもちろん意味がある。最初に"射影"して"選択"かけたら全く別になる。

SQLは、この演算順位を、SelectやWhereの中で状況によって意味が変わる。という出鱈目なカバーで逃げた。Order byで悩んだろ。

さらに言えば、苦肉の策でWhereのパチモンはどうしても2回必要でHavingを作ったのよ

 

本来で言えば、この演算は、選択-結合-射影-結合といくらでも出来る。

なのにSQL普通演算で言えば

「足し算は頭に一回書いてください。複数使う時はかっこつけて下さい。ちなみに、掛算を一緒に使うと足し算の意味が変わり場合によってはエラーです」みたいな安直構造定義しちゃってるの。

 

リレーショナルモデルへの演算としてだダサダサで、リレーショナルモデル演算の複雑さではなくSQLという表現の都合で人類の頭に負荷かけ続けてる。

出力が頭にあるのは便利(間違い)。英語から(間違い)。って言われると何言ってるんだーって、ちょい昔のまともなデータベースエンジニアなら普通にキレてた案件

記事への反応 -
  • https://b.hatena.ne.jp/entry/s/www.docswell.com/s/hoxo-m_inc/Z4Q8NL-2024-05-06-203800 まともにコンピューターサイエンスやってSQL使ってれば 「わかるー射影はステップの最後なのに、selectに名前変更とか拡...

    • https://anond.hatelabo.jp/20240507125309 はい。 ではなく、SQLは処理じゃなく、定義であることを理解するのが大切。 何の定義かと言えば、リレーショナルデータモデルへの演算定義なんだよ。こ...

    • 「わかるー射影はステップの最後なのに、selectに名前変更とか拡張とか全部乗せて先に書くのキモいよねー」 これ書いてる人誰もいなかったけど

    • 確かに書くときはselect句を最初に書きにくいことはよくある。 でもそれだけのことでで、いったん空白にしておいてfrom以降を書く程度の手間でカバーできてる。(その点ではそのツール...

    • わかるー射影はステップの最後なのに、selectに名前変更とか拡張とか全部乗せて先に書くのキモいよねー

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん