SQLを理解する上で記載する各句の実行順序を理解している事はとても重要な事です。この辺の知識がおろそかになっていると複雑なSQLを書く場合や作成したSQLのパファーマンスに問題が発生した場合、他人か作成したSQLの修正などの対応に苦慮する事になるからです(はい私の事です)。逆に各句の実行順序を正しく理解していれば複雑なSQLもスラスラ書けるようになっていきます。
では今回は「SELECT文の各句の実行順番について」まとめておきます。
SELECT文で指定可能な句
SELECT文での指定順序で記載すると以下の様になります。
- SELECT句
- FROM句
- WHERE句
- GROUP BY句
- HAVING句
- ORDER BY句
SELECT文で指定可能な句の実行順序
上記の句を実際に実行される順序に並び替えると以下の様になります。
- FROM句
- WHERE句
- GROUP BY句
- HAVING句
- SELECT句
- ORDER BY句
Web系の開発していると画面表示確認する際に、「cssやjsは変更したのに画面を表示してみると反映されていない」という事を経験した方は少なくないと思います。
こういう場合はまず、F5もしくはctrl+F5を押下して画面を再表示(リロード)確認すると思いますが、そもそも「F5単独」押下と「ctrl+F5同時」押下では何が違うんだろう?という事についてメモしておきます。
F5単独押下時のリロード
- ブラウザでキャッシュされている場合、キャッシュを利用して画面を再表示します。
Ctrl+F5同時押下時のリロード
- ブラウザのキャッシュを利用せずにサーバーにある最新の情報を読み込んで画面を再表示します。
- スーパーリロードとも呼びます
- ブラウザによって、Ctrl + F5以外でもスーパーリロードは可能です。
ブラウザ別のスーパーリロード方法
<Google Chrome、Microsoft Edge>
- Ctrl + F5
- Shift + F5
- Ctrl + Shift + R
- Ctrl + 更新ボタン
- Shift + 更新ボタン
<FireFox>
- Ctrl + F5
- Ctrl + Shift + R
- Shift + 更新ボタン
<Opera>
<Safari>
ブラウザの更新ボタンとは
上記で説明している「更新ボタン」ですが、以下の様にブラウザのアドレスバー付近に表示されている以下のような赤枠内のボタンのことを「更新ボタン」と記載しております。
junitでexceptionが発生した事の確認テストはどのようにすれば良いかメモしておきます。
exceptionの発生確認は@Test内に「(expected = [確認したいExceptionクラス])」を指定する事で簡単に確認する事が出来ます。
JUnitサンプル
ちょっとdjUnitで「addReturnValue」を使用しても全く効いてない?という事象に少しハマっていたので原因についてメモしておきます。
addReturnValueが効かない原因
addReturnValueが効かない原因として上げられるのが概ね以下の3つになるかと思います。1と2については少し見なおせばすぐ発見出来そうですが、今回ハマった原因が3でした。。。
- クラス名の指定が間違っている
- メソッド名の指定が間違っている
- 指定したメソッドが複数回実行されている
「指定したメソッドが複数回実行されている」とは
では「指定したメソッドが複数回実行されている」というのはどういう事かというとについて説明します。
根本的な話として以下の2つのコードは全く同じ意味という事を理解しておく必要があります。
|
addReturnValue(UtilClass1.class, "getStr", expected1); setReturnValueAt(UtilClass1.class, "getStr", 0, expected1); |
これだけで気づく方はハッと思うかもしれませんが、ここで重要なのはaddReturnValueでは「1回目に実行」されたメソッドのみしかaddReturnValueで指定した値が返ってこないという事です。つまり「setReturnValueAt」で1回目を指定した場合と同様の動きしかしてくれないのです。
今回私がハマったのは指定したメソッドが想定した箇所よりも手前で事前に実行されていた為、想定したいたメソッドは2回目の実行になっていたために2回目の方にはaddReturnValueが効いていなかったという事象でした。
addReturnValueが効かない時の調査方法
addReturnValueをしてクラス名やメソッド名は正しいのにどうも効いていないように見える時は一度「getCallCount」でメソッドの実行回数を調査して見ると良いかもしれません。
djUnitではメソッドが呼び出されている事の確認は「assertCalled」を使用する事で確認出来ましたが、逆にメソッドを呼び出されていない事の確認では「assertNotCalled」を使用する事で確認出来ます。
Javaソース
djUnitサンプル
djUnitではassertCalledを使用する事でメソッドが呼び出された事が確認出来ます。
Javaソース
djUnitサンプル
複数回呼び出された時の確認方法
以下の様に「getCallCount」を使用する事でメソッドが何回呼び出されたかを確認する事も出来ます。
|
int countHtmlEscape = getCallCount(UtilSample1.class, "htmlEscape"); assertEquals(10, countHtmlEscape); |
「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。