「Sql」を含む日記 RSS

はてなキーワード: Sqlとは

2024-05-08

anond:20240507213947

割とクソどうでもいい記事だった。

日本語英語で述語・目的語の並び順がちがうけど英語の順番の方が性に合ってるよね、てな具合の話。

 

最終的にコンパイルしてSQLに変換するって事は、

じゃあ検索効率も出来る事も事実上向上する可能性は全く無い。

一方で生のSQLが見えなくなるから調整もできなくなって

そうやって得るものが "ちょっと文法上の語順が変って(僕にとっては)わかりやすくなったよ" だけというのは閉口するな

anond:20240508074736

https://anond.hatelabo.jp/20240507125309

はい

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

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

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

"+3" とかと一緒

 

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

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

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

 

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

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

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

 

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

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

anond:20240507215928

別にC#LINQとか使ってるから入力が先に来るのも知っている

ただ、出力が最初に来るのが分からないって言ってるからいや、それプログラミング思考の順序と同じやんってなるわけで。

から、あのSQLが分からないって言ってるのSQL別にプログラム関数として考えるのであれば

戻り値入力){処理+条件}

で、別に何も変わらないと思うんだけど

Order byは出力じゃなくって処理に含まれると思うんだけど出力になるか?

出力順の設定は出力より前で実施されるのであればそれは処理だと思うんだけど出力になってるし。

2024-05-07

anond:20240507213947

スライドの後ろの方に出てきてるdbplyrとの比較

SQLを挙げてるのになぜその関数定義比較するのか。

dbplyrは知らないけど、こういうORMによくある

記述順の方がずっと分かりやすい。

anond:20240507215024

その記事はおおげさなこと言って

そのギャップちょっとした改善を凄い改善だって言いたいだけだと思うよ

SQLはクソ!!みたいな部分はギャップを出すための表現であって本質ではないってこと

anond:20240507214342

そう、補完機能が使いづらいからならまぁわかるんだよね

でもだったらGUIツールSQLの出力部先にある程度組み立てて支援使えばよくね?とも思うので

順序性でわからないって言われれるといや、プログラム考えるとき思考と同じ順序では?になるので

何が言いたいのかわからんになるの

anond:20240507213947

使うテーブルがどこになるとか項目名がどうなるかが、from以降書いてからじゃないと判断しにくいことが多いので

処理書くとき最初select句の内容が書きにくいってことは結構あると思う。

とはいえ、いったんselectの中身は空欄にしておいてfrom以降書いてから戻って来たらいい程度で

SQLのクソさの本質全然掴んでない記事だとは思う。

読むときは当然、出力が最初にあったほうがわかりやすいしね。

SQLを滅ぶべしを見て何も分からなくなった

https://www.docswell.com/s/hoxo-m_inc/Z4Q8NL-2024-05-06-203800#p11

出力が先に来ることが分からないって言ってるけどプログラム書くとき殆ど言語においては出力が先に来ると思うんだけどそれもわからないんだろうか

public String test(String args){

return args;

}

大抵戻り値(出力)が先で引数入力)が来て処理が来ると思うんだけど違う?

プログラムを書くときって出力の要件を元にして処理と入力が決まると思うんだけど違う?

シーケンスとか書くと確かに入力が元に来るんだけどプログラムの当初設計をするときは出力が先で出力を得るための入力と処理が決まる物だと思うんだ

入力を決めて処理と出力を考えてたら考慮漏れ発生して手戻り発生しない?

補完がやりづらいからっていうのはわかるけど、そんなんFROM句先にかけよで終わると思うので

出力が先に来ることが分からないって言ってるのがプログラム的にも普通出力が先じゃ?って頭が混乱している

SQLが糞だと思わないのは、ブクマカ馬鹿が進行しているか

https://b.hatena.ne.jp/entry/s/www.docswell.com/s/hoxo-m_inc/Z4Q8NL-2024-05-06-203800

