【SQLを丁寧に理解する】ROWNUM と ORDER BY ~PART2:SQLの実行順序~
こんにちは、EightyEightRiceです。
今日の記事は、【SQLを丁寧に理解する】ROWNUM と ORDER BY ~PART2:SQLの実行順序~ です。
データベースを扱い場合に、よくハマってしまう項目について、丁寧に説明していきます。
ざっと読み飛ばすだけでも、
「へぇーそうなんだ」
と、思っていただけるような構成を心がけています。
今回は
ROWNUM と ORDER BY ~PART2:SQLの実行順序~
です。
こんな話を聞いた事はありませんか?
「ROWNUMとORDER BY を一緒に使ってはいけない」
結論は、「ROWNUMとORDER BYは、一緒に使って良い場合と悪い場合がある」です。
あるSQLの結果に対して、
ORDER BY でソートして、WHERE句で「ROWNUM = 1」のような使い方
は、かなり危険です。
しっかりと理解する為に、以下の2つのポイントに分けて解説していきます。
・ROWNUMとは
・SQLの実行順序
前回(PART1)では、ROWNUMについて解説しました。
今回はSQLの実行順序と、なぜ
”「ROWNUM = 1」のような使い方は、かなり危険”
なのか解説します。
実行順序について、今回は特にSELECT文について考えます。
基本的な句として、まず、
SELECT、FROM、WHEREがあります。つぎにオプション的な句として、
JOIN、GROUP BY 、ORDER BY 、HAVING などがあります。
これらの句は実行される順序が決まっています。
(あるSQLはSELECTから実行、またあるSQLはFROM句から実行とはなりません。)
SELECT文の句は以下の順序で実行されます。
1. FROM
2. JOIN
3. WHERE
4. GROUP BY
5. HAVING
6. SELECT
7. ORDER BY
※今回の記事に影響のない句(ONやLIMIT、DISTINCTなど)は省略しています
この実行順序をもとに以下のSELECT文の動作を考えてみます。
SELECT
社員コード
, 生年月日
, ROWNUM
FRON
社員表
WHERE
ROWNUM = 1
ORDER BY
生年月日
生年月日の昇順に並べて、一番若い社員をSELECTしようとしています。
ただ、これが危険なSQLです。
なぜでしょうか。
ROWNUMは、FROMとWHEREから抽出された行に対して1から重複しない連番を付番します。
WHERE句にROWNUM = 1 とすると、結果的に1行目の行が抽出されます。
一見正しい結果が得られそうですが、ここで注意したいのは、ORDER BY の実行順序が最後になっている点です。
サンプルのSELECT文のように、
WHERE
ROWNUM = 1
ORDER BY
生年月日
とすると、1行抽出した後に、生年月日でソートになってしまいます。
WHERE句で絞られたデータを取り出す順にROWNUMが付番されるますが、
取り出す順序はデータベースエンジンに依存するので、どの行から抽出されるかはわかりません。
1番若い社員を抽出するには不適切なSQLの使い方と言えます。
今回解説したポイント
ORDER BY でソートして、WHERE句で「ROWNUM = 1」の注意点
「単純に条件を満たすデータを1件抽出する場合」
➡ OK
「ある列を指定して並べ替えたものから最小(最大)のデータを抽出する場合」
➡ NG
以上、解説でした。
/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
SQLについて質問があれば随時募集しています。
ご遠慮なくお問い合わせください.
/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
※終了※ 知らなきゃ損!!【西東京市】PayPay「最大25パーセント戻ってくるキャンペーン」飲食店
こんにちは、EightyEightRiceです。
今日の記事は、個人的なメモです。
PayPayの「最大25パーセント戻ってくるキャンペーン」
が自宅近郊の西東京市で7月1日から実施されています。
最大25パーセント還元という事で、「たまにはいいもの食べよう」と考える方も多いと思います。
ただ、PayPayのアプリも西東京市のHPも一括で飲食店を調べるには、
やや使いづらかった(もしくは自分が使い方も知らなかった?)ので、
自分で対象店舗を抽出して見ました。
せっかく抽出したので、みなさんも参考にしてみてください。
※記載した店舗がPayPay加盟店でなくなっている等がありますので、あくまで参考としてご利用ください。
詳細は、西東京市のHP、またはPayPayアプリでご確認お願いします。
「最大25パーセント戻ってくるキャンペーン」対象飲食店
* 町名の略記について以下の通り記載しています。
富士:富士町
* カテゴリ名の略記について以下の通り記載しています。
飲食:飲食/飲食店・喫茶店
居酒屋:飲食/居酒屋・パブ・バー
デリ:飲食/デリバリー・ファストフード
Windows10 HomeとProどっちを買えばいいの?
こんにちは、EightyEightRiceです。
今日の記事は、【Windows10 HomeとProどっちを買えばいいの?】についてです。
新しいPCを購入する際にWindowsのエディションには、HomeとProがあります。
Proの方が価格は高いです。出せない値段でもないけど、
正直何が違うのかわからない...。
「一体どこが違うの?」
という方の為に、私個人として、おすすめを紹介します。
ずばり「Home」にしましょう
以下の2つが当てはまる場合は「Home」で良いでしょう。
・リモートデスクを利用しない
・ドメインに参加しない
「リモートデスクって何?」「ドメインに参加??」という方はHomeでOKです!
基本的に家族内で個人で利用する場合は、
リモートデスクトップやドメインを利用する事はないです。
私はプログラマですが、少なくとも自宅PCでこれらの2つの機能は利用していません。
(そもそもHomeエディションしか持っていませんし、困った事もありません)
結論
私個人のおすすめです。
プライベートで使う場合はHomeエディションで問題はありません。
ProとHomeの違いは基本的には使える機能の違いです。
もしどうしてもProでしか利用できない機能があれば、その機能を実現するソフトがあったりします。
最悪でもHomeからProにアップグレードもできます。
Homeを買い、もし困ったらProを買うで良いでしょう。
以上、Windows10 HomeとProの解説でした。
記事一覧
Internet Explorerサポート終了の何が問題なの?
こんにちは、EightyEightRiceです。
今日の記事は、【Internet Explorerサポート終了】についてです。
Windowsで長く標準で利用されてきたブラウザー、「Internet Explorer」(以下IE)が、
2022年6月15日をもって廃止される事が決まりました。
プログラマやSEはこれから対応に追われる事になりますが、
「一体なにが問題なの?」
という方の為に、問題をざっくりと解説します。
「サポートが終了」とは
IEはインターネットを通じてWEBサイト見たり、ファイルをダウンロードしたりと様々な事ができます。
とても便利な反面、ブラウザの隙につけこんで、情報を抜き取ったり、悪質なサイトに誘導したりする人もいます。
IEのブラウザの隙は、そのまま放置されるわけではなく、隙が発見されるたびに塞がれています。
(WindowsのシャットダウンでWindowsアップデートが動く事がありますが、ここで隙を無くしています)
今回発表されたIEの廃止は、「今後、IEの隙を補修する事をやめます」という宣言です。
問題点
一般の方には特に問題はありません。
サポート(隙を埋める作業)が終了するだけなので、実はIE自体は消えません。使い続ける事もできます。
ただし、上で説明したようにセキュリティの問題があるので、別のブラウザ(GoogleChromeやEdgeなど)を利用すると良いでしょう。
プログラマやSEにとってはかなり問題です。
自分たちが作ったアプリがIEで動作する事を前提に作ってある場合です。
サポートの終了後はセキュリティ的な危険にさらされる為、
お客さんに使ってもらうわけにはいきません。
今後、サポートが切れるまでに、アプリがchromeやEdgeなどの別のブラウザでも動作するように改造し提供する必要があります。
以上、Internet Explorerサポート終了の解説でした。
記事一覧
カテゴリ一覧
ランキング
第1位
第2位
Internet Explorerサポート終了の何が問題なの?
第3位
第4位
第5位
用語集
ざっくりIT用語
物流用語
データベース・SQL
SQLを丁寧に理解する
ROWNUM と ORDER BY ~PART1:ROWNUMとは~
在庫管理システムとデータベース
【ざっくりIT用語】デジタルツイン
こんにちは、EightyEightRiceです。
今日の記事は、【ざっくり理解IT用語】です。
IT業界の用語を細かい部分は気にせず、ざっくりとした考え方を解説しています。
今回は
デジタルツイン
です。
IoTの普及やAIの進化に伴い登場した言葉で、今後、ITにおいて重要度は増しています。
IT用語の中でも特にシステムを開発する側の人間に近い用語です。
以下、解説です。
デジタルツイン
コンピュータの中(デジタル)に、現実そっくり(ツイン)の世界を作りだす事をデジタルツインと言います。
あらゆるものがネットワークでコンピュータにつながり、その情報でコンピュータの中で現実世界に近いものが再現させます。
デジタルツインで、AIを利用して事故や障害などを予測可能になったり、事故発生時対応が迅速になります。
結論
コンピュータで、現実そっくりの世界を作りだす仕組みを
デジタルツインと言います。
以上、デジタルツインの解説でした。
記事一覧
【ざっくりIT用語】フィジカルインターネット
こんにちは、EightyEightRiceです。
今日の記事は、【ざっくり理解IT用語】です。
IT業界の用語を細かい部分は気にせず、ざっくりとした考え方を解説しています。
今回は
フィジカルインターネット
です。
2010年代から登場した言葉で、今後、物流・ITにおいて重要度は増しています。
IT用語の中でも特に物流系のシステムで使い用語です。
以下、解説です。
フィジカルインターネット
物理的な物が超高速に行きかう社会のネットワークをフィジカルネットワークと言います。
インターネットでやり取りするのは、データ(パケット)ですが、
フィジカルインターネットでは、物(=フィジカル)をやり取りします。
具体的には、ネットで注文した商品や、誰かに送った荷物が、インターネットのデータのように高速に配送される事をいいます。
結論
物理的な物がインターネットのように輸配送される仕組みを
フィジカルインターネットと言います。
以上、フィジカルインターネットの解説でした。