DB

DB Fiddle

DB

WEB上でSQLを実行できるお試しサイトの1つ。テーブルを作成、SQLを実行して結果が分かるので基本構文の勉強したいがインストールが面倒なときなどにおすすめ https://www.db-fiddle.com/ 1.左のテキストエリアにDDLとINSERT文を記述し、RUN CREATE TABLE …

OracleとSQLServerのロック2

Oracle →別トランザクションの更新中データに対して、変更前のデータを読み取ることができる。optimistic(楽観的同時実行制御) MVCCと呼ばれる同時実行性向上の仕組みのため SQL Server →デフォルトでは更新中のデータはロックがかかるためアクセスできない …

OracleとSQLServerのロック

どちらも「READ COMMITTED」がデフォルトとなっている。ただ、SQL Serverには「READ_COMMITTED_SNAPSHOT」のオプションがあり、その値によってOracleと挙動が違う。※READ COMMITTED・・・コミットされてないデータは読み取れない 「READ_COMMITTED_SNAPSHOT…

SQL文の大文字・小文字の区別

DB

SQL文ではDBエンジン、及び設定によっては大文字・小文字が区別されることはある。 コーディングの際は注意すること。 Oracle ・・・引用符で囲むと区別される SELECT * FROM "test"; SQL Server ・・・照合順序の設定によっては区別される ⇒Japanese_CS_AS…

FULL OUTER JOIN

DB

完全外部結合。2つのテーブルを結合、それぞれに一致しないレコードも抽出結果に含める。 UNIONで行ではなく、列を増やすイメージ。 例) SELECT A.HOGE_CD, A.HOGE_NAME, B.MY_CD, B.MY_NAME FROM TABLE_HOGE A FULL OUTER JOIN TABLE_MY B ON A.HOGE_CD = B…

結合アルゴリズム

DB

RDBMSでの代表的な結合アルゴリズムは以下の通り。 ・NESTED LOOP (ネステッドループ結合) 最もシンプルな結合方式。 2つのテーブルの一方を基準とし(外部表)、もう一方のテーブルを単純にループして結合する結合方式。 ・MERGE JOIN (マージ結合) 2つの…

COUNT(*)

DB

COUNT(式) → 式がNULLでない行数を戻す。 なので、式にカラムを指定した場合はそのカラムの値がNullであった場合、 そのレコードはカウントされない。 また、Nullかどうか判断するということは指定したカラムのインデックスによっても パフォーマンスが左右…

サロゲートキー

DB

連番など値に意味のないものをキーとすること。 メリット・クライアントコードはコード体系が変更されることがある ・画面遷移などで渡す値が少なくなる(特にWEBアプリケーション) デメリット・テーブル構造が冗長になる ・テーブルの関連が分かりづらい

ORDER BYを指定しないSELECT

DB

ORDER BYを指定しない場合のSELECTの結果は保証されない。 普通はRDBMSがデータを取り出した順になる。(どう取り出すかはRDBMS側の仕様に依存する) INSERTした順になることも多いが、必ずしもそうではないようなので注意。 ちなみにOracleのROWIDは論理的な…

JIS2004文字セットとDB

DB

Windows VistaよりIS2004文字セットが対応された。(XPも対応される?された?らしい) これに対応するためのDBの環境設定は以下のとおり oracle10g、oracle11g →キャラクタセットを「AL32UTF8」にしておく必要がある。 ただ、バージョンによって対応が微妙…

SQL整形ツール

sqlendia ・・・SQLの整形を行ってくれるツール。(秀丸マクロでもできるけど) 他の機能としてstring.Appendで結合したコード(VB.net,java,C#)を作ってくれるのでエンティティの作成に便利。 また、DBに接続してSQLを実行することも可能。 秀丸をカスタマイ…