まともにコンピューターサイエンスやってSQL使ってれば

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

一言で終わりなのよ。

 

ブクマカは、英語ですからとか言い出してる。英語からって集合演算で射影を先に書くなんてねえよw

やばいSQL使ってるのに、SQLで実現してることが分かってない。さらには俺はSQLに詳しいとかい雰囲気出しててやばい

高度な話題?なわけねえだろwiki読むだけでいいレベルなのよ。

https://ja.wikipedia.org/wiki/%E9%96%A2%E4%BF%82%E4%BB%A3%E6%95%B0_(%E9%96%A2%E4%BF%82%E3%83%A2%E3%83%87%E3%83%AB)

X検索すると似たような言及してる奴が多いし、別に高度な問題でも何でもないのである。というか基本情報範囲

 

  

こんなのがテクノロジーカテゴリでマサカリなげてる。一般カテゴリ劣化はどっちかつうと過激なんだけど、テクノロジーカテゴリは明確に馬鹿が進んでる。

日本語の唯一のテクノロジーソーシャルサービスが、SQLからずマサカリなげるってやばくね?

大丈夫日本

2024-04-27

例のSQL関係他者ソフトを悪く書いてプチ炎上したブログ記事に書いてあった著者名と一緒に検索してみたら存在を抹消されてるみたいで笑っちゃったんだよね

検索結果では「田中です」(仮名)って書いてるのに記事を開くと一切名前が書いてないの

あと「こんにちは田中です。」ってなってたところが「こんにち。」になってる記事があって更に笑っちゃった

2024-04-26

anond:20240426171640

一時期やたら騒がれてて猫も杓子もNoSQL使いたがったけど結局大半のプロジェクトSQLRDBMS回帰したな

もちろん向いてるケースはあることにはあるんだけど

anond:20240426123109

Excelできます

入力できます

英語読めますが話せません

python, php, ruby, perl, sqlができますし、AWSもわかります

でも給料は低いです

2024-04-01

anond:20240401031349

参照の透過性があればなんでも一緒だよ!

SQLダメならLINQはどう?

LINQダメならHaskellいいね❤️

もうね、SQL小学校で教えた方がいい。

pandasでもいいけど。

みんながSQLが分かれば、Microsoft Queryでパフォーマンス重視のガチSQLを書いても、後任者はみんなわかってくれる。

事務員必須スキルSQLしろ

関数型という考えを理解していれば、数式を崩したりVBA頼みにしたりすまい!

2024-03-17

もし世界GUIがなければ

事務員SQLを使いこなす世界線がやってくるだろうな

2024-03-05

anond:20240305104607

単純なのはそうだろうね。でもDB構造を利用してクエリ簡単な集計とソートをしようとするとあら不思議、途端に役立たずになる。

質問を細分化すればいいのだが、細分化するためにdbsql知識不要ですか?

他にも、いまだレガシーシステムに残っている生クエリメンテするときに、ai説明鵜呑みに出来ますか?

そもそもaiから吐き出されるdeleteやupdateの意味も分からクエリを扱うことなんてできますか?

私は怖くてできない。

SQLなんか覚える必要なかった

全部AIが書いてくれる

俺の苦労は何だったんだ

2024-03-02

エクセルマクロのお作法計算用シートという諸悪の根源について)

前置き

この日記の内容は、会社の後輩から最近エクセルマクロ勉強し始めて(キラキラ)」という話を聞いて、先輩ムーブかますために話した内容になります

とにかくこれから説明する「計算用シート」が憎くて憎くてたまらず、ちょっと引かれるほど熱弁してしまいました。

ただ、他の方がどうされているのかや、逆に「計算用シート」を愛用する方の意見も聞きたくなり、増田に書いてみました。

増田の経歴

この記事趣旨

エクセルマクロのお作法とか書きましたが、要するにエクセルマクロで「計算用シート」って色々な意味でよくないよね、という話をしたいです。

