Create Excel functionsBuild and share custom Excel functions

みなさまごきげんよう! 嗚呼蛙でございます! 一昨日amazonアソシエイトの審査を無事通過したことを祝って、露骨なアフィ目的記事を書いてみました。 今日はデータベースの操作を行う言語『SQL』を実践的に学習できるサイトを発見したので、それについて書いていこうと思います。 SQLってなに? ブラウザ上でSQLの学習ができるサイト 日本語でのSQL学習 SQLってなに? SQLを知らない方のためにSQLについて簡単に説明しておくと、例えばネットショップで買い物をする時にこんな感じで「会員情報」「送付先」」「購入品」を登録しますよね。 【会員情報】 【送付先】 【購入品】 すると、ブラウザから入力された情報は、SQLを使ってこんな感じでデータベースに書き込まれます。 【会員テーブル】 【送付先テーブ】 【売上テーブル】 こんな風にブラウザから送られた情報をデータベースに書き込んだり、蓄積された
GitHubのエンジニアがデータベースのスローログから見つけた、LIKE句を使ったクエリーのパフォーマンス問題につながる可能性のある文字列。問題の仕組みと、それを回避するためのスニペット。 先日、例外情報のトラッカーを見回していたら、目を引くスロークエリーログを発見しました。SELECT ... WHERE ... LIKEといったクエリーのLIKE句にたくさんのパーセントが付いているのです。この部分はユーザが入力した部分なのは明らかで、最初私はSQLインジェクションを疑いました。 [3.92 sec] SELECT ... WHERE (profiles.email LIKE '%64%68%6f%6d%65%73@%67%6d%61%69%6c.%63%6f%6d%') LIMIT 10 コードを見てみると、ここで解釈されるメタ文字(%や_や\)のチェックをまったくせずにユーザが指定し
MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。 PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
リレーショナルデータベースが話題に挙がるとき、私は何かが足りないと思わずにはいられません。データベースはあらゆるところで使われており、その種類も、小規模で便利なSQLiteからパワフルなTeradataまで様々です。しかし、それがどういう仕組みで機能しているかを説明したものとなると、その数はごくわずかではないでしょうか。例えば「リレーショナルデータベース 仕組み」などで検索してみてください。ヒット数の少なさを実感できると思います。さらにそれらの記事は短いものがほとんどです。逆に、近年流行している技術(ビッグデータ、NoSQL、JavaScriptなど)を検索した場合、それらの機能を詳しく説明した記事はたくさん見つかると思います。 リレーショナルデータベースは、もはや大学の授業や研究論文、専門書などでしか扱われないような古くて退屈な技術なのでしょうか? 私は開発者として、理解していないものを
Overview General Do Avoid Naming conventions General Tables Columns Aliasing or correlations Stored procedures Uniform suffixes Query syntax Reserved words White space Indentation Preferred formalisms Create syntax Choosing data types Specifying default values Constraints and keys Designs to avoid Appendix Reserved keyword reference Column data types SQL style guide Overview You can use this set o
"Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、本質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 本稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に
最近業務でgoogle docsやExcelで管理されたシートの内容を集計したいことがあって、基本google docsのスプレッドシートでゴニョゴニョすることがあるのですが、例えば の様なものがあって、上の例だと各ユーザのポイントの合計を集計したいなと考えた時にExcelに慣れている方だとExcelの関数が浮かんで集計できるのかと思うのですが自分だとSQL文のイメージが先に出るのでよしなにできないかなと思っていたら、Google docsだと QUERY という関数を使うことで実現できることを知ったのでメモエントリです。 上の例だと D1 のセルに以下の様な内容を記述します。 =query(A2:B9, "select A, sum(B) group by A") 1番目の引数にデータの範囲を指定し、2番目にそのデータ範囲でのクエリを記述します。 SQLを触ったことがある方ならなんとなく
Photo by Sean MacEntee こんにちは。谷口がお送りします。 ITエンジニアの方やITエンジニアを目指す方には「SQLを学習したい」という方も多くいらっしゃるかと思います。 SQLとは、リレーショナルデータベース(RDB)のデータを操作するための言語です。私たちはSQLを使うことによってRDBMS(リレーショナルデータベースマネジメントシステム)に命令を出して、必要なデータをRDBに格納したり、格納したデータを取得(表示)することができます。 SQLは、ANSI(アメリカ規格協会)やISO(国際標準化機構)が規格化しているものであり、Oracle Databaseに限らず、Microsoft SQL ServerやMySQLといったほかのRDBMSでもほぼ同じように利用できます。 中でもMySQLは、世界中で最もよく利用されているオープンソースのデータベースの一つで、高速
MySQL 5.6 リファレンスマニュアル というわけで、日本語版のマニュアルがリリースされた。これまでMySQL 5.6のリファレンスマニュアルは英語版しか無かったのだけど、公式に日本語版がリリースされる運びとなったので、是非参照して頂きたい。 かつてMySQL 5.1の日本語版マニュアルが存在したのだが、そちらは現在ウェブから参照できなくなっている。(PDF版はダウンロードできるという話も。)MySQL 5.1の日本語版マニュアルは、ぶっちゃけ翻訳があまりイケてなかったので、今後はぜひMySQL 5.6の日本語版を参照してもらいたい。ついでにもう古のバージョンは窓から投げ捨てて、この機会に是非新しいバージョンへ移行してみてはいかがだろうか。 何か問題が見つかった場合には、ぜひバグレポートをお願いします。バグレポートのカテゴリは「Japanese Documentation」を選択してく
俺は実務経験をある程度こなしたあと、RDBの知識不足を認識したクチである。改めてRDBを勉強し始めて困ったことの一つは、実行計画の読み方がよくわからないことだった。もちろん、ぐぐればNESTED LOOP JOINが何かとかは出てくるし、公式のマニュアルも参考になる。ただ、webの文献は体系だって解説があるとは限らないし、個人のブログなどは粒度がバラバラで、まとまった量の知識を得るには向いていない。マニュアルも膨大な量があるので慣れていないと目的の文書が書いてあるかどうかすら分からないし、あったとしても必要なレベルの解説があるかどうは分からない。 そこで本書の出番である。既存の書籍にもSQLとパフォーマンスを論じたものはあるにはあるのだが、それに特化した本の存在は、少なくとも俺は知らない。一冊だけ、データベースパフォーマンスアップの教科書 基本原理編 - kagamihogeの日記という極
1番目 sprintf("SELECT * FROM table WHERE id = %d", $value); $valueにどのようなデータが入っていようが、PHPの「親切な」型変換により数値に変換されます。escape()が無くても問題ありません。 "123" => 123 " 123" => 123 "123abc" => 123 "abc" => 0 " " => 0 "" => 0 null => 0 ただし、4つめ以降の例はアプリケーションとしては意図しない動作になるでしょうから、その観点では事前にバリデーションが必要です。 2番目 sprintf("SELECT * FROM table WHERE id = %s", escape($value)); 1番目の%dを%sに書き換えescape()を付加した例です。$valueはリテラルではなくSQL構文の一部として展開さ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く