ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

SQL

MySQL (InnoDB) とトランザクション分離レベル・ロック

(注記) 去年書いて下書き状態になってた記事をそのまま公開した。 MySQL 8.0 公開前に書いた内容なので MySQL 5.7 について言及しているが、多分 MySQL 8.0 でも基本的には変わらない気がする。 背景・目的 DB 上に指定の ID の行が存在していれば UPDATE し…

PostgreSQL と H2 Database の両方で使える SEQUENCE 値生成方法 (MySQL の AUTO_INCREMENT 的なやつ)

SQL DB に新しい行を挿入したときに自動的に ID 値を生成して欲しいことはままある。 このような処理をしてくれるテーブル定義についての話。 MySQL だと AUTO_INCREMENT を使いがち MySQL を使ってる場合は AUTO_INCREMENT で済ませちゃうことが多い (H2 Da…

Groovy で気軽に SQL を投げるスクリプトを書く

Groovy を使って簡単に SQL を投げるスクリプトを書く方法を知ったので書き残しておきます。 この記事のスクリプトは Groovy 2.1.7 で試しました。 Groovy SQL Groovy には標準の SQL サポートがあるっぽいです。 groovy.sql.Sql クラス!! 次のドキュメント…

MySQL では GROUP BY 句を使用した場合でも集約されていない列を結果に含めることができる

表題どおり。普通、SQL で GROUP BY 句を使用して SELECT する場合、結果に含めることができる列は GROUP BY 句に含まれる列か集約関数 (aggregate functions) を適用した列のみです。 しかし、MySQL の場合はそうではなく、GROUP BY 句にも含まれていないし…