3行でまとめます

〇 エクセルシートはユーザーインターフェースインプット)か出力結果(アウトプット)のためのものとすべき

〇 データ加工をする場合には、原則配列辞書配列連想配列)に格納して加工を行い、最後の結果だけシートに出力するべき

〇 何事にも例外はある。

計算用シートとは

この記事では、エクセルシートを下記の通り分類します。

エクセルマクロにも色々あると思いますが、今回は下記を想定します。

日付や人物名などを入力し、データベースや別のエクセルファイル、別のシートから取得したデータ入力された値を基に加工し、加工後のデータをシートに出力する

この場合入力欄があり編集可能なシートがユーザーインターフェース、最終的に加工されたデータが出力されるシートが出力結果です。

(もちろん、ユーザーインターフェースの別の欄(セル)に出力する場合もあるし、その場合ユーザーインターフェース出力結果が一体のものとみなします。)

また、データ用シートは同じエクセルファイル内に基となるデータが含まれ場合を想定します。

(これ自体が非推奨で、SQLデータベースかせめてAccessを使え、という意見はありますがそれは別にして…)

ではここで定義する計算用シートとはなにかというと、文字通り計算を行うためのシートです。

例えばイメージするのはこんなマクロです。

1.元となるcsvファイルエクセルに読み出してシートに格納

2.そのデータは日付が数値型になっているので、日付(数値型)の入った列を文字列に変換した日付(文字列型)列を新たに作成

3.その列をキーとして対象となるデータを取り出すvlookup関数を各行に格納した列を新たに作成

4.その列で特定された列をさらに加工した列を新たに作成し、…

これは極端な例ですが、とにかく変数配列定義せず(あるいはエクセルセルオブジェクト変数のように扱い)、エクセルに値を入力し、それを直接加工することで目的となるデータ加工をしたり、様々な処理をします。

その舞台となるのが、計算用シートです。

なんかこんな感じの処理をしているエクセルマクロ、どこの会社でも腐るほどあるんじゃないでしょうか。

ある程度マクロに慣れた気の利く人なら、このシートはロック非表示にして、ユーザーから触れないようにするでしょう。

・・・これ、やめたほうが良くないですか?

こいつが日本生産性を落とす諸悪の根源だと思います

駄目な理由

ある程度詳しい人なら同意してくれると思いますが、このやり方でダメ理由はいっぱいあります

後で説明する配列辞書配列連想配列)と比べると格段に処理が遅いです。

わざわざエクセル操作しているから当然ですね。

ちょっと詳しい人が知っている「画面更新非表示」を駆使しても、配列を使った処理からみれば止まったハエです。

(参考)VBAで作ったマクロの高速化① 配列を使う

  • 可読性が下がる

いったんエクセルシートにデータを格納して加工しているので、コードエクセルシートを両方見る必要があり、とても読みにくいです。

変数として命名されていないのも致命的で、処理の意図が余計に分からなくなります

計算用シートを事前に用意して、別のセル関数を格納しておき、マクロ関数を使ってデータ加工をするものも見たことがあります

これは懲役刑に処したほうがいいと思います

まり知られていませんが、セルの最大文字数は32,767 文字です。

セルの最大文字数を超えると自動的に隣のセルに値が入り、シートが滅茶苦茶になります

他にもエクセルの数値を丸め自動変換の仕様とか文字列→日付の自動変換とか、いくつものバグに苦しめられます

できる人だと、いちいち最大文字数が多い場合の処理を書いたり自動変換機能を殺したりしてくれますが、そんなことに手間をかけているか日本GDPは上がらないんだと思います

他にも、データが大きくなると処理が重くなり不安定になる、計算用シートを人が触ってしまリスクがある、などいくらでも理由は上げられます

