バックアップ用にテーブルをコピーしたい
create table {バックアップ用テーブル} as select * from {元のテーブル};
同じテーブルに一部のカラムの値だけ変更してデータをコピーしたい
insert into テーブルA (カラム1, カラム2, カラム3, カラム4) select カラム1, 'hoge', カラム3, カラム4 from テーブルA where {コピー元のデータを抽出する条件};
CASE
null判定
CASE WHEN {null判定したいカラム} IS NULL THEN {nullの場合の結果} ELSE {nullでない場合の結果} END
構文の違いによる処理速度は変わらないらしいです。
/* 検索形式:こっちだと複数条件を組み合わせられます。注意: CASEとWHENの間にカラム書いちゃダメ */
CASE WHEN {条件式} THEN {条件式がtrueになった時の結果} [WHEN ...] ELSE {どの条件式に当てはまらなかった時の結果} END
/* 単純形式:値の一致だけが条件であればこちらがカンタンです。 */
CASE {条件となるカラム} WHEN {値} THEN {カラム値が値だった時の結果} [WHEN ...] ELSE {カラム値がどの値でもない時の結果} END
Sample
/* 同じ内容を2つの形式で書いてみる */
CASE WHEN col = 1 THEN 'hoge' WHEN col = 2 THEN 'fuga' ELSE 'pon' END;
CASE col WHEN 1 THEN 'hoge' WHEN 2 THEN 'fuga' ELSE 'pon' END;
/* こういうのは単純形式では書けない */
CASE WHEN col IN (1,2,3) THEN 'hoge' WHEN col IN (4,5,6) THEN 'fuga' ELSE 'pon' END;
CASE WHEN col1 <> 1 AND col2 = 'a' THEN 'hoge' WHEN col1 = 1 AND col2 = 'b' THEN 'fuga' ELSE 'pon' END;
with
で同じselect文をまとめたい
join
がわからなくなる
/* 完全外部結合 */
select * from {テーブルA} a full outer join {テーブルB} b on a.列A = b.列B [where {条件式}];
group by
した最大値のレコードがほしい
-- ぱたーん1. 自分と最大値をselectした自分をinner joinする
SELECT * FROM table a INNER JOIN (SELECT id, MAX(col) AS col FROM table GROUP BY id) AS b ON a.id = b.id AND a.col = b.col;
-- ぱたーん2. 最大値をselectして条件にする
SELECT * FROM table a where a.col = (SELECT MAX(col) FROM table b WHERE a.id = b.id GROUP BY id);
-- ぱたーん3. 自分と自分をleft joinする(速い)
SELECT * FROM table a LEFT JOIN table b ON a.id = b.id AND a.col < b.col WHERE b.col IS NULL;
順序
書く順序
SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY
評価順序
FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY > TOP(LIMIT)
DB情報
Oracle
PostgreSQL
MySQL
MyBatis
- MyBatis – MyBatis 3 | 動的 SQL
- MyBatis – MyBatis 3 | Mapper XML ファイル
- 聞いたことはあるけどよく知らないMyBatisにもうちょっと近づいてみる - ponsuke_tarou’s blog
- MyBatisでエラーになって困った事例集 - Qiita
- resultTypeに書くプリミティブ型のエイリアス(「_」を忘れるとめでたくラッパー型になる)
エイリアス | Java タイプ |
---|---|
_byte | byte |
_long | long |
_short | short |
_int / _integer | int |
_double | double |
_float | float |
_boolean | boolean |
ストアドプロシージャって何?
(Windows)A5:SQL Mk-2
やりたいこと | ショートカット |
---|---|
コメントアウト(コメントアウトを解除) | Ctrl + K (Ctrl + Shift + K) |
実行計画を表示 | Ctrl + E |
- A5:SQL Mk-2のサイト
- 便利ツール A5:SQL Mk-2の便利なショートカットをまとめてみた - 思考停止するな
- WindowsのDBツール「A5:SQL Mk-2」5つの便利機能 - Qiita
設定をファイルに出力しておく方法
readme.txt(v2.13.2)
■ポータブルモード
通常、A5:SQL Mk-2はレジストリ及び、%APPDATA%\a5m2(x86)(または %APPDATA%\a5m2(x64))
配下に設定や一時ファイルを保存しますが、あらかじめ、A5M2.exeと同じフォルダに
"Portable" フォルダを作成しておくことで全ての設定および一時ファイル・SQLログ
ファイルを "Portable" フォルダに配置するようになる「ポータブルモード」で動作
させることができます。
これにより、USBメモリなどに配置してA5:SQL Mk-2を持ち運び、各PCで設定を共有
することができるようになります。
ポータブルモードは以下の特徴を備えます。
・レジストリに書き込みを行わない
・"Portable" フォルダ以外に一時ファイルを作成しない
・設定や一時ファイル・SQLログファイルはすべてAES(256bit)で暗号化される
・起動パスワードを設定することができる
・ファイルの関連付けは行えない
ポータブルモードは上述の通り、設定や一時ファイル・SQLログファイルをすべて
AES(キー長:256bit)で暗号化します。このため、起動パスワードを設定すれば、万一
A5:SQL Mk-2 の入ったUSBメモリ等を紛失しても、DBの設定情報や一時保存されたSQL・
ER図・スクリプト、SQLの実行を記録したログファイルが流出する可能性を最小限に
することができます。
もちろん、USBメモリ等に入れなくとも、レジストリに書き込みを行わない目的で
ポータブルモードを利用することもできます。