アカウント名:
パスワード:
SQLはクソ言語だし、今さら互換性を維持して色々するのは悪手だとは思う。まぁみんな使えるから価値はあるかな。が、現代風にクエリ言語を再設計するならどうすればいいだろうか。
データベース側の処理を考えるとJsonやらXMLやらで命令文が記述できた方が処理しやすいだろうがさすがにそれは人間側が困る。各言語側でJavaのStreamやC#のLinq的な何かを実装するとして問い合わせは機械処理しやすい言語ってのもありかもな(現在もだけど名前を微妙に変えたりせずAPIは統一してほしい)。あんまり高度で表現性が高いとキャッシュやら高速化やらで困るのは目に見えてるのも難点。
とりあえずいろんなデータで扱えるクエリ言語ってのは便利かもしれないな。良い普及したのがあればJavaScriptで標準で使えるようになりそうで便利な感じ。XMLならXPathあたりが…近いようで全然違うな。
伺いたいのですが、SQLってどの辺がクソ言語ですかね?
いや、基本のSQL構文に各DBが好き勝手に色々やっててごちゃごちゃしてるのはありますが、データの取り扱いにおいて、シンプルな実装だと思ってるので。
まあ、もう少し記号等でシンプルに表記できたりしてもいい気もしますが、自分も大分慣らされちゃったってことなのかな。
とりあえず語順。fromを先にしてくれれば…。
あとプログラム方面に振れるけど、一つ前のデータを使って計算したいとか度々あるので簡単に使用できる構文なり関数なり欲しい。サブクエリ作って行番号発行すればできるけど面倒。
語順は、「普通の英語の構文」っぽいんですよね。Select [columns] from [Table]とUpdate [Table] set はたしかに昔よく間違えたかも。で、UpdateとInsertの文法も、まあ違う。
英語だと考えれば、やりたいことが一番前に来るのはナチュラルだと思うんですよね。で、やりたいことの対象が目的語として次にくる。
どうしても語順に馴染めない場合、配列やら構造体やらで事前にデータセット作って、SQL文は手で書かないような工夫をしたり、なんてのもいいかもです。(なんかこんな事言うとクソ言語を認めるみたいになってますが)
「一つ前のデータ」のイメージがはっきり湧きませんが、DBって、データの順序とか気にして(保証されて)格納されてないイメージですけどね。(そういう開発したことないだけかな・・・)
前後の行と連携させた処理の場合、AWKっぽい発想になっちゃいますね、自分は。
並び順が保証されないのはあくまでデータベースの話なので、並び順を指定したクエリならその並び方を利用して何か出来てもいい。日付順に並べたときの累計とかデータ変更されたときの強調表示(用のフラグ)とか。プログラム側で行えばいいのですけど、世の中にはデータを(SQLで)問い合わせて結果を表示するだけのアプリケーションというのがある。
語順については、最近のシステムではインテリセンスが効くので問い合わせるターゲットを先に指定した方が便利。GUIタイプのシステムも、先にターゲットを指定してから列を指定するし。言語的には自然かもしれないけれど、開発とか分析とかには向かないよね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
SQLねぇ (スコア:0)
SQLはクソ言語だし、今さら互換性を維持して色々するのは悪手だとは思う。
まぁみんな使えるから価値はあるかな。
が、現代風にクエリ言語を再設計するならどうすればいいだろうか。
データベース側の処理を考えるとJsonやらXMLやらで命令文が記述できた方が処理しやすいだろうがさすがにそれは人間側が困る。
各言語側でJavaのStreamやC#のLinq的な何かを実装するとして問い合わせは機械処理しやすい言語ってのもありかもな(現在もだけど名前を微妙に変えたりせずAPIは統一してほしい)。
あんまり高度で表現性が高いとキャッシュやら高速化やらで困るのは目に見えてるのも難点。
とりあえずいろんなデータで扱えるクエリ言語ってのは便利かもしれないな。
良い普及したのがあればJavaScriptで標準で使えるようになりそうで便利な感じ。
XMLならXPathあたりが…近いようで全然違うな。
Re: (スコア:2)
伺いたいのですが、SQLってどの辺がクソ言語ですかね?
いや、基本のSQL構文に各DBが好き勝手に色々やっててごちゃごちゃしてるのはありますが、
データの取り扱いにおいて、シンプルな実装だと思ってるので。
まあ、もう少し記号等でシンプルに表記できたりしてもいい気もしますが、自分も大分慣らされちゃったってことなのかな。
Re: (スコア:0)
とりあえず語順。fromを先にしてくれれば…。
あとプログラム方面に振れるけど、一つ前のデータを使って計算したいとか度々あるので簡単に使用できる構文なり関数なり欲しい。
サブクエリ作って行番号発行すればできるけど面倒。
Re: (スコア:4, 参考になる)
語順は、「普通の英語の構文」っぽいんですよね。
Select [columns] from [Table]とUpdate [Table] set はたしかに昔よく間違えたかも。
で、UpdateとInsertの文法も、まあ違う。
英語だと考えれば、やりたいことが一番前に来るのはナチュラルだと思うんですよね。
で、やりたいことの対象が目的語として次にくる。
どうしても語順に馴染めない場合、配列やら構造体やらで事前にデータセット作って、SQL文は手で書かないような工夫をしたり、なんてのもいいかもです。
(なんかこんな事言うとクソ言語を認めるみたいになってますが)
「一つ前のデータ」のイメージがはっきり湧きませんが、DBって、データの順序とか気にして(保証されて)格納されてないイメージですけどね。(そういう開発したことないだけかな・・・)
前後の行と連携させた処理の場合、AWKっぽい発想になっちゃいますね、自分は。
Re:SQLねぇ (スコア:0)
並び順が保証されないのはあくまでデータベースの話なので、並び順を指定したクエリならその並び方を利用して何か出来てもいい。
日付順に並べたときの累計とかデータ変更されたときの強調表示(用のフラグ)とか。
プログラム側で行えばいいのですけど、世の中にはデータを(SQLで)問い合わせて結果を表示するだけのアプリケーションというのがある。
語順については、最近のシステムではインテリセンスが効くので問い合わせるターゲットを先に指定した方が便利。
GUIタイプのシステムも、先にターゲットを指定してから列を指定するし。
言語的には自然かもしれないけれど、開発とか分析とかには向かないよね。