(逆に利点は、目の前でガチャガチャ動いてスーパーハッカーになった気分になれるくらいしか思いつかない・・・

じゃあどうするの

配列を使いましょう。

配列とは何ぞや、という人はググってください。

配列データを入れて、データ加工は配列変数に対して行い、一番最後の出力だけセルに値を格納する。

他のプログラミング言語なら普通にやっていることです。

個人的オススメしたいのは辞書配列連想配列)で、うまく使うとデータ管理簡単になり、処理も爆速になります

(参考)【VBA】大量データから高速で値を検索【Dictionaryを使う】

csvファイルもなまじエクセルで開けるだけに別のブックやシートで開きがちですが、これは悪魔のささやきです。

直接ファイルを読み出してLine InputやSplitで配列に格納しましょう。

エクセルとして開くやり方はコード書くのは簡単でも、実行時間に天と地ほどの差が出ますエクセル開くと処理もめちゃ不安定です。

(参考)Excel VBAでCSVオープンするときのパフォーマンス比較

いや、冒頭のマクロを書く人の気持ちも分かるつもりです。自分コードを書き始めたころは全部シート上で操作していました。

冒頭のマクロのほうが直感的なんですよね。自分が手で書くことをマクロやらせる、というマクロ本来趣旨にはあっていますし。

途中の計算過程もすべて目の前で展開されるから分かりやすいです。

ただ、それではダメなんです。。。処理は遅いし挙動不安定だし後で改修・保守する人が死にます

あと、エクセルシートやセルは当然エクセルしかないので、エクセルマクロVBAから他の言語に移れなくなります

自分エクセルマクロの里の出なので、計算用シート脱却には苦労しましたが、苦労して会得した配列辞書配列連想配列)のスキルはそのまま他の言語に活かすことができました。

配列の中身を見る方法別にある(ローカルウィンドウやDebug.printを使うなど)ので、リハビリに取り組んでほしいです。

(参考)VBA デバッグの仕方

もちろん例外もあります

計算用シートを許容できる、使うべきケースもあると思います。。

個人的には、

最後のは、なんでも自分確認しないと気が済まない上司発注で、意味不明と思いましたしたがしぶしぶやりました。)

などの場合計算用シートを使ってもよいと思います

この場合インプットエクセルシートに直接加工するのは論外なので、計算用(加工用)のシートを用意してそこで操作を行うことは必要だと思います

他にも、こういうときは「計算用シート」があったほうが良い、という状況があれば教えてもらえると嬉しいです。

最後

そもそもツッコミとして、「データ加工するならエクセルマクロを使わずpythonとかRとかもっとまともな言語使えよ」という言葉が来そうな気がします。

ただ、個人的にはエクセルマクロVBA)は大好きですし、初心者にもおすすめしたいです。

自分のような非エンジニアだと、セキュリティ関係などでPythonの開発環境とかすごく用意しにくいんですよね。

(あと、コマンドプロンプトの真っ黒な画面が怖かった)

その点エクセルマクロは、開発環境の用意はプロパティでチェック項目を一つオンにするだけだし、入門書がたくさんあるし、セル挙動を追えば視覚的にプログラム理解できるし、初心者に優しいです。

(そのやさしさが上述したとおり悪魔の罠なわけですが。)

最初計算用シートに頼ってでもエクセルマクロからプログラミングを始めて、本格的なデータ加工をし始めたあたりで計算用シートという諸悪の根源から脱却する。

さらに本格的なデータ処理を行うために、PythonやRなど別の言語習得したり、エクセルからSQLデータベースやACCESSなどに切り替えていく、というプロセスがいいのではと個人的に思います

2024-02-12

anond:20240212120947

セクキャバで時給2000ー2500円とかみたけど

都内ならSQL叩ければ普通に出る額だぞ

SQL叩ければピンサロ嬢ぐらい稼げるって聞いたんだがマジ?

ピンサロ嬢ってどんぐらい稼ぐのかわかんねえんだけど

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