SQL
「動的SQL」とは、入力値に従ってプログラムにより柔軟にSQL文を生成することを指します。条件が外から与えられる場合に便利です。 例えば、以下のようなユーザーマスターテーブルがあるとします。 create table user_master(user_id CHAR(4) NOT NULL,user_…
SQL文の条件指定で"where 1 = 1"を指定した場合、この条件は必ず真になり、全てのカラムが条件を満たすようになります。これはSQLインジェクションで用いられることで有名ですが、プログラムでSQL文を生成する時に"where 1 = 1"を利用すると便利なことがあり…
当たり前のことなのですが、テーブル結合の際には、結合に必要なキーはテーブル間で同一の値を用いて、結び付けができるようにする必要があります。プログラムでキーとなる値を順次生成する場合、テーブルへのinsertの際にテーブル毎に別々の値を生成してし…
タイトルの通りです。SQLでテーブル結合する際にありがちなミスの一つだと思うので、情報展開します。 ---------------------- 例えば、以下のようなテーブルがあるとします。 ・社員マスタテーブルcreate table employee_master(company_id CHAR(3) NOT NUL…
既存データを使用してテストをする場合、特定の項目(社員番号や電話番号等、ソートキーになり得る項目)の順番にテストすることは少ないので、特定の項目でorder byするだけではテーブルのレコードをテスト順通りに並び替えられないことが多いです。 そこで…
タイトルの通りですが、実務でちょっとうっかりしていたのでメモです。 ---------------------- 例えば、・ユーザがログインした日時を管理するテーブルと、ユーザ名の履歴テーブルがある・ユーザがログインした時、ユーザ名が存在しない場合がある・ユーザ…
今回は、select文の結果を結合する文法の紹介です。結果を結合するためには、集合演算子のUNION(重複排除したい場合はUNION ALL)を用います。実務では複数のselect文の結果を1回のSQL文発行で取得したいことが結構あるので、知っておくと便利です。情報処理…
今回は副問合せと相関副問合せの紹介です。副問合せは試験だけでなく実務でも頻出です。相関副問合せについては、副問合せでも同じ検索結果を出すことが可能なので実務では忘れがちかもしれませんが、試験には出題されますし、性能面を考慮すると相関副問合…
今回は重複排除(distinct句)と集計(group by)の紹介です。どちらも挙動が似ているのでまとめて紹介します。実務で使うだけでなく、どちらも試験頻出です。 【機能説明】・重複排除 select文の結果について、重複を排除することができる。 ・集計 指定したカ…
作業ミスを防ぐためのちょっとしたテクニックです。参考書にはあまり載っていない暗黙知的なテクニックで、運が良ければ先輩から教えてもらえるのですが、逆に言うと運が悪いと教えてもらえないかもしれないので、文章に起こします。 特にオートコミット(co…
SELECT文で取得した結果に対して、CASE式を使用することで条件判定が可能です。条件判定を行うことで、SQL文の出力結果を変えることができます。プログラムのIF文の判定をSQL文の中で行っているようなイメージであり、プログラムを作るまでもない作業で使用…
SELECT文で取得した結果に対して、演算子を使うことで文字列結合や計算が可能です。これを使うことで、プログラムで実装していたロジックをSQL文に組み込むことが可能になりますし、副問い合わせで使用すれば「抽出→抽出結果をプログラムで加工→加工した結果…
今回はSQL文のテーブル結合について、例を出して簡単にまとめます。 情報処理技術者試験で出題されるのもありますが、内部結合と左外部結合は実務でも頻出です。プログラムを作る時に必要になるだけでなく、テストデータを確認する時に使用することもありま…
今回の記事では、実務ではなかなか見ることがないが情報処理技術者試験では出る可能性がある制約関連の文法を紹介したいと思います。 実務で良く見る制約としては、一意でなければならずNULL値も許可しない主キー制約(PRIMARY KEY制約)、値が一意でなければ…
目次 https://1drv.ms/b/s!AivF3bzWXOzuhG1Xk5hscKYqkLkM -------------------------------今回は、SQLの外部キー(参照制約)について書きます。外部キーはPG・SEなら知っておくべき基礎的な文法だと思うのですが、実務だと使わない現場ではとことん使わな…